.以下程序输出的结果是

来源:百度知道 编辑:UC知道 时间:2024/06/03 14:05:17
unsigned funct(unsigned num)
{ unsigned int k=1;
do
{ k*=num%10; num/=10;}
while(num);
return k;
}
main()
{ unsigned int n=26;
printf(“funct result is:%d\n”,funct(n));
}
本人算出来 k=6 所以结果是6 可答案却是12 不知道是怎么来算的。拜托大家教教我

funct(n)将26代入funct()

看这段处理:
do
{ k*=num%10; num/=10;}
while(num);

初值:
k=1,num=26

do循环第1次:
num%10=26%10=6
k*=num%10 => k*=6 => k=1*6=6
num/=10 => num=num/10=26/10=2

while(2)成立,循环继续:
k=6,num=2

do循环第2次:
num%10=2%10=2
k*=num%10 => k*=2 => k=2*6=12
num/=10 => num=num/10=2/10=0

while(0)退出循环。

所以最后k值为12

你是把当 真 时 看成结束循环了

你算出来k=6,是因为你只算了一次循环(此时num=2)。
然后还会执行一次循环,k *= num%10实际上是(6 *= 2%10)

第一次循环 k=6 num=2;
第二次循环 k=6*2 num=0;
循环结束 输出12.