首页
编程星球
啊哈磊的小伙伴
求助
交流
添柴
挑战
题库
院校合作
加入圈子
扫码关注啊哈磊
QQ群:703568346
@啊哈编程星球
暑期课程
金牌教练带你玩转编程!
扫码预约课程
未登录
我的添柴
退出账号
搜索
搜索
本版
文章
帖子
用户
啊哈磊_编程从这里起步
»
交流
›
互助分享
›
学习求助
›
请教大神
返回列表
发新帖
查看:
435
|
回复:
5
请教大神
[复制链接]
蓝天之子
蓝天之子
当前离线
积分
90
楼主
发表于 2018-9-24 20:54:24
|
显示全部楼层
以下程序代码,上面条件1和2都可以满足了。顺便说一下,输入123是输出6而不是5哦。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,s=0;
printf("请输入一个数(1-99999999):");
scanf("%d",&n);
while(n>0)
{
s=s+n%10;
n=n/10;
}
printf("%d\n",s);
system("pause");
return 0;
}
复制代码
回复
举报
蓝天之子
蓝天之子
当前离线
积分
90
沙发
发表于 2018-9-25 07:09:45
|
显示全部楼层
while循环里,每一次的 s=s+n%10 模运算就会取得n的个位的数值,把它累加至 s 上, 然后 n=n/10,n除以10就是它缩小10倍且取整就相当于抽掉该数的个位数,原十位变个位、百位变十位 ... 直到全部抽掉后循环结束。
代码这么少这么简单,自己加个printf来逐步观赛和数的变化不就很容易理解么。
回复
举报
蓝天之子
蓝天之子
当前离线
积分
90
板凳
发表于 2018-9-26 08:49:00
|
显示全部楼层
已经讲得足够清楚了,慢慢体会吧,不明白的话自己再在每一步之后加printf语句来观察各个数的变化。
C语言里的表达式里=号是赋值,s=s+10是用s原来的值加上10然后再赋给s。不是数学里的等于,数学里s=s+10不会成立的。
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
广播台
特别关注
快速回复
返回顶部
返回列表