下列给定程序中函数fun()的功能是计算1/n!的值。 例如:给n输入5,则输出0.0083330 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #i

admin2009-02-15  61

问题 下列给定程序中函数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));
   }

选项

答案(1)错误:int fun(int n) 正确:double fun(int n) (2)错误:result*=n++; 正确:result*=n--;

解析 错误1:函数的返回值为实型数据,所以函数的返回类型应为double。错误2:根据阶乘的概念,从n开始,每递减1的数相乘,直到1,因此此处n递减,而不是递增。
转载请注明原文地址:https://kaotiyun.com/show/mTID777K
0

最新回复(0)