longer_713 2023-02-22 18:00 采纳率: 100%
浏览 23
已结题

三目运算符的先后执行顺序

可以帮忙解释一下为什么这个程序能够做到输出1~100间自身积大于和的数呢?k和s不应该始终相等吗,这个程序为什么是正确的?

int main()
{
    int n,k=1,s=0,m;

    for(n=1;n<=100;n++)
    {
        k=1;

        s=0;

        m=n;

        while (m!=0)
        {
            k*=m%10;
            s+=m%10;
            m/=10;
        }
        if(k>s)
            printf("%d\n",n);
    }
}

  • 写回答

3条回答 默认 最新

  • 元气少女缘结神 2023-02-22 18:20
    关注

    m % 10表示取的个位数 , m / 10表示取个位数左边的数
    假设n=42进入while
    k = 1 * 2; 个位数是2
    s =0+2;
    m /=10 ;此时取的是个位数m=2左边的数 即4
    k=1 * 2 * 4;
    s=0+2+4;
    m /=10;此时 m=4左边已无数,m=0即结束。
    所以当然能判断k和s的大小 并输出这个数n

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月3日
  • 已采纳回答 2月23日
  • 创建了问题 2月22日