练习2-14 求奇数分之一序列前N项和

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}

测试结果:

猜你喜欢

转载自blog.csdn.net/melody_1016/article/details/82318202