You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么统计整数位数的C代码循环中用n%=10无法输出结果

问题原因分析

你这段代码无法正常输出i的值,是两个问题共同导致的:

  • 变量i未初始化
    C语言的栈区局部变量不会默认初始化为0,你声明int i;后没有手动赋值,它的初始值是内存中的随机垃圾值,即便循环能正常结束,输出结果也必然错误。
  • n %= 10的逻辑触发死循环
    取模运算符%的作用是计算两数相除的余数,比如你输入值为123时,第一次执行n %= 10后,n的值就会变成3,此后每次执行n %=10,n的值永远是3,始终满足n != 0的循环判断条件,程序会一直卡在while循环中,永远执行不到后续的printf语句,自然不会打印任何内容。
修正后的完整代码

除了你已知的把n %= 10替换为n /= 10(整除运算每次去掉最后一位,直到n变为0退出循环)之外,还要注意给计数器i初始化,同时额外处理输入为0的边界场景:

#include<stdio.h>
int main()   
{
    int n;
    scanf("%d",&n);
    int i = 0;
    // 处理输入为0的特殊情况,0的位数为1
    if(n == 0) {
        i = 1;
    } else {
        while(n != 0)
        {
            n /= 10;
            ++i;
        }
    }
    printf("%d",i);
    return 0;
}

内容的提问来源于stack exchange,提问作者Muskan Tabassum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:15:04