一道C语言题目,求大神给答案~输出是多少?
#include<stdio.h>intfun(){staticintx=1;x+=1;returnx;}main(){inti,s=1;for(i=1;i<=s;i++...
#include<stdio.h>
int fun()
{
static int x=1;
x+=1;return x;
}
main()
{
int i,s=1;
for(i=1;i<=s;i++) s+=fun();
printf("%d\n",s);
} 展开
int fun()
{
static int x=1;
x+=1;return x;
}
main()
{
int i,s=1;
for(i=1;i<=s;i++) s+=fun();
printf("%d\n",s);
} 展开
展开全部
在这个程序中主要看哪个static这是静态的意思 也就是说 当fun()函数运算完也不释放x的值 直到mian()函数执行完才释放x的值,这个程序的运行顺序就是,先进入到mian()函数,做循环,s=s+fun()到这句的时候会去调用fun()函数 这是返回x=x+1=2 s=1+2 这时s=3 for循环中i的值自增后
i=2 这时s=3还是满足条件,这样一直循环下去,这个程序感觉不对,这样就死循环了,因为fun()函数中的x值一直没有被释放 第二次执行的时候就变为x=2+1=3了。。这样 主要就是static的作用
i=2 这时s=3还是满足条件,这样一直循环下去,这个程序感觉不对,这样就死循环了,因为fun()函数中的x值一直没有被释放 第二次执行的时候就变为x=2+1=3了。。这样 主要就是static的作用
展开全部
static int x =1; //这句说明了x是个 静态变量,每次调用函数修改的时候,会影响下次访问时的值。所以有:
第一次调用fun()函数的时候,x = 1+1 =2;
第二次调用fun()函数的时候,x = 2+1 =3;
第三次调用fun()函数的时候,x = 3+1 =4;
.....
因此,main()中for循环
i=1时, s = 1+fun() = 1 + 2 =3;
i=2时, s = 3+fun() = 3 + 3 = 6;
i=3时, s = 6+fun() = 6 + 4 = 10;
........
由于 在循环中,i 是自加1 的,而s 也是增长的,而且增长的速度比 i 增长的快,所以始终有i<=s;
因此,这个程序会陷入死循环中~~根本就执行部了printf("%d\n",s);这条语句,因为程序一直在执行上面的循环语句....
第一次调用fun()函数的时候,x = 1+1 =2;
第二次调用fun()函数的时候,x = 2+1 =3;
第三次调用fun()函数的时候,x = 3+1 =4;
.....
因此,main()中for循环
i=1时, s = 1+fun() = 1 + 2 =3;
i=2时, s = 3+fun() = 3 + 3 = 6;
i=3时, s = 6+fun() = 6 + 4 = 10;
........
由于 在循环中,i 是自加1 的,而s 也是增长的,而且增长的速度比 i 增长的快,所以始终有i<=s;
因此,这个程序会陷入死循环中~~根本就执行部了printf("%d\n",s);这条语句,因为程序一直在执行上面的循环语句....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询