以下程序的输出结果是#include lt;stdio.hgt;int fun(int x){static int m=0;return(m *=x);}m

计算机 程序 已帮助 人

以下程序的输出结果是#include <stdio.h>int fun(int x){ static int m=0; return(m *=x);}main(){ int s,i; for(i=l;i<=3;i++) s=fun(i); printf("%d ",s);}

热搜:下面程序的功能是输出数组s中最大元素

答案解析

难度★★☆ 搜索
  • 参考答案:10本题考查静态局部变量的使用。静态局部变量用static进行声明,该变量的内存存储空间在整个程序的运行期间都不释放,进行编译时,只对静态局部变量赋初值一次,以后每次调用函数时,不再重新赋初值,而只是保留上次函数调用结束时的值。题目中的程序包括两个部分,一个是fun函数,另一个是main函数。main函数给出了变量s的初始值,s=0。for语句是对fun函数进行调用,将结果与s进行相加,并将和赋给s。仔细分析for语句的结构可知,该语句要循环运行3次。函数fun的实参即for语句的循环变量。三次调用的实参数值分别为1、2、3。fun函数的功能是完成m+=x操作,其中m为静态局部变量,初始值为0。第一次调用时,i=1,对于fun函数来说,也就是x=1,m=0,进行m+=x操作后,m=1,将m值返回,在main函数中执行s+=fun(i)语句,得到s=1。第二次调用时,i=2,fun函数中x=2,注意,此时m=1,为上次调用该函数的结果,而不是0,进行m+=x操作后,得到m=3,将该结果返回,s=4。第三次调用时,i=3,x=3,m=3,进行m+=x操作后,得到m=6,将该结果返回得到s=10。到此for语句结束,执行printf语句,输出结果10。