为什么我必须在此代码中使用float而不是int?

时间:2014-11-07 09:17:50

标签: c

如果类型是整数,则sum的结果为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”的名称是什么?

1 个答案:

答案 0 :(得分:2)

我假设您正在计算构成数字的数字之和。

问题是您无法初始化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;
}