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
答案:15,64 6(由于有些输出中间没有空格,所以输出是连在一起的了),分析如下:#include<stdio.h>
int k=1
void main()
{
int i=4
void fun(int m)
fun(i) //调用函数
printf("%d %d\n",i,k) //变量i=4,全局变量k的值是6,所以输出4 6
}
void fun(int m)
{
m+=k k+=m //这里m=4,全局变量k=1,所以m=m+k=4+1=5,k=k+m=1+5=6
{
char k='B' //定义了局部变量k,在花括号{}这个代码块内,屏蔽了全局变量的k
printf("%d",k-'A') //这里由于只有局部变量k起作用而k='B',输出1。
}
printf("%d,%d",m,k) //出了花括号后,局部变量的作用域结束了,全局变量的k又开始起作用,所以输出5,6
}
答案如下:记得采纳哟~~O(∩_∩)O~#include<stdio.h>
main()
{ int t=0,s=0,i
for(i=1i<=5i++)
{ t=i+10*t
s=s+t}
printf("s=%d\n",s)
getchar()
}
findmax( int s[],int t)
{ int k,p
for(p=0,k=pp<tp++)
if(s[p]>s[k])
k=p
return k
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)