猿问

求助,以下程序的输出结果是( )?

#include<stdio.h>
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("%d\n", a);

慕容3067478
浏览 151回答 2
2回答

HUX布斯

代码错误已修改,下面的代码可以正确运行了:int&nbsp;f()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;int&nbsp;i=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;s=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s+=i;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;s;&nbsp;}void&nbsp;main()&nbsp;&nbsp;//加上返回值类型,&nbsp;可以是void&nbsp;,&nbsp;也可以是int{&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i,&nbsp;a=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;&nbsp;i&nbsp;<&nbsp;5;&nbsp;i++)&nbsp;&nbsp;&nbsp;//这里使用英文的符号&nbsp;"<"&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a+=f();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;printf("%d\n",&nbsp;a);}运行结果如下:注意事项以及建议:1、代码中存在语法错误, 编程时,只支持标点英文标点符号。2、static 修改的变量在整个程序生命周期内只会被定义一次,并且在程序生命周期结束前,其上次的运行结果会被保存,供下次使用。3、该算法其实就是在求 sum = 1+2+3+4+5 = 15;

POPMUISE

结果是输出15。分析:1、函数f中有两个变量,一个是静态整型变量i,一个是普通整型变量s。需要注意静态变量i的值在退出函数f后并不消失,下一次再进入f函数后,上一次的喔值仍然存在!也就是说static int i=0;这一句只在第一次调用f函数时被执行,以后再调用f函数时,这一句会被越过去。后面就是两句计算和赋值,最后返回s的值。2、再看主函数main,它定义两个变量i和a,也要注意此i与函数f中的i是两个不同的变量,只是使用了相同的代号i,但因为它们分别出现在两个函数中,这是允许的,不会冲突。3、接下来是一个循环,循环变量i从0到4共执行5次。循环体只有一句a+=f();。也就是共调用5次f函数,每一次把返回值加到变量a中。4、第一次调用f,声明i=0、s=1,s=i+s=0+1=1,i++后i=1,返回s值1。主函数a=a+返回的1=0+1=1。5、第二次调用f,保留上一次的i=1,重新声明s=1,s=i+s=1+1=2,i++后i=2,返回s值2。主函数a=a+返回的2=1+2=3。6、第三次调用f,保留上一次的i=2,重新声明s=1,s=i+s=2+1=3,i++后i=3,返回s值3。主函数a=a+返回的3=3+3=6。7、第四次调用f,保留上一次的i=3,重新声明s=1,s=i+s=3+1=4,i++后i=4,返回s值4。主函数a=a+返回的4=6+4=10。8、第五次调用f,保留上一次的i=4,重新声明s=1,s=i+s=4+1=5,i++后i=4,返回s值5。主函数a=a+返回的3=10+5=15。9、循环结束,输出a的值15。分析完毕。
随时随地看视频慕课网APP
我要回答