能不能解释一下,咋做呀,谢谢

以下程序运行后的输出结果是(). 

#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]; 

}

img