企鹅YU 2017-07-15 07:26 采纳率: 50%
浏览 837
已采纳

输入10,答案应该等于0.645635,为什么我这个是负的?

图片说明

#include"stdio.h"
#include"string.h"
#include"conio.h"
#include"windows.h"
#include"math.h"
double funa (int n);
int main()
{
 double u;
 int y;
 printf("请输入分母的值:");scanf("%d",&y);
 u = funa ( y );
 printf("  %f \n",u);
 return 0;
}

double funa (int n)
{
 double add = 0;
 double t;
 int k;
 int s = 1;
 for ( k = 1;k <= n; k ++ )
 {
  s = -s;
  t = s * 1.0/k;
  add = add + t;
 }
 
 return add;
}

  • 写回答

2条回答

  • lzl_Avery 2017-07-15 13:40
    关注

    一楼的方式可以,当然也可以把for循环里的那个s=-s写在 add=add+t;的后面 之所以你的结果为负是你的 一开始 就是 -1*1.0/1为-1
    题目要求是 1-1/2+1/3-1/4....而你的程序变成了 -1+1/2-1/3+1/4...完全与题目相反,所以才为负,而不是得到你想要的结果

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable