问题
填空题
下列给定程序中函数fun()的功能是计算1/n!的值。 例如:给n输入5,则输出0.0083330 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include <stdio.h> #include <conio.h> /******+****found*************/ int fun(int n) { double result=1.0; if(n==0) return 1.0; while(n>1 && n<170) /**********found************/ result *=n++; result=1/result; return result; } main() { int n; printf("Input N:"); scanf("%d",&n); printf("\n1/%d!=%If\n",n,fun(n)); }
答案
参考答案:错误:int fun(int n) 正确:double fun(int n)
解析:(2)错误:result*=n++; 正确:result*=n--;错误1:函数的返回值为实型数据,所以函数的返回类型应为double。错误2:根据阶乘的概念,从n开始,每递减1的数相乘,直到1,因此此处n递减,而不是递增。