C语言:练习2-13 求N分之一序列前N项和.2021-07-24

练习2-13 求N分之一序列前N项和 (15 point(s))

本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。

输入样例:

6

输出样例:

sum = 2.450000

Author

C课程组

Organization

浙江大学

Code Size Limit

16 KB

Time Limit

400 ms

Memory Limit

64 MB

C (gcc)

参考答案:

答案1:(推荐) 

#include<stdio.h>
int main()
{
    float n,i=1;
    double result=0;//double才足够承载足够大的数
    scanf("%f",&n);
    
    while(n>=i)
    {
      result+=1/i;
        i++;
    }
    printf("sum = %.6f",result);
}

答案2(不推荐)

#include<stdio.h>

int main()
{
    float n;
    double result=0;
    scanf("%f",&n);
    
    while(n)
    {
      result+=1/n;
        n--;
    }
    printf("sum = %.6f",result);
}

之所以不推荐,不是因为代码不如第一个好,相反其相较于第一个更简单点,

但是在部分错误时,题干官网的多输入环境判断 无法正常识别,

让我一度以为有未告知的判定条件:   即使 和 一样 参与运算时的序列顺序 也不能颠倒

 

错误答案:

比如这样,实际和sample的结果使一样的,但依旧判定和sample不等价

#include<stdio.h>
 
int main()
{
    float n,result=0;
    scanf("%f",&n);
    
    while(n)
    {
      result+=1/n;
        n--;
    }
    printf("sum = %.6f",result);
}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

用户的昵称

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值