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;
_____②_______;
什么意思。求详解 展开
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;
_____②_______;
什么意思。求详解 展开
2个回答
展开全部
主要是
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
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询