【正文】
,理性思維、抽象認(rèn)識(shí)能力還很薄弱,因此教學(xué)中選擇學(xué)生熟悉的,易懂的實(shí)例引入,通過對(duì)例子的分析,使學(xué)生逐步經(jīng)歷循環(huán)結(jié)構(gòu)設(shè)計(jì)的全過程,學(xué)會(huì)有條理的思考問題,表達(dá)循環(huán)結(jié)構(gòu),并整理成程序框圖.三、教法分析鑒于本節(jié)課抽象程度較高,循序漸進(jìn)的思路,:你能在社會(huì)生活和學(xué)習(xí)中舉出循環(huán)現(xiàn)象的例子嗎?你能從循環(huán)現(xiàn)象抽象出循環(huán)結(jié)構(gòu)概念嗎?1n n s s n =?中的S n 和S n1能否用一個(gè)量表示?如何表達(dá)2,3,100n =?算法中s s i =?與1i i =+ “等號(hào)”與“變量”的涵義等同于數(shù)學(xué)中的相應(yīng)涵義嗎?循環(huán)結(jié)構(gòu)是通過哪些量和式將一個(gè)很長的順序結(jié)構(gòu)簡(jiǎn)化為一個(gè)精簡(jiǎn)的結(jié)構(gòu)?當(dāng)型循環(huán)結(jié)構(gòu)與直到型循環(huán)結(jié)構(gòu)框有何不同?如何轉(zhuǎn)化?通過以上問題的解決使學(xué)生有效地掌握本節(jié)課的內(nèi)容。第五篇:while循環(huán)結(jié)構(gòu)例題引子include “” main(){ int i=1。for(i=1。i題型1 輸入輸出多個(gè)數(shù)據(jù)eg輸出1~10000之間所有的整數(shù) include “” main(){ int i=1。while(ii++。} } 拓展:換成所有的奇數(shù)換成所有的偶數(shù)題型2 有限個(gè)數(shù)連加和連乘 、求1+2+3+4+………+100的值 include “” main(){ int i=1,s=0。while(i求1+2+3+4+………+n的值求12+22+32+………+n2的值求1+1/2+1/3+………+1/n的值 、求n!的值 include “” main(){ int i=1,n,p=1。scanf(“%d”,amp。n)。while(is=s+p。i++。} printf(“%dn”,s)。}題型3 無限個(gè)數(shù)連加eg求11/3+1/51/7+………的近似值,要求精度要達(dá)到10include “” include “” main(){ float n=1,s=0,f=1,t=1。while(fabs(t)=1e4){t=f/(2*n1)。s=s+t。f=f。n++。} printf(“%fn”,s)。}拓展:求11/2+1/41/6+………的近似值,要求精度要達(dá)到104題型4 統(tǒng)計(jì)、輸入20個(gè)數(shù),統(tǒng)計(jì)其中正數(shù)、負(fù)數(shù)和零的個(gè)數(shù)。include “” main(){ int i=1,n,p,z。float x。p=n=z=0。while(i{ scanf(“%f”,amp。x)。if(x0)p++。elseif(xn++。elsez++。i++。} printf(“%dt%dt %dn”,p,n,z)。} 拓展:統(tǒng)計(jì)各類字符的個(gè)數(shù) 個(gè)位為6且能被3整除的五位數(shù)有多少? 方法1 include “” main(){ long i=10000,c=0。while(i{if((i%3==0)amp。amp。(i%10==6))c++。i++。} printf(“%d n”,c)。}方法2 include “” main(){ long i=10006,c=0。while(i{if(i%3==0)c++。i=i+10。} printf(“%d n”,c)。} 題型5 數(shù)列eg5 輸出fibo數(shù)列的第20位數(shù)字 include “” main(){ int f1=1,f2=1, f3,i=3。while(i{ f3=f1+f2。f1=f2。f2=f3。i++。} printf(“%d n”,f3)。} 拓展:輸出fibo數(shù)列前20位數(shù)字 include “” main(){ int f1=1,f2=1, f3,i=3。printf(“%d t%d t”,f1,f2)。while(i{ f3=f1+f2。f1=f2。f2=f3。printf(“%d t”,f3)。i++。} }題型6 數(shù)據(jù)的逆序輸出eg6 任意給定一個(gè)正整數(shù),個(gè)位數(shù)字逆序輸出。include “” main(){ long x,t。scanf(“%ld”,amp。x)。while(x!=0){ t=x%10。x=x/10。printf(“%d”,t)。} }題型7 公約數(shù)與公倍數(shù)eg7 任意輸入兩個(gè)正整數(shù),求其最大公約數(shù)和最小公倍數(shù)。include “” main(){ int m,n,a,b,r,t。scanf(“%d%d”,amp。m, amp。n)。if(mn){a=m。b=n。}else {a=n。b=m。} while(b!=0){ r=a%b。a=b。b=r。} printf(“zuida gongyushu shi:%dn”,a)。printf(“zuixiao gongbeishu shi:%dn”,m*n/a)。}題型8 素?cái)?shù)問題eg8 從鍵盤上任意輸入一個(gè)正整數(shù),判斷其是否為素?cái)?shù)。include “” main(){ int x,i=2。scanf(“%d”,amp。x)。while(x%i!=0)i++。if(x==i)printf(“shi!”)。else printf(“fou!”)。} 題型9 高次方程的根 用二分迭代法求解方程32y=2x4x+3x6=0在(10,10)之間的根,要求5精度10include “” include “” main(){ float x1=10,x2=10,x, y ,y1。x=(x1+x2)/2。y=2*x*x*x4*x*x+3*x6。while(fabs(y)1e5){ y1=2*x1*x1*x14*x1*x1+3*x16。if(y*y10)x1=x。elsex2=x。x=(x1+x2)/2。y=2*x*x*x4*x*x+3*x6。} printf(“the root is %fn”,x)。} 用牛頓迭代法求解方程2x3+ 254x7x6=0在x=,要求精度10 include “” include “” main(){ float x,x0, y ,y1。x=。while(fabs(xx0)1e5){ x0=x。y=2*x0*x0*x0+4*x0*x07*x06。y1=6*x0*x0+8*x07。x=x0y/y1。} printf(“the root is %fn”,x)。}牛頓迭代公式:xn+1=xnf(xn)/f’(xn)dowhile循環(huán)結(jié)構(gòu)舉例 include “” main(){ int i=1,s=0。do {s=s+i。i++。} while(i{ f3=f1+f2。f1=f2。f2=f3。printf(“,%d”,f3)。} } f3 include “” main(){ int i。float a,max。scanf(“%f ”,