




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、程序設(shè)計(jì)實(shí)例 本章介紹了循環(huán)程序設(shè)計(jì)方法,講述了兩種循環(huán)程序,三種循環(huán)語句。包括前兩章講述的順序程序結(jié)構(gòu)、分支程序結(jié)構(gòu)在內(nèi),這些控制結(jié)構(gòu)內(nèi)的語句部分都允許任意形式的語句。這些控制結(jié)構(gòu)之間可以互相嵌套,而且這種嵌套沒有層次限制。比如,if語句內(nèi)可以包含循環(huán)語句,循環(huán)語句內(nèi)又可以繼續(xù)包含if 語句,等等。 又比如,一個循環(huán)語句內(nèi)可以含有循環(huán)語句,內(nèi)層循環(huán)語句內(nèi)還可以再包含循環(huán)語句,形成所謂的多重循環(huán),等等。 【例4.12】編程序,輸出如下序列的前 50 項(xiàng)。該序列的第一項(xiàng)為 0 ; 第二項(xiàng)為 1 ; 以后的
2、奇數(shù)項(xiàng)為其前兩項(xiàng)之和;偶數(shù)項(xiàng)為其前兩項(xiàng)之差。 解1:該問題應(yīng)該一項(xiàng)一項(xiàng)的生成,生成一項(xiàng)輸出一項(xiàng)。在生成一項(xiàng)時要考慮該項(xiàng)是偶數(shù)項(xiàng)還是奇數(shù)項(xiàng);生成并輸出一項(xiàng)后,為生成下一項(xiàng)做準(zhǔn)備,應(yīng)該把后邊的項(xiàng)向前串。得如下圖4.30的PAD圖。程序如下。 #include "stdio.h" void main( ) int u,v,w,
3、k ; u=0 ; v=1 ; printf ( "%5dn%5dn",u,v); k=3 ; do if ( k%2 = 0 )
4、160; w=v-u; else w=v+u; printf ( "%12dn",w);
5、0; u=v ; v=w ; k=k+1 ; while ( k<=50 ) ; 解2:該問題生成一項(xiàng)時,可以不用分支判斷,而采用標(biāo)志單元的方法,這種方法在程序設(shè)計(jì)中是經(jīng)常使用的。用這種方法PAD圖如圖4.31。程序如下。
6、60; #include "stdio.h" void main( ) int u,v,w,k ; int flag; u=0 ; v=1 ;
7、160; printf ( "%5dn%5dn",u,v); k=3 ; flag = -1 ; do w = v + flag*u; flag
8、= -flag ; printf ( "%5dn",w); u=v ; v=w ; k=k+1 ; while ( k<=50 ) ;
9、160; 【例4.13】編程序,輸入兩個正整數(shù)u 、v ,采用歐幾里德輾轉(zhuǎn)相除算法求它們的最大公因數(shù)并輸出。 解:歐幾里德輾轉(zhuǎn)相除算法求u 、v最大公因數(shù)的計(jì)算過程是: u % v R1 v % R1 R2 R1 % R2 R3
10、; R2 % R3 R4 Rn-1 % Rn Rn+1=0到此余數(shù)Rn+1為"0",計(jì)算過程結(jié)束。Rn 為正整數(shù)u 、v的最大公因數(shù)。此計(jì)算過程用PAD描述成圖4.32。編出程序如下。
11、 #include "stdio.h" void main( ) int u,v,r ; printf("pleace input u 、v:"); scanf("%d%d",&u,%v); &
12、#160; r=v ; while ( r!=0 ) r = u%v ; u = v ; v = r ;
13、 printf ( "gcd(u,v) = %5dn"u ); 【例4.14】編程序,輸入正整數(shù)N,計(jì)算r1!+r2!+.+rn! 并輸出。其中,N=r1r2.rn 。 解:該程序是一個計(jì)算若干數(shù)據(jù)項(xiàng)之和的程序。本章已經(jīng)編寫過多個求和的程序,現(xiàn)在總結(jié)一下求和程序模式。所有計(jì)算和的程序都使用一個和單元,有類似圖4.33的模式。這里用后判斷條件的循環(huán),當(dāng)然也可以采用先判斷條件的循環(huán)。其中:
14、160; S是和單元; 開始進(jìn)入循環(huán)之前和單元S必須清"0"; 在循環(huán)體內(nèi),每循環(huán)一次給和單元加上一項(xiàng); 最后循環(huán)結(jié)束,和單元中的值即為所求之和。具體落實(shí)到本題,求和算法如圖4.34的PAD所示。 下邊求精圖4.32中的計(jì)算r!。階乘是一個連乘積。
15、60; r! = 1 * 2 * 3 * * r 所有計(jì)算連乘積的程序都使用一個積單元,有類似圖4.35的程序模式。這里用后判斷條件的循環(huán),當(dāng)然也可以采用先判斷條件的循環(huán)。其中: P是積單元; 開始進(jìn)入循環(huán)之前積單元P必須置"1"; 在循環(huán)體內(nèi),每循環(huán)一次向積單元乘入一項(xiàng); 最后循環(huán)結(jié)束,積單元中的值即為所求之積。具體落實(shí)到本問題計(jì)算r!
16、,得如圖4.36的PAD。 綜合圖4.34和圖4.36得圖4.37的最終算法PAD。程序如下: #include "stdio.h" void main( ) int N,S,P,u,r ; printf("pleace input N:&q
17、uot;); scanf("%d",&N); S=0 ; while ( N!=0 ) r = N%10 ; N = N/10 ;
18、60; P=1; u=1; while ( u<=r ) P=P*u ; u=u+1 ;
19、; S=S+P; printf ( "r1!+r2!+.+rn! = %5dn"S ); 【例4.15】我國古代有一道著名難題 "百錢百雞"問題
20、: "雞翁一, 值錢五; 雞母一,值錢三;雞雛三, 值錢一。百錢買百雞, 問雞翁、母、雛各幾何。" 編程序, 解該題。 解:這是一個著名的問題,也是一類典型的問題。設(shè)買x只公雞,買y只母雞,買z只雞雛,根據(jù)條件可以列出方程如下: 5x + 3y + z/3 = 100 /* 百錢 */ x + y + z = 100 /* 百雞 */只能列出這兩個方程,原題目變成求該方程組的整數(shù)解問題。三個未知數(shù),兩個方程,這是一個不定方程組。解該類問題
21、的思路是枚舉x 、y 、z的所有可能,選出滿足條件的哪些x 、y 、z組合。按這種思想,得到PAD如圖4.38。程序如下: #include "stdio.h" int x , y , z ; void main( ) for ( x = 1 ; x <= 20 ; x+ ) for ( y
22、= 1 ; y <= 33 ; y+ ) for ( z = 3 ; z <= 99 ; z=z+3 ) if ( x+y+z = 100 && 5*x+3*y+z/3 = 100 ) printf("result = %5d %5d %5dn" , x , y ,z ) ; 這是一個三重循環(huán)程序。可以省掉最內(nèi)層第三重循環(huán),用x,y直接計(jì)算z。程序如下:
23、; #include "stdio.h" int x , y , z ; void main( ) for ( x = 1 ; x <= 20 ; x+ ) for ( y = 1 ; y<= 33 ; y+ )
24、160;z = 100-x-y ; / 求雞雛數(shù)z,百雞 if ( 5*x+3*y+z/3 = 100 && z%3=0 ) / 百錢 printf("result = %5d %5d %5dn" , x , y ,z ) ;
25、160; 【例4.16】編程序,用循環(huán)語句控制打印圖4.39的字符圖形。 解:在本題目以下的分析中,以白方塊""表示空格字符。 分析該圖形一共11行,上下相對于第6行對稱。應(yīng)該先打印上半部分第一到第六行,它們的規(guī)律是一樣的;再打印下半部分第七到第十一行,它們的規(guī)律也是一樣的。得圖4.40的PAD。 打印前六行,應(yīng)該一行行的打印,用一個循環(huán)控制,得圖4.41的PAD。
26、160; 打印第x行,每行都分三段,應(yīng)該一段段的打印,得圖4.42的PAD。 打印第x行前段。首先打印字母從x到'I',然后再打印字母從'A'到x-1。每個字母的形式是:一個空格,加字母本身。得圖4.43的PAD。 打印第x行中段。分析這段特性,應(yīng)該首先打?。?-(x-'A'))*2個空格;再打印2*(x-'A')+1 組"x";再打?。?-(x-
27、39;A'))*2個空格。得圖4.44的PAD。在圖4.44的PAD中,每個框都是一個循環(huán),不再求精。 打印第x行后段。首先打印字母從x+1到'I',然后再打印字母從'A'到x,最后換行。每個字母的形式是:一個空格, 加字母本身。得圖4.45的PAD。 至此,找到了打印前六行的算法。下邊求精打印后五行。 打印后五行,也應(yīng)該一
28、行行的打印,用一個循環(huán)控制,得圖4.46的PAD。 打印后五行的第x行與打印前六行的第x行的算法是一樣的,可以完全使用上述算法。 至此,找到了打印圖4.39字符圖形的全部算法,綜合上述圖4.40到4.46得圖4.47。編出程序如下。 #include "stdio.h" char x , y ;
29、160; int i ; void main( ) for ( x='A'x<='F'x+) / 前六行 for ( y=x; y<='I'y+) printf ( "%c", y); / 打印第x行前段 for ( y='A' y<x; y+) printf ( "
30、%c", y); for( i=1;i<=(5-(x-'A'))*2); i+) printf ( ""); / 打印第x行中段 for( i=1;i<=2*(x-'A')+1;i+) printf ( "%c", x); for( i=1;i<=(5-(x-'A'))*2); i+) printf ( ""); for ( y=x+1; y<='I'y+) printf ( "%c", y); / 打印第x行后段 for ( y='A' y<=x;y+) printf ( "%c", y); printf ( &quo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧教育時代的學(xué)生成功密碼揭秘
- 個性化教學(xué)方案助力提升學(xué)習(xí)效果的研究報告
- 教育政策背景下教師課題研究的趨勢與挑戰(zhàn)
- 教育心理學(xué)與現(xiàn)代科技結(jié)合的激勵方法研究
- 2025年廣東輕工職業(yè)技術(shù)學(xué)院單招《職業(yè)適應(yīng)性測試》考試綜合練習(xí)含答案詳解【能力提升】
- 五年級數(shù)學(xué)(小數(shù)乘除法)計(jì)算題專項(xiàng)練習(xí)及答案匯編
- 四川省2025年下半年會計(jì)從業(yè)資格證考試《初級會計(jì)電算化》考試試卷
- 2023年度廣西制造工程職業(yè)技術(shù)學(xué)院單招《物理》預(yù)測復(fù)習(xí)(培優(yōu)B卷)附答案詳解
- 2025思政開學(xué)第一課觀后感范文13篇
- 2025年廊坊燕京職業(yè)技術(shù)學(xué)院單招《語文》考試黑鉆押題附參考答案詳解(預(yù)熱題)
- 電焊工安全培訓(xùn)(超詳)課件
- 幼兒園口算題卡100組口算練習(xí)題直接打印版
- 2024年機(jī)動車檢測站質(zhì)量手冊程序文件記錄表格合集(根據(jù)補(bǔ)充要求編制)
- 環(huán)境保護(hù)行動計(jì)劃承諾書模板
- 大規(guī)模分布式存儲系統(tǒng)架構(gòu)設(shè)計(jì)與優(yōu)化
- 2023年計(jì)量經(jīng)濟(jì)學(xué)總題庫
- 《隧道工程》課件
- 2024年醫(yī)療器械質(zhì)量檢測與控制培訓(xùn)
- 智慧樹知到《運(yùn)動生理學(xué)》章節(jié)測試答案
- 民用飛機(jī)中國市場預(yù)測年報2024-2043(中英文版)-中國航空工業(yè)集團(tuán)
- 第47屆世界技能大賽江蘇省選拔賽油漆與裝飾項(xiàng)目技術(shù)工作文件
評論
0/150
提交評論