大家帮小弟我看看这题的有关问题在哪

大家帮我看看这题的问题在哪?
/*给定fun的功能是:求出:1!,3!,......,K!(k是小于9的奇数)放在一维数组传回主函数
如k=7则应输出1.000000 6.000000 120.00000 5040.0000
改正fun函数 */

//#include <conio.h>
#include <stdio.h>
#define N 5
void fun ( int k, double a[ ] )
{
  int i,j ;
/***********found***********/
  int n=0 ;
  double y = 1.0;
  for (i=1; i<=k;i++,i++)
  {
/***********found***********/
   
  for ( j = 1; j<= i; j ++ ) 
y = y * j;
  a[ n++ ] = y;
  }
}

main()
{
  int k = 7, j;
  double aa[N];
  //clrscr();
  fun ( k, aa );
  for ( j = 0; j <= k/2 ; j++ )
printf ( "%15.5lf",aa[j] ); 
  printf ("\n" );
  //NONO() ;
}
输出的结果是1.00000 6.00000 720.00000 3628800.00000

好奇怪啊

------解决方案--------------------
C/C++ code

#include  <stdio.h> 
#define  N  5 
void  fun ( int k,  double  a[ ] ) 
{ 
  int  i,j ; 
/***********found***********/ 
  int n=0 ; 
  double y = 1.0; 
  for (i=1; i <=k;i++,i++) 
  { 
/***********found***********/ 
   y=1.0;  
    for ( j =  1; j <= i; j ++ )  
y = y * j; 
      a[ n++ ] = y; 
  } 
} 

main() 
{ 
  int k = 7, j; 
  double  aa[N]; 
  //clrscr(); 
  fun ( k, aa ); 
  for ( j = 0; j  <= k/2 ; j++ ) 
  printf ( "%15.5lf",aa[j] );  
  printf ("\n" ); 
  //NONO() ; 
}

------解决方案--------------------
C/C++ code

//#include  <conio.h> 
#include  <stdio.h> 
#define  N  5 

void  fun ( int k,  double  a[ ] ) 
{ 
    int  i,j ; 
    /***********found***********/ 
    int n=0 ; 
    double y = 1.0; 
    for (i=1; i <=k; i++,i++) 
    { 
        /***********found***********/ 
        
        for ( j =  1; j <= i; j ++ )  
            y = y * j; 
        a[ n++ ] = y; 
        y = 1.0; //问题出在这里,没有对y进行重新置值。
    } 
} 

void main() 
{ 
    int k = 7, j; 
    double  aa[N]; 
    //clrscr(); 
    fun ( k, aa ); 
    for ( j = 0; j  <= k/2 ; j++ ) 
        printf ( "%15.5lf",aa[j] );  
    printf ("\n" ); 
    //NONO() ; 
    return;
}