1040:数列求和1~4

做数列求和问题,首先要用数学思维找到这个数列的规律,然后将解题的思路用代码表示出来,一步一步来。


题目描述:

1.输入一个整数n,输出数列1+1/3+1/5+……前n项的和。

输入:输入只有一个正整数n。

输出:结果保留2位小数,单独占一行。


2.输入一个整数n,输出数列1-1/3+1/5-……前n项的和。

输入:输入只有一个整数n。

输出:结果保留2位小数,单独占一行。


3.求1-2/3+3/5-4/7+5/9-6/11+...的前n项和,结果保留3位小数。

输入:输入正整数n(n>0)。

输出:输出一个实数,保留3位小数,单独占一行。


4.输入n和a,求a+aa+aaa+…aa…a(n个a),如当n=3,a=2时,2+22+222的结果为246。

输入:包含两个整数,n和a,含义如上述,你可以假定n和a都是小于10的非负整数。

输出:输出前n项和,单独占一行。

1.分析:第一题的分子部分都是1,分母部分从1开始,每一项分母值增加2(即项数乘以2减1)      1  3  5  7...


程序代码:

#include
int main()
{
	int n;
	scanf("%d",&n);//输入要计算的项数
	
	double b,c,sum=0;//b代表分母部分,c用来表示每一项的值,sum计算和
	for(int i=1;i<=n;i++){
		b=2*i-1;//b满足项数乘以2减1
		c=1.0/b;//c为b分之1
		sum=sum+c;//求和
	}
	printf("%.2lf",sum);//最后输出总值sum,结果保留两位小数
	return 0;
}

运行结果:

1040:数列求和1~4_第1张图片

2.分析:第二题和第一题的区别就是奇数项为正,偶数项为负,所以只需再添加一步,我们可以利用pow(-1,i+1)来实现,其中i为项数,即c=pow(-1,i+1)*1.0/b;


程序代码:

#include
#include
int main()
{
	int n,b;//n代表要求和的项数,b代表分母
	double c,sum=0;//c表示每一项的值,sum求和
	scanf("%d",&n);//输入n的值
	for(int i=1;i<=n;i++){
		b=2*i-1;//计算分母
		c=pow(-1,i+1)*1.0/b;//计算该项的值
		sum=sum+c;//求和
	}
	printf("%.2lf",sum);//输出sum的值,结果保留两位小数
	return 0;
}

运行结果:

1040:数列求和1~4_第2张图片

3.分析:第三题与第二题的不同是分子部分不在是1了,分子从1开始每一项依次加1        1 2 3 4 5...

我们只需再定义一个变量用来表示分子即可。


程序代码:

#include
#include
int main()
{
	int n,b,m=1;//n为需要求和的项数,b为分母,m为分子
	double c,sum=0;//c表示每一项的值,sum求和
	scanf("%d",&n);//输入项数n
	
	for(int i=1;i<=n;i++){
		b=2*i-1;//计算分母
		c=pow(-1,i+1)*m/b*1.0;//计算项数
		sum=sum+c;//求和
		m++;//m的值加1
	}
	printf("%.3lf",sum);//输出和,结果保留三位小数
	return 0;
}

运行结果:

1040:数列求和1~4_第3张图片

4.分析:第一个数为a,第二个数为aa,第三个数为aaa...,我们可以利用循环,每执行一次循环,项数乘以10再加上a

例如:2   (2*10+2=22) (22*10+2=222)(222*10+2=2222)

方法2:也可以用函数pow(10,i),i为该项的项数

例如:a*pow(10,i)

我们本道题利用方法2来求解


程序代码:

#include
#include
int main(){
	int n,a,c,num=0,sum=0;//n为项数,num为每一项的值,sum求和
	scanf("%d%d",&n,&a);
	for(int i=0;i

运行结果:

1040:数列求和1~4_第4张图片

你可能感兴趣的:(算法,c语言)