当前位置: 代码迷 >> C语言 >> 进制换算&循环&数组 求助
  详细解决方案

进制换算&循环&数组 求助

热度:525   发布时间:2008-04-03 10:10:35.0
进制换算&循环&数组 求助
《C语言程序设计》中第一章练习的一道
main(){
int x=020,y=-20;
printf("%d,%x,%o\n",x,y,y);
}

答案是16,ffec,177754。经测试,答案正确。但就是不明白为什么。
  020是八进制,换成10进制是16这倒知道,后面两个不明白,请教各位

哦还有一题,判断是否无限循环
int x=5;
while(x)
x--;
这个它说是无限循环,经测试也为无限循环,但不是x减成0就退出了吗?怎么回事?

算了干脆把数组的问题一起放进来好了。
char a[]="ABCDEF";
char b[]={'A','B','C','D','E','F'};
答案说a数组比b数组长度长,是怎么回事?不是一样要在最后\0么?

[[it] 本帖最后由 我是老刘 于 2008-4-3 10:25 编辑 [/it]]
搜索更多相关的解决方案: 进制  换算  

----------------解决方案--------------------------------------------------------
我来试试
关于第一个问题,我以前没注意到这个问题,一开始也想不明白,不过根据ffec来推断它到底是怎么回事,十六进制数ffec用二进制表示的话是A->11111111 11101100,八进制数177754用二进制数表示也是A。 而A这个二进制数是B->10000000 00010100的补码。B用十进制表示的话就是-20了。应该明白了吧。(这全是我瞎想的,呵呵)
第二题,我就不知道了,因为我运行的是有限循环的。
第三题,也只有期待达人了,呵呵,我还没搞明白
----------------解决方案--------------------------------------------------------
第一个,没看懂二楼所说的;
第二个我在后面加了个printf没显示出来,证明是无限循环啊,不知为何
----------------解决方案--------------------------------------------------------
第一题的关键就是 数据是以二进制的形式在内存中存储的,
然后就应该想-20,在内存中是怎么存储的,我的结论就是-20在内存中被存储成A->11111111 11101100。为什么是这个呢,原因就是我上边说的那些。
第二题我也是在最后用上printf("ok");不过可以打印出来,我的编译器是dev-c++,可能跟编译器有关,第一题我做的答案也跟你的不一样。
----------------解决方案--------------------------------------------------------
第一题:后两个为-20的补码表示
第二题:我的测试结果不是无限循环,你们是不是在while(x)后面多加了个分号?
第三题:不一样。b数组是按数组元素一个一个赋值的,大括号里有几个元素,b就多长。
        而a不同,C规定字符串都是以'\0'结束的,所以a语句字符串本身是含有一个'\0'的,
        只是你看不到罢了。
----------------解决方案--------------------------------------------------------
w lai  hui大下问题不知道对不对 参考

地2题  
#include <stdio.h>
void main()
{

int x=5;
while(x)
x--;
printf("%d",x);
}
经调试是正确的 输出是0 后面的输出是我帮+上去的  ,不明白你的意思 难道是 while(x)
x--; 中间有几行?

第3体 第1个字符数组 没有定义死  可以看成{a,b,c,d,e,f,0,0},里面没用都逗号隔开  第2个只能是是 那里面的元素只能是 ch[6];yinwei  里面是用逗号隔开的

不知道我的理解是不是对的 YING
----------------解决方案--------------------------------------------------------
一;补码;
二;有限循环,加个printf()后应加大括号;
三;a为字符串数组;b为字符数组;
----------------解决方案--------------------------------------------------------
饿 第3题地1个字符串 a[]={'a','b','c','d','e','f','\0'},bijiao  ba
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]yd4433[/un] 在 2008-4-3 12:08 的发言:[/bo]

w lai  hui大下问题不知道对不对 参考

地2题  
#include
void main()
{

int x=5;
while(x)
x--;
printf("%d",x);
}
经调试是正确的 输出是0 后面的输出是我帮+上去的  ,不明白你的意思 难道是 while(x)
x--; ...


感谢各位的回答,已基本弄懂了.现在就是这一个是否无限循环的问题,我又按这位兄弟的程序输一遍,还是出不来结果,证明是在无限循环中.我用的是turboc2,不知是不是因为环境不同?
----------------解决方案--------------------------------------------------------
把你的程序完整地粘贴上来看看。
注意是复制粘贴,不要手动输入。

这个跟环境没关系的。
----------------解决方案--------------------------------------------------------
  相关解决方案