此程序的目的是基本转换。它旨在将基数2转换为基数10.当我执行代码时,程序终止而没有任何错误消息。
我的代码出了什么问题?
main()
{
int binary[25];
int counter_1;
int sum=0;
int counter_2=0;
printf("enter the binary digits:");
for(counter_1=0;binary[counter_1]==0 || binary[counter_1]==1;++counter_1)
{
scanf("%d",&binary[counter_1]);
}
for( ;counter_1>=0;counter_1--)
{
sum=sum+(pow(2,counter_2)*binary[counter_1]);
counter_2=counter_2+1;
}
printf("your binary digits is equivalent to %d in decimal base.",sum);
}
答案 0 :(得分:4)
在初始化阵列之前,您正在访问阵列的内容。您的程序受到不确定的行为。
for(counter_1=0;binary[counter_1]==0 || binary[counter_1]==1;++counter_1)
// ^^^ accessing uninitialized value
要读取数组中每个元素的二进制数(1或0),您可以使用:
for(counter_1=0; counter_1 < 25; ++counter_1)
{
scanf("%d", &binary[counter_1]);
if ( binary[counter_1] != 0 && binary[counter_1] != 1 )
{
break;
}
}