下题的答案是多少?

来源:百度知道 编辑:UC知道 时间:2024/06/09 21:55:22
#include<stdio.h>
int Square(int i)
{
return i*i;
}

main()
{
int i=0;
i=Square(i);
for(; i<3;i++)
{
static int i=1;
i+=Square(i);
printf("%d", i);
}
printf("%d\n", i);
}
结果是多少? 请说一下算法!!!谢谢

for 里的i是static局部变量,跟外面的i没关系,只要把:
static int i=1;
i+=Square(i);
printf("%d", i);

这几句里的i看做是其他的字母就可以了,比如
static int t=1;
t+=Square(t);
printf("%d", t);

答案为2 6 42 3

#include<stdio.h>
int Square(int i)
{
return i*i;
}

main()
{
int i=0;
i=Square(i);///////////i==0
for(; i<3;i++)
{
static int i=1;/////脑残
i+=Square(i);//////////内部i==1+1=2(1),i==2+4=6(2),i==6+36=42(3)
printf("%d", i);//////分别显示上面内部i的三次运算结果:2,6,42
}
printf("%d\n", i);//////////显示外部i==3;
}

结果不重要。自己运行一下就知道了。
估计你不明白的是
static int i=1;
int i=0;
吧!

其实 static int i=1;是个静态变量,这里i换成其他名字估计就知道怎么回事了

运行一下就能知道结果,如果想知道程序运行的细节,可以选择调试,单步执行。