问题
单项选择题
以下程序运行后的输出结果是
#include<stdio.h>
int fun()
static int x=1;
x+=1; return x;
main()
int i,s=1;
for(i=1; i<=5;i++) s+=fun();
printf("%d\n", s);
A) 11 B) 21 C) 6 D) 120
答案
参考答案:B
解析: 本题考查的是静态存储类型的变量。静态存储变量的特点是只赋一次初值,当函数发生多次调用时,静态存储变量上一次的值会带入到函数本次的调用中。本题程序中,main函数中5次调用fun函数,变量s完成函数返回值的累加。由于fun函数中变量x是静态存储类型的变量,所以x赋值为1只在第一次调用fun函数时执行,第一次调用结束后x的值变为2,当第二次调用fun函数时,x的值是上一次调用后的结果2,而不会重新赋值。根据这些特点,可以知道5次调用fun函数后,x值依次变为2、3、4、5、6,s的初值为1,所以1+2+3+4+5+6=21。