有以下程序: #include<stdio.h> unsigned fun(unsigned num) { unsigned k=1: do{ k*=num%10; num/=10; }while(num); return k; } main( ) { u

admin2022-06-24  15

问题 有以下程序:
#include<stdio.h>
unsigned fun(unsigned num)
{
unsigned k=1:
do{
k*=num%10;
num/=10;
}while(num);
return k;
}
main( )
{
unsigned n=26:
printf("%d\n",fun(n));
)
程序运行后的输出结果是(          )。

选项 A、12
B、10
C、16
D、8

答案A

解析 程序首先执行main函数,执行printf("%d\n",fun(n));即输出表达式fun(26)的值,为了计算该表达式,需要调用函数fun。此时inain将n中的26作为实参传递给fun的num,即num值为26,接着执行do…while语句。第1次循环,执行k*=num%10,即k=k*(num%10)=1*(26%10)=6;执行nam/=10,即num=nurn/10=26/10=2;while后面循环条件为num,此时nam为2,是非0值,即表示循环条件成立,继续执行循环体。此时k为6,num为2,执行do…while中的语句后,k为12,num为0。由于while后面循环条件为num,此时num为0,表示循环条件不成立,结束循环,执行return k,即返回至main函数中的被调用处,执行main函数,执行printf语句,输出结果为12。
转载请注明原文地址:https://kaotiyun.com/show/HLkp777K
0

最新回复(0)