版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/melody_1016/article/details/82318202
练习2-14 求奇数分之一序列前N项和(15 分)
本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
输入样例:
23
输出样例:
sum = 2.549541
分析:本题与上一题类型一样,都是累加求和问题,注意这里不能再用i<=n作为循环终止的判断条件。题目比较基础,关键点是在循环条件的控制上,两个思路-->
(1)以变量i作为循环的控制条件,计算出i的临界范围
(2)设置一个计数器cnt,每一次累加,cnt就自增1,直到到达n,循环结束
代码:(三种写法)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
//最普通for循环,以i的范围作为循环判断条件
int i = 0;
double sum = 0;
int n = 0;
scanf("%d", &n);
for (i = 1; i <=2*n-1; i += 2)
{
sum += 1.0/i;
}
printf("sum = %.6f", sum);*
//for循环,设置了计数器作为循环判断条件
int i, n;
int cnt = 0;//计数器
double sum=0;
scanf("%d", &n);
for (i = 1; cnt < n; i += 2)
{
sum += 1.0 / i;
cnt++;
}
printf("sum = %.6f", sum);
//while循环,注意i的初始值这里要为1
int i = 1;
int n = 0;
int cnt = 0;;
double sum=0;
scanf("%d", &n);
while (cnt < n)
{
sum += 1.0 / i;
cnt++;
i += 2;
}
printf("sum = %.6f", sum);
system("pause");
return 0;
}
测试结果: