for(i = 0; bitstr[i] != '\0'; i++){
    if(!(bitstr[i]=='0' || bitstr[i]=='1')){
        printf("Not a valid bitstring!");
        exit(0);
    }
    else{
        sum = sum*2+bitstr[i];
    }
}
printf("%d", sum);

例如,当我输入101时,它会打印339,而它应该打印5作为答案。我不知道我做错了什么。任何帮助都将不胜感激。

最佳答案

这是因为'1''0'是字符'1''0',而不是整数值。您需要从中减去'0'以获得数值:

sum = sum*2+(bitstr[i]-'0');

10-07 13:37