搜索
查看: 435|回复: 5
打印 上一主题 下一主题

请教大神

[复制链接]
楼主
发表于 2018-9-24 20:54:24 | 显示全部楼层
以下程序代码,上面条件1和2都可以满足了。顺便说一下,输入123是输出6而不是5哦。

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.     int n,s=0;
  6.     printf("请输入一个数(1-99999999):");
  7.     scanf("%d",&n);
  8.     while(n>0)
  9.     {
  10.         s=s+n%10;
  11.         n=n/10;
  12.     }
  13.     printf("%d\n",s);
  14.     system("pause");
  15.     return 0;
  16. }
复制代码
沙发
发表于 2018-9-25 07:09:45 | 显示全部楼层
while循环里,每一次的 s=s+n%10 模运算就会取得n的个位的数值,把它累加至 s 上, 然后 n=n/10,n除以10就是它缩小10倍且取整就相当于抽掉该数的个位数,原十位变个位、百位变十位 ... 直到全部抽掉后循环结束。

代码这么少这么简单,自己加个printf来逐步观赛和数的变化不就很容易理解么。
板凳
发表于 2018-9-26 08:49:00 | 显示全部楼层
已经讲得足够清楚了,慢慢体会吧,不明白的话自己再在每一步之后加printf语句来观察各个数的变化。

C语言里的表达式里=号是赋值,s=s+10是用s原来的值加上10然后再赋给s。不是数学里的等于,数学里s=s+10不会成立的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表