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

admin2020-06-16  21

问题 有以下程序:
   #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(6)的值,为了计算该表达式,需要调用函数func。此时main将n中的26作为实参传递给fun的num,即num值为26,接着执行do—while语句。第1次循环,执行k*=num%10,即k=k*(num%10)=1*(26%10)=6;执行num/=10,即num=num/10=26/10=2;while后面循环条件为num,此时num为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/74Cp777K
0

最新回复(0)