企鹅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 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画