| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1552 人关注过本帖
标题:进制换算&循环&数组 求助
只看楼主 加入收藏
我是老刘
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-4-3
收藏
 问题点数:0 回复次数:14 
进制换算&循环&数组 求助
《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]]
搜索更多相关主题的帖子: 进制 换算 
2008-04-03 10:10
xuanzilie
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2007-7-12
收藏
得分:0 
我来试试
关于第一个问题,我以前没注意到这个问题,一开始也想不明白,不过根据ffec来推断它到底是怎么回事,十六进制数ffec用二进制表示的话是A->11111111 11101100,八进制数177754用二进制数表示也是A。 而A这个二进制数是B->10000000 00010100的补码。B用十进制表示的话就是-20了。应该明白了吧。(这全是我瞎想的,呵呵)
第二题,我就不知道了,因为我运行的是有限循环的。
第三题,也只有期待达人了,呵呵,我还没搞明白
2008-04-03 11:33
我是老刘
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-4-3
收藏
得分:0 
第一个,没看懂二楼所说的;
第二个我在后面加了个printf没显示出来,证明是无限循环啊,不知为何
2008-04-03 11:43
xuanzilie
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2007-7-12
收藏
得分:0 
第一题的关键就是 数据是以二进制的形式在内存中存储的,
然后就应该想-20,在内存中是怎么存储的,我的结论就是-20在内存中被存储成A->11111111 11101100。为什么是这个呢,原因就是我上边说的那些。
第二题我也是在最后用上printf("ok");不过可以打印出来,我的编译器是dev-c++,可能跟编译器有关,第一题我做的答案也跟你的不一样。
2008-04-03 11:59
jamesbind
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-3-21
收藏
得分:0 
第一题:后两个为-20的补码表示
第二题:我的测试结果不是无限循环,你们是不是在while(x)后面多加了个分号?
第三题:不一样。b数组是按数组元素一个一个赋值的,大括号里有几个元素,b就多长。
        而a不同,C规定字符串都是以'\0'结束的,所以a语句字符串本身是含有一个'\0'的,
        只是你看不到罢了。
2008-04-03 12:02
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
收藏
得分: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

------...-.-..-...-----........-------.......----.....------....||- - !
2008-04-03 12:08
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
收藏
得分:0 
一;补码;
二;有限循环,加个printf()后应加大括号;
三;a为字符串数组;b为字符数组;

GIS
Geographic Information System
你在哪里?——》你的坐标?
2008-04-03 12:12
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
收藏
得分:0 
饿 第3题地1个字符串 a[]={'a','b','c','d','e','f','\0'},bijiao  ba

------...-.-..-...-----........-------.......----.....------....||- - !
2008-04-03 12:24
我是老刘
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-4-3
收藏
得分:0 
[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,不知是不是因为环境不同?
2008-04-03 12:34
jamesbind
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-3-21
收藏
得分:0 
把你的程序完整地粘贴上来看看。
注意是复制粘贴,不要手动输入。

这个跟环境没关系的。
2008-04-03 12:37
快速回复:进制换算&循环&数组 求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017839 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved