C语言填空题。求解意思?详细解答

下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填空使程序完整。main(){intn,k=1,s=0,m;for(n=1;n<=100;n++){k... 下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填空使程序完整。
main ( )
{ int n, k=1, s=0, m;
for (n=1; n<=100 ; n++) {
k=1 ; s=0 ;
m=n;
while (____①____) {
k*=m%10;
s+=m%10;
_____②_______;
}
if (k>s) printf(“%d,”, n);
}
}
① m!=0

② m/=10
k*=m%10;
s+=m%10;
_____②_______;
什么意思。求详解
展开
 我来答
LZJ_BlinKer
2010-08-24 · 超过25用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:62.7万
展开全部
主要是
while (_m!=0) {
k*=m%10;
s+=m%10;
m/=10;
}
这一段吧
k记录的是这个数每一位的乘积
s记录的是每一位数的和
例如m=1234
进入while循环
k*=m%10等价于k=k*(m%10);
s+=m%10等价于s=s+(m%10);
m%10就是当前m的最低位4
k=k*4=4;(k的初值为1)
s=s+4=4;(s的初值为0)
m/=10;的意思就是m=m/10;
因为m是Int型的
所以只保留整数位 m=123; 相当于把计算过的个位就扔掉了,那样下次%10取余的就是以前的十位了
m!=0那么又进入while循环
一直到m=1的时候
k的总值就是4*3*2*1
s的总值就是4+3+2+1
这时m/=10 因为商是0 所以m=0
说明这个数的所有位数已经计算完毕
则跳出循环,判断k和s的大小
如果k>s,就是满足条件的数,输出n
百度网友43ebde78e
2010-08-23 · TA获得超过1040个赞
知道小有建树答主
回答量:592
采纳率:0%
帮助的人:695万
展开全部
第一个m!=0就是判断是否到了最高位,到了最高位就跳出循环
第二个m/=10把最低位去掉并把剩余部分重新复制给m,这样也可理解第一个空,每次去掉最低位,任何一个已知数到最后都会是0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式