#include<stdio.h> int p=2; main() {int j,s; for(j=0;j<=5;j++) s=sum(j);

printf("s=%d",s);
int sum(int k)
{static x=1;
int y=1;
p++;
y++;
return(x+=k+p+y);
}

第一,你的函数未在main函数之前申明 就使用,难道不报错?当然这是不可能的。可以把函数体定义移到前面。
修改之后应该是这样的
#include<stdio.h>
int p=2; //全局变量,其他地方也可见,局部函数修改其他地方也可以看见修改
int sum(int k)
{
static x=1;//静态变量,在此程序执行期间只初始化一次,也就是这句话只执行一次,第二次
//不再执行
int y=1;
p++;
y++;
return(x+=k+p+y);//x=x+k+p+y
}
main()

{
int j,s;
for(j=0;j<=5;j++)
s=sum(j);
printf("s=%d",s);
}
关于几个变量上面已经注释了,现在来模拟运行一遍。
j=0,s=sum(0)进入函数
k=0,x=1,y=1,p=3,y=2,返回x=1+0+3+2=6;
j=1,s=sum(1)进入函数
k=1,x=6(上面已经改变,赋值无效 ),y=1,p=4,y=2,返回x=6+1+4+2=13;
j=2,s=sum(2)进入函数
k=2,x=13(上面已经改变,赋值无效 ),y=1,p=5,y=2,返回x=13+2+5+2=22;
j=3,s=sum(3)进入函数
k=3,x=22(上面已经改变,赋值无效 ),y=1,p=6,y=2,返回x=22+3+6+2=33;
j=4,s=sum(4)进入函数

k=4,x=33(上面已经改变,赋值无效 ),y=1,p=7,y=2,返回x=33+4+7+2=46;
j=5,s=sum(5)进入函数
k=5,x=46(上面已经改变,赋值无效 ),y=1,p=7,y=2,返回x=46+5+8+2=61;
j=6跳出循环。s=61.结束。不明白可追问。主要是考的局部变量,全局变量,静态变量的区别。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网