A-A+

以下程序的输出结果是 int f() { static int i=0; int s=1;

2022-08-06 05:25:49 问答库 阅读 176 次

问题详情

以下程序的输出结果是 int f() { static int i=0; int s=1; s+=i; i++; return s; } main () { int i,a=0; for (i=0;i<5; i++) a+=f(); printf ("%dn" ,a); }
A.20
B.24
C.25
D.15请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:D
解析:本题考核的知识点是静态变量static的应用。在C语言中声明为static型的变量,在整个程序运行期间,静态局部变量在内存的静态存储区中占据永久性的存储单元。即使退出函数后,下次再进入该函数时,静态局部变量仍使用原来的存储单元。由于并不释放这些存储单元,因此这些存储单元中的值得以保留;因而可以继续使用存储单元中原来的值。本题中函数f()中定义了一个static型变量i,故每调用一次函数f(),i的值加1,返回s的值等于i,在主函数中用了一个for循环,该循环执行了5次,每次都调用f()函数,将其返回值累加到变量a中,故悬后a的值为1+2+3+4+5=15。所以,4个选项中D为所选。

考点:程序