1.1有規(guī)律數據求和
常見的數據求和分為對一組有規(guī)律數據的求和與對若干個無規(guī)律的離散數據求和兩種。
有規(guī)律的一組數據通??梢詫懗鏊牡趇項的通項式f(i),在設置的求和i循環(huán)中,使用賦值語句s=s+f(i),把f(i)累加到s中,即可簡便實現求和。
1.1.1 整數求和
求:s=1.2.3+3.4.5+...+99.100.101
易知通項f(i)=i*(i+1)*(i+2),i=1,3,...,99。于是可簡單地由以下程序實現求和:
#include
void main()
{
int i,s;
s=0;
for(i=1;i<=99;i+=2)
s=s+i*(i+1)*(i+2);
printf("1*2*3+3*4*5+...+99*100*101=%d",s);
}
程序運行結果:
1*2*3+3*4*5+...+99*100*101=13002450
注:對于這一求和問題,可把通項式改為f(i)=(i-1)*i(i+1), i=2,4,...,100。
于是,求和程序可以改寫為:
#include
void main()
{
int i,s;
s=0;
for(i=2;i<=100;i+=2)
s=s+(i-1)*i*(i+1);
printf("1*2*3+3*4*5+...+99*100*101=%d",s);
}
運行結果與上完全相同。
可見,求解一個問題,程序設計是靈活的,是可以變通的。程序設計的變通比較是提高程序設計能力的一個有效辦法。
常見的數據求和分為對一組有規(guī)律數據的求和與對若干個無規(guī)律的離散數據求和兩種。
有規(guī)律的一組數據通??梢詫懗鏊牡趇項的通項式f(i),在設置的求和i循環(huán)中,使用賦值語句s=s+f(i),把f(i)累加到s中,即可簡便實現求和。
1.1.1 整數求和
求:s=1.2.3+3.4.5+...+99.100.101
易知通項f(i)=i*(i+1)*(i+2),i=1,3,...,99。于是可簡單地由以下程序實現求和:
#include
void main()
{
int i,s;
s=0;
for(i=1;i<=99;i+=2)
s=s+i*(i+1)*(i+2);
printf("1*2*3+3*4*5+...+99*100*101=%d",s);
}
程序運行結果:
1*2*3+3*4*5+...+99*100*101=13002450
注:對于這一求和問題,可把通項式改為f(i)=(i-1)*i(i+1), i=2,4,...,100。
于是,求和程序可以改寫為:
#include
void main()
{
int i,s;
s=0;
for(i=2;i<=100;i+=2)
s=s+(i-1)*i*(i+1);
printf("1*2*3+3*4*5+...+99*100*101=%d",s);
}
運行結果與上完全相同。
可見,求解一個問題,程序設計是靈活的,是可以變通的。程序設計的變通比較是提高程序設計能力的一個有效辦法。