大家帮小弟我看看这题的有关问题在哪
大家帮我看看这题的问题在哪?
/*给定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
好奇怪啊
------解决方案--------------------
/*给定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; }