以下程序运行后的输出结果是().
#include<stdio.h>
fun(int h);
int main()
{
int t=1;
fun(fun(t));
return 0;
}
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=0;k<3;k++)
printf("%d,",a[k]);
printf("\n");
return a[h];
}
总的运行结果是:
1,3,5,
-1,3,7,
测试如下:
#include<stdio.h>
int fun(int h);
int main()
{
int t=1;
fun(fun(t));
return 0;
}
fun(int h)
{
static int a[3]={1,2,3};
int k;
// main函数fun(fun(t))里的 fun(t)的运行结果是:1,3,5 ,过程如下:
// a[k] += a[k]-h 即 a[k]= a[k] + (a[k]-h) ,h 首先为1,运行3次的值如下:
// a[0] = 1 + (1 - 1 ) = 1
// a[1] = 2 + (2-1) = 3
// a[2= 3 + (3-1) = 5
// 然后返回 a[1] = 3 ,所以fun(fun(t))= fun(3),
// 第二次运行,值的变化如下:
// a[0] = 1 + (1-3)= -1
// a[1] = 3 + (3-3)= 3
// a[2] = 5 + (5-3) = 7
for(k=0;k<3;k++)
a[k]+=a[k]-h;
for(k=0;k<3;k++)
printf("%d,",a[k]);
printf("\n");
return a[h];
}