| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2950 人关注过本帖
标题:一个程序两处报错,不明白~
只看楼主 加入收藏
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
结帖率:84.21%
收藏
 问题点数:0 回复次数:13 
一个程序两处报错,不明白~
写了一段程序,输入一个十进制数字转化成二进制
程序代码:
#include <stdio.h>
int main (void)
{

 int index = 0, convertedNumber[64], numberToConvert;

 printf ("Number to be converted:");

 scanf ("%i", &numberToConvert);

 do

 {
  convertedNumber[index] = numberToConvert % 2;
  index ++;
  numberToConvert = numberToConvert / 2;

 }

 while (numberToConvert != 0);


 for (index; index >= 0; index--)

 {
   printf ("numberToConvert = ", convertedNumber [index]);

 }

 printf ("\n");

 return 0;
}

gcc编译后报错
1.第19行for (index; index >= 0; index--)warning: statement with no effect,这句话的意思应该是声明无效吧?改成for (index--; index >= 0; index--)后通过。
但是为什么初始化表达式是index--而不是index?

2.第22行printf ("numberToConvert = ", convertedNumber [index]);warning: too many arguments for format(不清楚什么意思~)改为
int Digit = convertedNumber[index];
  printf ("%i", Digit);
后通过。为什么不能直接输入数组的每一个元素?


[ 本帖最后由 ilsoviet1917 于 2010-5-21 00:21 编辑 ]
搜索更多相关主题的帖子: 数字 二进制 十进制 
2010-05-21 00:18
zhujianiu
Rank: 4
等 级:业余侠客
帖 子:126
专家分:244
注 册:2010-5-14
收藏
得分:0 
19行没错! 错误的是22行,改为printf ("numberToConvert = %i \n", convertedNumber [index]);
下次细心点!
2010-05-21 00:34
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
为什么是index--不是index?
2010-05-21 00:39
Toom
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-5-20
收藏
得分:0 
为什么是index--不是index?
因为数组时从开始的,你的index是总的个数,换成数组的下标要减1不然就越界了!
2010-05-21 09:20
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
其实就是index-1呗……
2010-05-21 13:44
sunmingchun
Rank: 4
来 自:安徽-滁州
等 级:业余侠客
帖 子:198
专家分:277
注 册:2010-4-2
收藏
得分:0 
编译没错啊   可是没结果!现在没时间了,有时间看看。闪了。
2010-05-21 21:04
xu362726904
Rank: 6Rank: 6
等 级:侠之大者
帖 子:160
专家分:471
注 册:2009-6-18
收藏
得分:0 
index--是因为在while里计数的时候多加了一次。而数组里面有效存储是从index-1开始的。输出的时候注意格式
最后是这样的#include <stdio.h>

int main (void)
{
int index = 0, convertedNumber[64], numberToConvert;
printf ("Number to be converted:");
scanf ("%d", &numberToConvert);
while (numberToConvert != 0)
{
  convertedNumber[index] = numberToConvert % 2;
    index ++;
  numberToConvert = numberToConvert / 2;
}
printf("numberToConvert= ");

for (index--; index >= 0; index--)
{
   printf (" %d", convertedNumber [index]);
}
printf ("\n");

return 0;
}
2010-05-21 22:35
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
主要是没理解index--等于index-1~
以前看过一本北大青鸟的JAVA书,用的都是index-1,所以脑子就……
2010-05-22 08:58
星星的故事
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-5-22
收藏
得分:0 
原来读贴也是一种享受,我又懂了一些。谢谢你们了。
2010-05-22 09:26
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
以下是引用ilsoviet1917在2010-5-22 08:58:05的发言:

主要是没理解index--等于index-1~
以前看过一本北大青鸟的JAVA书,用的都是index-1,所以脑子就……
好像还是不对,index - 1就无法编译通过,但是用index--就可以,这两个不一样么?
2010-05-22 11:11
快速回复:一个程序两处报错,不明白~
数据加载中...
 
   



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

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