M047

02-程序修改题 软件154 范金瑞 985浏览

所属年份:2012.3

下列给定程序中函数fun的功能是:计算n!。
例如,给n输入5,则输出120.000000。

请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!

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

【考点分析】
本题考查:if语句条件表达式,需注意其格式;计算阶乘的方法。

【解题思路】
(1)这里是一个简单的格式错误,if条件应该加括号。
(2)根据阶乘的概念,从n开始,n!=n*(n-1)!,直到1,所以应该为result *=n–;。