你能帮我吗?我不明白为什么flag == 0
的条件总是正确的。抱歉,如果我发布的内容有误,但我在社区和编程界都是新手
int main(){
const int max = 24;
char binario[max];
int i,j;
double decimale;
int lung_binario;
int flag;
printf("Inserisci un numero binario: ");
gets(binario);
lung_binario = strlen(binario);
printf("Il numero binario inserito e': %s e contiene %d cifre.\n", binario, lung_binario);
decimale = 0;
flag = 0;
for(i = 0; i < lung_binario; i++){
if (binario[i] != '0' && binario[i] != '1'){
flag = 1;
}
}
if(flag == 1){
printf("Errore!!");
}
else if (flag == 0){
j = lung_binario - 1;
for(i = 0; i < lung_binario; i++) {
if (binario[i] == '1') {
decimale = decimale + pow(2, j);
}
j--;
}
}
printf("Il numero decimale e': %.0lf", decimale);
return 0;
}
答案 0 :(得分:-4)
我认为这是因为您应该假设binario
数组是二进制的;即它仅包含0和1。该代码将二进制转换为十进制,当然,如果binario
包含的数字不是0或1,则它不是有效的二进制,因此无法将其转换为十进制。