下面程序的运行结果是【 】。 #include <stdio.h> fun(int t[],int n) { int i,m; if(n==1) return t[0]; else

admin2009-01-15  33

问题 下面程序的运行结果是【  】。
     #include <stdio.h>
     fun(int t[],int n)
     {   int i,m;
         if(n==1) return t[0];
         else
         if(n>=2) | m:fun(t,n-1); return m; }
    }
     main( )
     {  int a[ ] = {11,4,6,3,8,2,3,5,9,2};
         printf( "% d \n" ,fun( a, 10));

选项

答案11

解析 main函数调用fun函数时,将10赋给n,形参数组t与实参数组a共用一段内存空间。执行if-else语句时,n=10,所以执行else子句。由于n>=2成立,执行m=fun(t[0],9),递归调用fun函数,m=fun(t[0],8),m=fun(t[0],7),…,m=fun(t[0],2),m=fun(t[0],1),当n= 1时满足if(n=1)的条件,执行return语句,返回数组首地址指向的值t[0],所以答案为11。
转载请注明原文地址:https://kaotiyun.com/show/11Xp777K
0

最新回复(0)