问答题 给定程序MODI1.C中函数fun的功能是计算“n!”。 例如,n为5,则输出120.000000。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include <stdio.h> double fun(int n) { double result=1.0; /************found************/ if n==0 return 1.0; while(n>1 && n<170) /************found************/ result *=n-- return result; } main() { int n; printf("Input N:"); scanf("%d",&n); printf("/n/n%d!=%lf/n/n",n,fun(n)); }
【正确答案】(1)if(n==0) (2)result*=n--;或{result*=n;n--;}
【答案解析】[解析] (1)这里是一个简单的格式错误,if条件应该加括号。 (2)根据阶乘的概念,从n开始,n!=n*(n-1)!,直到1,所以应该为result*=n--;。