求助

薛定谔不养猫_kk 2019-05-18 08:49:55
题目是100-1000多少个位数字是5,图片是题目给的答案 我想知道while循环语句中的(s=s+k%10)中的+s干嘛用的,s的值一直是0。和k=k/10;下面并没有用到k的值,if判断后又重新循环了。我尝试删除后执行不了。
...全文
30 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
CaptainXue 2019-05-18
  • 打赏
  • 举报
回复
首先,我们来看看for循环中,它实现的是100到1000之间的每一个数,求每个数各个位置上的数之和,while循环就是实现的计算一个数的各个位置上的数之和,理解到这一点就知道为什么每次在while之前都要把s初始化为0,因为s是存储当前数字i的各个位置上的数之和,如果不初始化,就会在之前的s上进行累加,这样的s得到的是100到当前i之前的所有数的各个位置上的数之和。 也正是因为对程序的解读,发现一个问题,就是你的程序是先计算每个数各个位置上的数之和s,然后判断s是否为5,如果不是,就继续计算下一个数,如果是,就count++,从你的程序看来,你是统计的100到1000之间,满足各个位置上的数之和为5的数的个数了。这个好像和你给的题意不符合吧?但是我看你给的题意是统计个位数字为5的数吧,如果是这样的话,你的for循环里面改为:s=0;k=i;s=k%10;//只截取个位上的数即可。后面的不变。
Italink 2019-05-18
  • 打赏
  • 举报
回复
k复制了i的值,%10可以得到一个数的最低位比如1234%10=4,/10可以消除最低位,比如1234/10=123,s用作累加求和,所以那个while循环的作用就显而易见了,求数字i各个位数相加的和,你说s一直等于0是不正确的

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧