C趣味程序(二)(01)整數(shù)求和

字號(hào):

1.1有規(guī)律數(shù)據(jù)求和
     常見(jiàn)的數(shù)據(jù)求和分為對(duì)一組有規(guī)律數(shù)據(jù)的求和與對(duì)若干個(gè)無(wú)規(guī)律的離散數(shù)據(jù)求和兩種。
     有規(guī)律的一組數(shù)據(jù)通常可以寫出它的第i項(xiàng)的通項(xiàng)式f(i),在設(shè)置的求和i循環(huán)中,使用賦值語(yǔ)句s=s+f(i),把f(i)累加到s中,即可簡(jiǎn)便實(shí)現(xiàn)求和。
    1.1.1 整數(shù)求和
     求:s=1.2.3+3.4.5+...+99.100.101
     易知通項(xiàng)f(i)=i*(i+1)*(i+2),i=1,3,...,99。于是可簡(jiǎn)單地由以下程序?qū)崿F(xiàn)求和:
    #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);
    }
    程序運(yùn)行結(jié)果:
    1*2*3+3*4*5+...+99*100*101=13002450
    注:對(duì)于這一求和問(wèn)題,可把通項(xiàng)式改為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);
    }
    運(yùn)行結(jié)果與上完全相同。
    可見(jiàn),求解一個(gè)問(wèn)題,程序設(shè)計(jì)是靈活的,是可以變通的。程序設(shè)計(jì)的變通比較是提高程序設(shè)計(jì)能力的一個(gè)有效辦法。