2 qq 32575047 qq_32575047 于 2016.02.14 19:34 提问

这个题目为什么第二个输入输出是对应的,而第一个输入输出不对应

本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。
输入格式:
输入在一行中给出一个正实数eps。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。
输入样例1:
4E-2
输出样例1:
sum = 0.854457
输入样例2:
0.02
输出样例2:
sum = 0.826310#include
#include
#include
int main()
{
int i=1;
double eps;
double j=1.0,k,s=0.0;
scanf("%lf",&eps);
do
{
k=i/j;
i=-i;
j+=3;
s+=k;
}
while(fabs(k)>=eps);
printf("sum = %.6lf\n",s);
return 0;
}

3个回答

caozhy
caozhy   Ds   Rxr 2016.02.14 20:33
已采纳

lz的主要问题是最后一项的绝对值不大于给定精度eps,所以需要在相加以前判断。

qq_32575047
qq_32575047 谢谢,是的,你说的没错,必须在相加之前判断,谢谢大神的指点,已经解决了,多谢
接近 2 年之前 回复
caozhy
caozhy   Ds   Rxr 2016.02.14 19:49
 #include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int  i=1;
    double eps;
    double j=1.0,k,s=0.0;
    scanf("%lf",&eps);
    while(true)
    {
        k=(double)i/j;
        if (fabs(k)<eps) break;
        i=-i;
        j+=3;
        s+=k;
    }
    printf("sum = %.6lf\n",s);
    return 0;
}
91program
91program 回复caozhy: j 已经是 double 类型,运算时会自动转向高精度转换的。所以加(double)是脱裤子放屁多此一举!
接近 2 年之前 回复
91program
91program   Ds   Rxr 2016.02.14 20:18

j 已经是 double 类型,加 (double)就是脱裤子放屁多此一举!

91program
91program 回复caozhy: 你爷爷的这条回复,不是对的吗?孙子!拿出你“大牛”的气质来判断一下吧。
接近 2 年之前 回复
91program
91program 回复caozhy: 是的,你的这个回复是最应该被删除的!孙子!替我问儿子好!!!
接近 2 年之前 回复
caozhy
caozhy 请管理员删除这种无用的答案
接近 2 年之前 回复
91program
91program 回复91program: 这个回复是给孙子曹的,以奖励他这几天跟爷爷的回复!
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!