哪位大神帮我看看为什么总是出错,谢谢

2019-05-10 14:30发布

题目: 请编写函数 double fun(int  n), 它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。例如,在主函数中从键盘给n输入20后, 调用fun并得到返回值,在main函数中输出为: s=0.583333。注意: 要求n的值不大于100。

#include <stdio.h>

#include<math.h>

double fun(int n)

{

int k;double sum=0.0;

 for(k=1;k<=n;k++)

 

  if(k%5==0||k%9==0) 

  sum+=1/k;

   return sum;

}

 int main()

     {

         int   n ;

         double  s;

         printf(" input n:\n");

         scanf("%d",&n);

         printf("s=%f\n",fun(n));

      }

输出总是错的

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答

你的程序中,要把sum+=1/k; 改为:

sum+=1.0/k;

否则:因为k是整型的,1/k的值始终为0。
修改后的程序如下:

#include <stdio.h>
#include<math.h>
double fun(int n)
{
int k;double sum=0.0;
for(k=1;k<=n;k++)
  if(k%5==0||k%9==0)
     sum+=1.0/k;
return sum;
}
int main()
{
int   n ;
double  s;
printf(" input n:\n");
scanf("%d",&n);
printf("s=%f\n",fun(n));
}
程序的运行结果如下:


一周热门 更多>