1. 程式人生 > >利用迴圈求數列的和

利用迴圈求數列的和

<1>1+2+3+4+……+100之和

方法一:

#include<stdio.h>
int main(void)
{
	int i,sum=0;
	for(i=1;i<=100;i++)
		sum+=i;
	printf("sum=%d\n",sum); 
} 
方法二:
#include<stdio.h>
int main(void)
{
	int i,sum=0;
	while(i<=100)
	{
		sum+=i;
		i++;
	}
	printf("sum=%d\n",sum); 
}

方法三:
#include<stdio.h>
int main(void)
{
	int i,sum=0;
	do
	{
		sum+=i;
		i++; 
	}while(i<=100);
	printf("sum=%d\n",sum); 
} 
方法四:(直接輸出,可以用數學方法就不用程式碼
#include<stdio.h>
int main(void)
{
	int sum=0;
	printf("sum=%d\n",100+100*99/2); 
}
等差數列前n項求和

<2>1+1/2+1/3+……+1/100之和

#include<stdio.h>
int main(void)
{
	int i;
	double sum=0;
	for(i=1;i<=100;i++)
		sum+=1.0/i;
	printf("sum=%lf\n",sum); 
} 
<3>1+1/2-1/3+1/4-1/5……+1/100之和
#include<stdio.h>
int main(void)
{
	int i,f=1;
	double sum=0;
	for(i=2;i<100;i++)
	{
		sum+=1.0/i*f;
		f=-f;
	}
	printf("sum=%lf\n",sum); 
} 

<4>1-1/2+1/3-1/4+1/5……-1/100之和

#include<stdio.h>
int main(void)
{
	int i,f=-1;
	double sum=0;
	for(i=2;i<100;i++)
	{
		sum+=1.0/i*f;
		f=-f;
	}
	printf("sum=%lf\n",sum); 
} 

<5>1+1/(1+2)+1/(1+2+3)+1/(1+2+3+4)……-1/(1+2+3……+100)之和
#include<stdio.h>
int main(void)
{
	int i,t=0;
	double sum=0;
	for(i=2;i<100;i++)
	{
		t+=i;
		sum+=1.0/t;
	}
	printf("sum=%lf\n",sum); 
} 

<6>用泰勒級數計算e的近似值,直到最後一項不大於10^-6結束。(e=1+1/1!+1/2!+1/3!+……+1/n!)
#include<stdio.h>
int main(void)
{
	int i=1,t=1;
	double sum=1;
	while(1.0/t>=1e-6)
	{
		t=t*i;
		sum+=1.0/t;
		i++;
	}
	printf("e=%lf\n",sum); 
} 

<7>計算π/4≈1-1/3+1/5-1/7+……,求π的近似值。
#include<stdio.h>
int main(void)
{
	int i=1,f=1;
	double pi=0;
	while(1.0/i>=1e-6)
	{ 
		pi+=1.0/i*f;
		i+=2;
		f=-f;
	} 
	printf("π=%lf\n",pi*4); 
}

<8>計算3/2+5/3+8/5……前二十項和。

#include<stdio.h>
int main(void)
{
	int i; 
	double sum=0,a=2,b=3,t;
	for(i=0;i<20;i++)
	{ 
		sum+=b/a;
		t=b;
		b=a+b;
		a=t;
	} 
	printf("sum=%lf\n",sum); 
} 

<9>計算a+aa+aaa+aaaa+……+aaa……aaa(n個a)。求a=2時前六項之和。
#include<stdio.h>
int main(void)
{
	int i; 
	double sum=0,a=2; 
	for(i=0;i<6;i++)/*前六項*/ 
	{ 
		sum+=a;
		a=a*10+a;/*更新a*/
	} 
	printf("sum=%lf\n",sum); 
}