首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

哪位大哥可以帮小弟我注释一下每行代码的功能,多谢

2012-03-23 
哪位大哥可以帮我注释一下每行代码的功能,谢谢!#includestdio.hint main(){int a,sz[100]int b,c,d0,l

哪位大哥可以帮我注释一下每行代码的功能,谢谢!
#include<stdio.h>
int main()
{
int a,sz[100];
int b,c,d=0,l;
for(b=0;b<101;b++) sz[b]=0;
printf("请输入一个十进制的整数:\n");
scanf("%d",&a);
l=a;
printf("\n");
while(a)
{
c=a%2;
a=a/2;
sz[d]=c;
d++;
}
int e;
for(e=100;e>=0;e--)
{
if(sz[e]!=0) break;
}
printf("十进制数%d转换成二进制数为:",l);
int i;
for(i=e;i>=0;i--)
printf("%d",sz[i]);
printf("\n");
return 0;
}



[解决办法]
首先,楼主的程序有两个明显的数组越界:
1、初始化sz[]时应该将循环上界设为100;
2、定义位数e时应该将循环变量初始值设为99;
其次,此程序用0初始化要转换的二进制数组不恰当,万一是偶数呢?(最后一位恰好是0,就丢数据了)。建议使用非0、1的数据初始化数组;

[解决办法]

#include<stdio.h>
#define Word_len 32//定义机器字长为32
int main()
{
int l,sz[Word_len];//定义拟转换的整数和存放转换后二进制数位的数组
int a,d=Word_len-1,sign=1;//定义中间变量、数组下标变量和符号位
for(int b=0;b<Word_len;b++) sz[b]=0;//初始化数组为0
printf("请输入一个十进制的整数:\n");
scanf("%d",&a);//读入键盘输入的整数
l=a;//保留读入的数
printf("\n");
  
if(a<0)
{
a*=-1;
sign=-1;
}//以上保留符号位并取a的绝对值
while(a)//以下循环计算a转换为二进制数的数位
{
int c=a%2;
a=a/2;
sz[d]=c;
d--;
}
printf("十进制数%d转换成二进制数为:",l);
d++;//将数组元素指向首位以便输出
sz[d]*=sign;//取回符号位
while(d<Word_len)//设置循环上界
{
printf("%d",sz[d]);
d++;
}
printf("\n");
return 0;
}
[解决办法]
程序这样写精练一些

热点排行