问题 填空题

以下程序运行后的输出结果是 【13】 #include <stdio, h> fun( int a){ int b = 0; static int c = 3; b++;c++; return(a + b + c);}main( ) int i,a = 5; for(i =0;i <3;i ++ ) prinff("% d% d" ,i,fun(a) ); printf(" \n" );}

答案

参考答案:010111212

解析: 用static关键字声明的变量称为静态局部变量。静态局部变量只在编译时赋一次初值,以后再次调用函数时不再重新赋初值,而是保留上次函数调用结束时的值。程序中的变量 c为静态变量,当再次调用fun函数时,变量c不再被赋初值,变量c的值为上次调用fun函数时所保留下来的值,具体在程序运行过程中的体现如下: 当i=0时,第一次调用fun(5),这时a=5,b=0,c=3,执行b++,c++,得到b=1,c=4,则 a+b+c=10,返回主函数输出010;当i=1时,第二次调用fun(5),这时a=5,b=0,c=4,执行b++,c++,得到b=1,c=5,则a+b+c=11,返回主函数输出111;当i=2时,第三次调用 fun(5),这时a=5,b=0,c=5,执行b++,c++,得到b=1,c=6,则a+b+c=12,返回主函数输出212;当i=3时,循环结束,所以输出结果为:010111212。

选择题
单项选择题