版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、程序設(shè)計(jì)舉例,B,A,NS圖,傳統(tǒng)流程圖,順序結(jié)構(gòu),B,A,B,N,如果 成績60 那么 通知補(bǔ)考 否則 告知你考試成績,A,Y,條 件P,分支結(jié)構(gòu)(選擇結(jié)構(gòu)),條 件P,A,當(dāng)型循環(huán),直到型循環(huán),真,假,假,條 件P,A,假,真,循環(huán)結(jié)構(gòu),當(dāng)型循環(huán),循環(huán)結(jié)構(gòu),直到型循環(huán),循環(huán)結(jié)構(gòu),復(fù)合語句,括住的若干條語句構(gòu)成一個(gè)復(fù)合語句 語句塊內(nèi)可以定義變量 變量僅在定義它的復(fù)合語句內(nèi)有效 變量必須在復(fù)合語句的開頭定義 復(fù)合語句可以用在任何可以使用語句的地方,if-else,選擇結(jié)構(gòu)的一種最常用形式 if (表達(dá)式)語句1;else語句2;語句3 表達(dá)式值非0時(shí),執(zhí)行語句1,然后語句3;表達(dá)式值為0時(shí),執(zhí)
2、行語句2,然后語句3 else部分可以沒有。 if (表達(dá)式)語句1;語句3 當(dāng)表達(dá)式值為0時(shí),直接執(zhí)行語句3 if-else嵌套使用時(shí),注意else和誰配對的問題,else-if,if的一種擴(kuò)展形式 if (表達(dá)式) 語句1;else if (表達(dá)式)語句2;else if (表達(dá)式)語句3;else語句4;語句5; else部分可以沒有,現(xiàn)場編程完成例4.5,體型判斷。按“體指數(shù)”對肥胖程度進(jìn)行劃分: 體指數(shù)t = 體重w / (身高h(yuǎn))2 (w 單位為公斤,h單位為米) 當(dāng)t = 27時(shí),為肥胖。 編程從鍵盤輸入你的身高h(yuǎn)和體重w,根據(jù)給定公式計(jì)算體指數(shù)t,然后判斷你的體重屬于何種類型。
3、 用3種方法編程: 算法1:用不帶else子句的if語句編程 算法2:用在if子句中嵌入if 語句的形式編程 算法3:用在else子句中嵌入if 語句的形式編程,switch,多路選擇 switch (表達(dá)式) case 常數(shù)1: 語句序列1;case 常數(shù)2: 語句序列2;default: 語句序列3; default可以沒有,但最好不省略 不要忘記break,現(xiàn)場編程完成計(jì)算器程序例4.8,編程設(shè)計(jì)一個(gè)簡單的計(jì)算器程序,要求根據(jù)用戶從鍵盤輸入的表達(dá)式: 操作數(shù)1 運(yùn)算符op 操作數(shù)2 然后,計(jì)算表達(dá)式的值,指定的運(yùn)算符為加(+)、減(-)、乘(*)、除(/),循環(huán)while,for,whi
4、le (表達(dá)式) 語句; for (表達(dá)式1; 表達(dá)式2; 表達(dá)式3) 語句; ,while,while (表達(dá)式) 語句; 只要表達(dá)式的值為非0,就重復(fù)執(zhí)行語句,直到表達(dá)式值為0時(shí)止,for,for (表達(dá)式1; 表達(dá)式2; 表達(dá)式3) 語句; 首先執(zhí)行表達(dá)式1。如果表達(dá)式2的值為非0,就重復(fù)執(zhí)行語句和表達(dá)式3,直到表達(dá)式2的值為0時(shí)止 相當(dāng)于:表達(dá)式1; while (表達(dá)式2) 語句;表達(dá)式3; 表達(dá)式1和表達(dá)式3可以沒有或者是用逗號分隔的多個(gè)表達(dá)式的組合。但最好不要有太多的表達(dá)式組合,注意,在for和while語句之后一般沒有分號 有分號表示循環(huán)體就是分號之前的內(nèi)容(空循環(huán)體) whi
5、le (i 100);i+; for (i = 0; i 100; i+);printf(%d, i); for通常有一個(gè)循環(huán)變量控制循環(huán)的次數(shù),不要在循環(huán)體內(nèi)改變這個(gè)變量,do-while,do 語句;while (表達(dá)式); 首先執(zhí)行語句,然后判斷表達(dá)式的值。如果表達(dá)式為0,繼續(xù)向下執(zhí)行,否則,再次執(zhí)行語句,再次判斷表達(dá)式的值 語句會被至少執(zhí)行一次,條 件P,A,當(dāng)型循環(huán),直到循環(huán),真,假,假,條 件P,A,假,真,假,條 件P,條 件P,A,假,當(dāng)循環(huán)條件第一次就為假時(shí),選擇三種循環(huán)的一般原則,如果循環(huán)次數(shù)已知,用for 如果循環(huán)次數(shù)未知,用while 如果循環(huán)體至少要執(zhí)行一次,用do-
6、while 這只是“一般”原則,不是“原則”,現(xiàn)場編程完成例4.6 ,例4.9,例4.6:猜數(shù)游戲:先由計(jì)算機(jī)“想”一個(gè)數(shù)請人猜,如果人猜對了,則計(jì)算機(jī)給出提示:“Right!”, 否則提示:“Wrong!”,并告訴人所猜的數(shù)是大還是小。 例4.9:先由計(jì)算機(jī)“想”一個(gè)1到100之間的數(shù)請人猜,如果人猜對了,則結(jié)束游戲,否則計(jì)算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,直到人猜對為止。計(jì)算機(jī)記錄人猜的次數(shù),以此來反映猜數(shù)者“猜”的水平。,猜數(shù)游戲用到的庫函數(shù),隨機(jī)函數(shù)rand() #include RAND_MAX在stdlib.h中定義,不大于雙字節(jié)整數(shù)的最大值32767 產(chǎn)生0,RAND_
7、MAX 之間的隨機(jī)數(shù) magic = rand(); 產(chǎn)生0,b-1 之間的隨機(jī)數(shù) magic = rand()%b; 產(chǎn)生a,a+b-1 之間的隨機(jī)數(shù) magic = rand()%b + a; 現(xiàn)場編程完成例4.6,發(fā)現(xiàn)問題,猜數(shù)游戲用到的庫函數(shù),隨機(jī)函數(shù)srand 為函數(shù)rand()設(shè)置隨機(jī)數(shù)種子來實(shí)現(xiàn)對函數(shù)rand所產(chǎn)生的偽隨機(jī)數(shù)的 “隨機(jī)化” 通過鍵入隨機(jī)數(shù)種子,產(chǎn)生0,100之間的隨機(jī)數(shù) scanf(%u, ,猜數(shù)游戲用到的庫函數(shù),隨機(jī)函數(shù)srand 為函數(shù)rand()設(shè)置隨機(jī)數(shù)種子來實(shí)現(xiàn)對函數(shù)rand所產(chǎn)生的偽隨機(jī)數(shù)的 “隨機(jī)化” 使用計(jì)算機(jī)讀取其時(shí)鐘值并把該值自動設(shè)置為隨機(jī)數(shù)種
8、子,產(chǎn)生0,100之間的隨機(jī)數(shù) 函數(shù)time()返回以秒計(jì)算的當(dāng)前時(shí)間值,該值被轉(zhuǎn)換為無符號整數(shù)并用作隨機(jī)數(shù)發(fā)生器的種子 #include srand(time(NULL); magic = rand() % 100 + 1;,死循環(huán),永遠(yuǎn)不會退出的循環(huán)為死循環(huán) for (;) while (1) do while (1) 一般情況下,要極力避免死循環(huán) 絕大多數(shù)程序不需要死循環(huán)。如果出現(xiàn),往往都是bug 時(shí)間過長的循環(huán)會造成“假死”效果,也要考慮解決,現(xiàn)場編程完成例4.11,國王的許諾。相傳國際象棋是古印度舍罕王的宰相達(dá)依爾發(fā)明的。舍罕王十分喜歡象棋,決定讓宰相自己選擇何種賞賜。 位聰明的宰相
9、指著88共64格的象棋盤說:陛下,請您賞給我一些麥子吧,就在棋盤的第一個(gè)格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盤上的64個(gè)格子,我就感恩不盡了。 舍罕王讓人扛來一袋麥子,他要兌現(xiàn)他的許諾。 國王能兌現(xiàn)他的許諾嗎?試編程計(jì)算舍罕王共要多少麥子賞賜他的宰相,這些麥子合多少立方米? (已知1立方米麥子約1.42e8粒) 總粒數(shù)為:sum=1+2+22+23+263,方法1,#define CONST 1.42e8 #include #include main() int n; double term, sum = 0; /*累加求和變量賦初值*/ for
10、 (n=1; n=64; n+) term = pow(2, n-1); /*根據(jù)累加項(xiàng)的規(guī)律計(jì)算累加項(xiàng) */ sum = sum + term; /*作累加運(yùn)算*/ printf(sum = %en, sum); /*打印總麥粒數(shù)*/ printf(volum = %en, sum/CONST);/*打印折合的總麥粒體積數(shù)*/ ,方法2,#define CONST 1.42e8 /*定義符號常量CONST值為1.42e8 */ #include main() int n; double term = 1, sum = 1; /*累乘求積、累加求和變量賦初值*/ for (n=2; n=64;
11、 n+) term = term * 2; /*根據(jù)后項(xiàng)總是前項(xiàng)的2倍計(jì)算累加項(xiàng)*/ sum = sum + term; /*作累加運(yùn)算*/ printf(sum = %en, sum); /*打印總麥粒數(shù)*/ printf(volum = %en, sum/CONST); /*打印折合的總麥粒體積數(shù)*/ ,使用嵌套的循環(huán)體時(shí),應(yīng)注意以下問題,在嵌套的各層循環(huán)體中,使用復(fù)合語句(即用一對大花括號將循環(huán)體語句括起來)保證邏輯上的正確性 內(nèi)層和外層循環(huán)控制變量不應(yīng)同名,以免造成混亂 嵌套的循環(huán)最好采用右縮進(jìn)格式書寫,以保證層次的清晰性 循環(huán)嵌套不能交叉,即在一個(gè)循環(huán)體內(nèi)必須完整的包含著另一個(gè)循環(huán),
12、合法的嵌套循環(huán),現(xiàn)場編程完成例4.14,編程輸出如下形式的乘法九九表,#include main() int m, n; for (m=1; m10; m+) printf(%4d, m); /*打印表頭*/ printf(n); for (m=1; m10; m+) printf( -); printf(n); for (m=1; m10; m+) for (n=1; n10; n+) printf(%4d, m*n); printf(n); ,現(xiàn)場編程完成例4.15,將上例輸出格式改成如下的下三角格式打印,#include main() int m, n; for (m=1; m10; m
13、+) printf(%4d, m); /*打印表頭*/ printf(n); for (m=1; m10; m+) printf( -); printf(n); for (m=1; m10; m+) for (n=1; n=m; n+) printf(%4d, m*n); printf(n); ,現(xiàn)場編程完成例4.16,馬克思手稿中有一道趣味數(shù)學(xué)題:有30個(gè)人,其中有男人、女人和小孩,在一家飯館里吃飯共花了50先令,每個(gè)男人各花3先令,每個(gè)女人各花2先令,每個(gè)小孩各花1先令,問男人、女人和小孩各有幾人? 解方程組 窮舉法,方法1:采用三重循環(huán)窮舉x,y,z的全部可能的組合,#include m
14、ain() int x,y,z; printf(Man t Women t Childernn); for (x=0; x=30; x+) for (y=0; y=30; y+) for (z=0; z=30; z+) if (x+y+z=30 ,方法2:改進(jìn)算法,#include main() int x,y,z; printf(Man t Women t Childernn); for (x=0; x=16; x+) for (y=0; y=25; y+) z = 30 x - y; if (3 * x + 2 * y + z = 50) printf(%3d t %5d t %8dn,x
15、,y,z); ,流程的轉(zhuǎn)移控制,break語句 continue語句 goto語句 return語句 標(biāo)準(zhǔn)庫函數(shù)exit(),break和continue,對for、while、do-while循環(huán)進(jìn)行內(nèi)部手術(shù) break,退出循環(huán) continue,中斷此次循環(huán)體的執(zhí)行,開始下一次 break和continue少用為妙,break和continue,標(biāo)號舉例 error: goto舉例 goto error; 一般形式 goto 語句標(biāo)號; 語句標(biāo)號: 或 語句標(biāo)號: goto 語句標(biāo)號;,goto與標(biāo)號(label),exit()函數(shù),exit(0) 作用是終止整個(gè)程序的執(zhí)行,強(qiáng)制返回操作
16、系統(tǒng) 調(diào)用該函數(shù)需要嵌入頭文件,輸入一個(gè)整數(shù),判斷它是否是素?cái)?shù),方法1,#include main() int m, i, k; printf(Please enter a number:); scanf(%d, ,Please enter a number:,6,Program is over!,No!,方法1,#include main() int m, i, k; printf(Please enter a number:); scanf(%d, ,Please enter a number:,5,Program is over!,Yes!,方法2,#include main() int m, i, k; printf(Please enter a number:); scanf(%d, ,Please
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國智能廚房秤市場營銷態(tài)勢與銷售效益預(yù)測報(bào)告
- 2024-2030年中國無鹵磷酸酯阻燃劑行業(yè)需求動態(tài)與投資前景預(yù)測報(bào)告
- 九年級下學(xué)期班主任工作計(jì)劃
- 九年級下冊歷史教學(xué)計(jì)劃
- 小班走心教學(xué)課程設(shè)計(jì)
- 萬科房地產(chǎn)集團(tuán)公司管理制度及流程
- 職業(yè)暴露應(yīng)急預(yù)案與處理流程
- 設(shè)計(jì)學(xué)校與品牌公司合作協(xié)議書
- 橋梁建設(shè)干挖法施工作業(yè)方案
- 助產(chǎn)人員培訓(xùn)與管理制度
- 工程建設(shè)監(jiān)理收費(fèi)標(biāo)準(zhǔn)(發(fā)改價(jià)格【2007】670號)
- 摩托車品牌文化營銷與品牌故事的構(gòu)建
- 2024江蘇南京大數(shù)據(jù)集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- FZT 73032-2017 針織牛仔服裝
- 企業(yè)并購與資產(chǎn)重組智慧樹知到期末考試答案2024年
- 貨物包裝承諾函
- 治療用碘131I化鈉膠囊-臨床用藥解讀
- 2024人教版五年級上冊數(shù)學(xué)期末口算題訓(xùn)練
- 2024外研版初中英語單詞表匯總(七-九年級)中考復(fù)習(xí)必背
- 安徽省合肥市包河區(qū)2023-2024學(xué)年三年級上學(xué)期期末英語試卷
- 勞動爭議調(diào)解仲裁法
評論
0/150
提交評論