浙大版《C语言程序设计(第3版)》练习2-15

练习2-15 求简单交错序列前N项和 (15分)

本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + … 的前N项之和。

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

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

输入样例:

10

输出样例:

sum = 0.819

跟2-14差不来太多,我还是用数学的方法算的前面的符号。
代码:

#include"stdio.h"
#include"math.h"
int main()
{
    int m, N, i, j = 1;    
    scanf("%d", &N);    
    double sum = 0;    
    for(i = 1;i <= N;i++)    
    {
        m = pow(-1,i+1);        //是奇数位是正数,偶数位是负数
        sum += 1.0*m/j;        
        j += 3;
    }
    printf("sum = %0.3lf", sum);
    return 0 ;
}

符号的那里用if语句也可以替代:

#include"stdio.h"
int main()
{
    int m, N, i, j = 1;    
    scanf("%d", &N);    
    double sum = 0;    
    for(i = 1;i <= N;i++)    
    {
        //判断符号
        if(i % 2 == 0)        
        {
            m = -1;
        }
        else
        {
            m = 1;
        }        
        sum += 1.0*m/j;
        j += 3;
    }
        printf("sum = %0.3lf", sum);
    return 0 ;
}
发布了25 篇原创文章 · 获赞 3 · 访问量 240

猜你喜欢

转载自blog.csdn.net/oxygen_ls/article/details/105344450