读书人

十进制转二进制觅bug

发布时间: 2013-04-20 19:43:01 作者: rapoo

十进制转二进制,找bug
在32位处理器上,将任一整数转换为二进制形式。
要求实现函数:
void DecToBin (unsigned int iDec, char pBin[32])
输入:iDec 需要转换的十进制整数
输出:pBin 转换为二进制后的字符串,高位在左边,不足32位补0
示例
输入:123 输出:{“00000000000000000000000001111011”}

源码如下:请找出其中错误

#include <stdio.h>//convert decimal to binary
void DecToBin (unsigned int iDec, char pBin[32]);//declaration
int main(int argc, char const *argv[])
{
unsigned int iDec;
char pBin[32]={0};//zero clearing

scanf("%u",iDec);
DecToBin(iDec,pBin);
return 0;
}
//realization
void DecToBin (unsigned int iDec, char pBin[32])
{
int i=0;//i=offset

while(iDec)
{
pBin[i]=iDec%2;
iDec/=2;
i++;
}
for (i = 31; i >= 0; --i)
{
printf("%c",pBin[i] );
}
putchar('\n');
}
C
[解决办法]
两个问题:
1.scanf("%u",iDec); 改成scanf("%u",&iDec)
2.printf("%c",pBin[i] ); 改成printf("%d",pBin[i] );
[解决办法]
引用:
引用:两个问题:
1.scanf("%u",iDec); 改成scanf("%u",&iDec)
2.printf("%c",pBin[i] ); 改成printf("%d",pBin[i] );

解决了,谢谢!不知道为什么第二个不能用"%c",而要用"%d"?

因为%c是输出ASCII字符……%d是数字……0和1的ASCII码是48,49不是0,1但是pBin[i]存的是0,1

读书人网 >C语言

热点推荐