试题与答案

下列程序执行输出的结果是( )。 #include<stdio.h> f(in

题型:单项选择题

题目:

下列程序执行输出的结果是( )。
#include<stdio.h>
f(int a)
int b=0;
static c=3;
a=c++;b++;
return(a);

main()
int a=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);

A) 3
B) 4
C) 5
D) 6

答案:

参考答案:B

解析: 本题考查函数调用时的参数传递。在函数调用时,static变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。
在主函数中,第一次循环,i=0,调用k=f(a++)=f(2),调用完之后才将a加1,a变为3,在f(2)中,先将c=3赋值给a返回,然后将c加1,得到k=a=3,c=4。
第二次循环,i=1,调用k=f(a++)=f(3),调用完之后才将a加1,a变为4,在f(3)中,先将c=4赋值给a返回,然后将c加1,得到k=a=4,c=5。

试题推荐
微信公众账号搜索答案