c - 为什么我必须在这段代码中使用 float 而不是 int ?

标签 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”的名称是什么?

最佳答案

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

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

相关文章:

c - 通用产品代码挑战

c - 函数参数作为具有声明大小的数组

c - 如何生成8字节的十六进制值?

c - 使用 gcc 和 glib 的奇怪行为?

c - Delphi 是否有任何等效于 C 的 volatile 变量?

c - 姓名和姓氏搜索功能将无法使用。为什么?

objective-c - 用于密集型科学应用的 NSDecimalNumber?

c - GNU 内联汇编 : same register for different output operands allowed?

c - Aeroflex gaisler(带 leon2 处理器的 RTEMS)无法通过 UART 接口(interface)发送字符

c - 如何正确使用 fscanf 仅将需要的信息存储在数组中?