问题 单项选择题

有以下程序
#include<stdio.h>
void fun(int n,int*p)
int f1,f2;
if(n==1||n==2)*p=1;
else
fun(n=1,&f1);fun(n-2,&f2);
*p=f1+f2;


main()
int s;
fun(3,&,s);printf("%d",s);

程序的运行结果是( )。

A.2
B.3
C.4
D.E

答案

参考答案:A

解析: 在函数fun中对参数n的值进行判断,如果其值等于1或2,则*p=1,否则,函数fun进行递归调用fun(n.1,&f1);fun(n.2,&f2);*p=n+f2;在主函数调用fun函数时传递给参数n的值为3,fun函数又递归用了两次自身fun(2,&n);fun(1,&f1);所以n和f2的值都为1,通过指针p的引用,变量s的值为2。

填空题
单项选择题