如果类型为整数,则求和的结果为0,为什么呢?

main(){
    int n,s=0;
    float a;
    printf("Input a integer number: ");
    scanf("%d",&n);

    while(a!=0){
        a=n%10;
        s=s+a;
        n=n/10;
    }
    printf("Sum: %d",s);
    getch();
}


对不起,我的英文,非常感谢!
您能告诉我这个英文名字是什么吗?例如:“ 12345”是一个数字,那么“ 1,2,3,4,5”的名字是什么?

最佳答案

我假设您正在计算组成一个数字的数字总和。

问题是您无法初始化a。如果碰巧获得了0的初始值,则while循环中的代码将永远不会执行。

另外,条件是错误的,您应该改为在n上进行测试。考虑如果输入101将会发生什么。您当前的代码将停止,然后到达0,并输出1而不是2

因此,如果我们解决问题:

int main() {
    int n,s=0;
    int a;
    printf("Input a integer number: ");
    scanf("%d",&n);

    while (n!=0) {
        a=n%10;
        s=s+a;
        n=n/10;
    }
    printf("Sum: %d",s);
    getch();
    return 0;
}

关于c - 为什么在此代码中必须使用float而不是int?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26797845/

10-11 19:52
查看更多