问题
单项选择题
有以下程序 void f(int n,int *r) { int r1=0; if(n%3==0) r1=n/3; else if(n%5==0) r1=n/5; else f(--n,&r1); *r=r1; } main() { int m=7,r; f(m,&r);printf("%d",r); } 程序运行后的输出结果是
A.2
B.1
C.3
D.0
答案
参考答案:A
解析: 本题考查了函数的递归调用。在f函数中,当m=7时,程序执行“f(--n,&r1);”语句,递归调用f(6,&r1),程序执行“r1=n/3;”语句,即r1= 6/3=2,然后执行“*r=r1;”语句,所以输出结果为2。