C语言有关函数的题目

来源:百度知道 编辑:UC知道 时间:2024/05/30 17:18:55
下面程序的输出是
main()
{ int t=1; fun(fun(t));}
fun(int h)
{ static int a[3]={1,2,3};
int k;
for(k=0;k<3;k++) a[k]+=a[k]-h;
for(k=1;k<3;k++) printf("%d",a[k]);
printf("\n"); return(a[h]);}
A)1,2,3, B)1,3,5, C) 1,3,5, D) 1,3,5,
1,5,9, 1,3,5, 0,4,8, -1,3,7,
请简述理由,谢谢

#include <stdio.h>
fun(int h)
{
static int a[3]={1,2,3};
int k;
for(k=0;k<3;k++) a[k]+=a[k]-h;
for(k=1;k<3;k++) printf("%d",a[k]);
printf("\n");
return(a[h]);
}

main()
{
int t=1;
fun(fun(t));
}

在VC上运行这个程序,输出为:
35
37

楼主要知道为什么是这个结果,可以单步跟踪啊
如果不会单步跟踪,建议先学会
因为这个方法太有用了

是 3,5 和 3,7
答案怎么没1个是对的
主要考的就是静态局部变量,它的作用域是fun()函数
生命周期是直到程序结束,所以在第2次进入fun(),数组a的值是第1次计算的结果。

按答案说 应该选C