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

admin2020-01-10  28

问题 有以下程序:
    #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://jikaoti.com/ti/sNG0FFFM
0

相关试题推荐
最新回复(0)