c语言 进制转换
/* Note:Your choice is C IDE */
#include<stdio.h>
void main()
{ int i,a=0;
/**/char c1,c2; /**/
clrscr();
printf("Enter an 8 bit binary number :");
c2=getchar();
/**/ for(i=1;i<=7;i++) /**/
{ c1=getchar();
a=a*2+c1-'0';
}
/**/ if (c2>127) /**/ a=(-1)*a;
printf("\
%d \
",a);
getch();
}
这是c语言考试当中的一道改错题,要求输入二进制以十进制输出并有正负号,由于本人水平有限,没看明白,求高手赐教,分析下其中原理,并改掉错误的地方,谢谢了
答案:#include<stdio.h>
void main()
{
int i,a=0;
/*i用于循环控制,a用于转换后的10进制数存储*/
char c1,c2;
/*c1用于存放一位二进制字符,c2用来存最高位*/
printf("Enter an 8 bit binary number :");/*这个提示语句不太对,应该提示输入最高位是'1'还是'0',不过语法没错。*/
c2=getchar();
/*输入最高位于c2中*/
for(i=1;i<=7;i++)
{
c1=getchar();
/*从第二位开始每次读入一位,即'0'或'1'*/
a=a*2+c1-'0';
}
if (c2=='1')
/*最高位为'1'时,为负数*/
a=(-1)*a;
printf("\
%d \
",a);
getchar();
}
转换规则:1.一个二进制数是逢二进一的。也就是说高位'1'表示数值上等于其低一位的'1'的2倍。
2.读入时是字符型读入,转换时要先变成十进制的1或0(c1-'0')我怎么知道
上一个:什么c语言
下一个:C语言设计