问题 填空题

下面程序的运行结果是 【12】
#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));

答案

参考答案:K

解析: 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。

单项选择题
单项选择题