C循環(huán)控制結(jié)構(gòu)實(shí)用_第1頁(yè)
C循環(huán)控制結(jié)構(gòu)實(shí)用_第2頁(yè)
C循環(huán)控制結(jié)構(gòu)實(shí)用_第3頁(yè)
C循環(huán)控制結(jié)構(gòu)實(shí)用_第4頁(yè)
C循環(huán)控制結(jié)構(gòu)實(shí)用_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

會(huì)計(jì)學(xué)1C循環(huán)控制結(jié)構(gòu)實(shí)用解2、while循環(huán)控制結(jié)構(gòu)(當(dāng)型循環(huán))解3、do~while循環(huán)控制結(jié)構(gòu)(直到循環(huán))

sn=0;i=1; for(i=0;i<=n;i++)sn=sn+i;

Readn0→sn,i當(dāng)++i=1~n循環(huán)sn+i→snWritesnReadn1→sn,isn+i→sn++i(1~n),直到i>n終止Writesn解1、for循環(huán)控制結(jié)構(gòu)

sn=0;i=1; while(i<=n){sn=sn+i;i++;}

sn=0;i=1; do{sn=sn+i;i++;}while(i<=n);第1頁(yè)/共18頁(yè)1、for循環(huán)結(jié)構(gòu)for(初始化表達(dá)式;終限條件表達(dá)式;步長(zhǎng)表達(dá)式)

{s1;s2;

[continue;] ………;

[break;]

sn;

}

特點(diǎn):初始化表達(dá)式只執(zhí)行一次;循環(huán)體執(zhí)行次數(shù)≧0

;適合循環(huán)次數(shù)已知的精確迭代算法。C的循環(huán)結(jié)構(gòu)第2頁(yè)/共18頁(yè)2、while循環(huán)結(jié)構(gòu)

while(條件表達(dá)式)

{s1;s2;……;

[continue;] //短路語(yǔ)句

………;

[break;] //開(kāi)路語(yǔ)句

si;sn;

}特點(diǎn):條件表達(dá)式被多次執(zhí)行;循環(huán)體執(zhí)行次數(shù)≧0;循環(huán)體中至少含有修正條件表達(dá)式的語(yǔ)句;適合循環(huán)次數(shù)未知的非精確迭代算法。第3頁(yè)/共18頁(yè)3、do~while循環(huán)結(jié)構(gòu)

do

{s1;s2;

[continue;]

//短路語(yǔ)句

………;

[break;]

//開(kāi)路語(yǔ)句

si;sn;

}while(條件表達(dá)式);

特點(diǎn):條件表達(dá)式被多次執(zhí)行;循環(huán)體執(zhí)行次數(shù)≧1

;循環(huán)體中至少含有修正條件表達(dá)式的語(yǔ)句;適合循環(huán)次數(shù)未知的非精確迭代算法。第4頁(yè)/共18頁(yè)Fact(n)nn!main()結(jié)構(gòu)設(shè)計(jì)

方案一:一個(gè)main函數(shù)方案二:多個(gè)函數(shù)例1:求1!+2!+3!+……+n!程序編碼?如何求item!—逐步擴(kuò)展:設(shè)累積變量:fn=1;設(shè)記數(shù)變量:i=1;

循環(huán)

(當(dāng)i=1~item):

fn*i→fn;

i++;算法設(shè)計(jì)(自頂而下)

輸入n;

循環(huán)(item=1~n):

sum=sum+item!

;輸出sum;算法優(yōu)化:輸入n;初始準(zhǔn)備fn=1,sum=0;循環(huán)(item=1~n):

{fn=fn*item;

sum=sum+fn;}

輸出sum;第5頁(yè)/共18頁(yè)Fact(n)nn!main()//方案一:一個(gè)main函數(shù)#include<iostream.h>voidmain(void){longsum=0,fn=1;intn,item;cin>>n;for(item=1;item<=n;item++)

{fn=fn*item;sum=sum+fn;}cout<<“sum=”<<sum<<endl;

}例1:求1!+2!+3!+……+n!初始準(zhǔn)備fn=1,sum=0;輸入n;循環(huán)(item=1~n):

fn=fn*item;sum=sum+fn;輸出sum;//方案二:多個(gè)函數(shù)#include<iostream.h>voidmain(void){longsum=0,fn=1;intn,item;cin>>n;for(item=1;item<=n;item++)sum=sum+fact(item);cout<<“sum=“<<sum<<endl;}longfact(intn){longfn,i;for(i=1;i<=n;i++)fn=fn*i;returnfn;}

longfact(intn);//聲明第6頁(yè)/共18頁(yè)例2:牛頓迭代法求方程f(x)=0在x0附近的解。算法設(shè)計(jì)

x*是需要求的精確解, 設(shè)x0是x*附近的近似解, 有:f’(x0)=f(x0)/(x0-x1)yX*xx2x1x0f(x)0

則:

x1=

x0-f(x0)/f’(x0) |x0-x1|>??

x1→x0非精確迭代直到型循環(huán)?當(dāng)型循環(huán):第7頁(yè)/共18頁(yè)例:求2x3-4x2+3x-6=0在1.5附近的根。結(jié)構(gòu)設(shè)計(jì)方案一:main()方案二:main(),fx(x),fxd(x)x0f’(x0)main()fx(x0)fxd(x0)f’(x0)x0x0xmain()x0f’(x0)ndsolve(x0)fx(x0)fxd(x0)f’(x0)x0方案三:main(),ndsolve(x),fx(x),fxd(x)

(在函數(shù)與指針中討論)第8頁(yè)/共18頁(yè)程序編碼(求2x3-4x2+3x-6=0在1.5附近的根)#include<iostream.h>voidmain(void){doublex0=1.5,x1=0;while(fabs(x0-x1)>0.001)

{x0=x1;

x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3);

}cout<<“x=“<<x1<<endl;

}doublefx(doublex){doubley;y=2*x*x*x-4*x*x+3*x-6;return(y);}doublefxd(doublex){return(6*x*x-8*x+3);}

x1=x0-fx(x0)/fxd(x0);

doublefx(doublex);//函數(shù)聲明

doublefxd(double);x0f’(x0)main()fx(x0)fxd(x0)f(x0)x0第9頁(yè)/共18頁(yè)例3:用二分法求f(x)=0在(x1,x2)上的解。算法設(shè)計(jì)

f(x1)、f(x2)符號(hào)相反,則f(x)在(x1,x2)上至少有一個(gè)根x*。取(x1,x2)中點(diǎn)x=(x1-x2)/2,如果f(x)與f(x1)同號(hào),則x→x1;否則x→x2,|x1-x2|>??f(x)yX*x10x2x如何判斷f(x)與f(x1)同號(hào):

f(x)*f(x1)>0則同號(hào),否則異號(hào)。結(jié)構(gòu)設(shè)計(jì):main()或main()、fx(x)

第10頁(yè)/共18頁(yè)#include<?>voidmain(void){doublex1=-10,x2=10;while(fabs(x1-x2)>0.001)

{x=(x1+x2)*0.5;

if(f(x)*f(x1)>0)x1=x;elsex2=x;

}cout<<“x=“<<x<<endl;

}doublef(doublex){

return(

2*x*x*x-4*x*x+3x-6);}

doublef(doublex);//函數(shù)聲明例:求2x3-4x2+3x-6=0在(-10,10)之間的根。第11頁(yè)/共18頁(yè)例4:求第n項(xiàng)Fibonacci數(shù)列買(mǎi)1對(duì)兔,第3個(gè)月開(kāi)始每月都生1對(duì),1年幾何?結(jié)構(gòu)設(shè)計(jì):一個(gè)主函數(shù)實(shí)現(xiàn)

令:fib1=fib2=1

循環(huán)執(zhí)行(按月計(jì)數(shù)i:3~12): {fib1+fib2→fib;

fib2→fib1;

fib→fib2;}

fib即為所求。算法設(shè)計(jì) 月份:1月2月

3月

4月

5月

兔對(duì):1 1 2(1+1)

3(2+1)

5(3+2)第12頁(yè)/共18頁(yè)#include<iostream.h>或#include<iostream>usingnamespacestd;voidmain(void){intfib1=1,fib2=1,fib;inti,n;cout<<“n=?”;cin>>n;for(i=3;i<=n;i++)

{

fib=fib1+fib2;

fib1=fib2;

fib2=fib;

}cout<<endl<<“fib=”<<fib<<‘\n’;cout<<endl;}

令:fib1=fib2=1

循環(huán)執(zhí)行(按月計(jì)數(shù)i:3~12): {fib1+fib2→fib;

fib2→fib1;

fib→fib2;}

fib即為所求。如何輸出1~12的fib數(shù)呢?

cout<<f1<<‘\t’<<f2;

cout<<‘\t’<<fib<<endl;程序編碼如下:第13頁(yè)/共18頁(yè)例5:找出100~200以?xún)?nèi)的全部素?cái)?shù)。如果m是素?cái)?shù),則m不能被任何數(shù)n整除(n=2~m/2)。prime(n)n1/0main()算法設(shè)計(jì)

循環(huán)執(zhí)行(m=100~200)

循環(huán)執(zhí)行(n=2~n/2)m%n=0?程序編碼?結(jié)構(gòu)設(shè)計(jì)

方案一:僅main()實(shí)現(xiàn)方案二:main()、prime(n)//方案一:僅main()實(shí)現(xiàn)#Include<?>voidmain(void){intm,n;for(m=100;m<=200;m++)

{for(n=2;n<=m/2;n++)

{

if(m%n==0)break;}if(n>m/2)cout<<m<<‘\t’;

}}第14頁(yè)/共18頁(yè)prime(n)n1/0main()//方案二:main()、prime(n)#Include<?>voidmain(void){intm,n;for(m=100;m<=200;m++)

{

}}函數(shù)聲明:擴(kuò)展函數(shù)作用域!

intprime(intk);或

intprime(int);intprime(intk)//boolprime(intk)

{intn;for(n=2;n<=k/2;n++)

if(k%n==0)return0;//returnfalsereturn1;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論