版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、會(huì)計(jì)學(xué)1程序程序(chngx)的控制結(jié)構(gòu)的控制結(jié)構(gòu)第一頁,共81頁。2022-5-1424.1 算法的概念算法的概念(ginin)及其描及其描述述數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)+ +算法算法= =程序程序算法:為解決一個(gè)具體問題而采取的確定的有算法:為解決一個(gè)具體問題而采取的確定的有限的操作步驟。限的操作步驟。算法特性算法特性(txng)(txng):有窮性有窮性確定性確定性 有效性有效性 沒有輸入或有多個(gè)輸入沒有輸入或有多個(gè)輸入 有一個(gè)或多個(gè)輸出有一個(gè)或多個(gè)輸出 第1頁/共81頁第二頁,共81頁。2022-5-143算法算法(sun f)的分類的分類數(shù)值運(yùn)算算法:數(shù)值運(yùn)算算法:解決的是求數(shù)值解的問題解決的
2、是求數(shù)值解的問題(wnt)(wnt),例如用,例如用輾轉(zhuǎn)相除法求兩個(gè)數(shù)的最大公約數(shù)等輾轉(zhuǎn)相除法求兩個(gè)數(shù)的最大公約數(shù)等非數(shù)值運(yùn)算算法:非數(shù)值運(yùn)算算法:主要用于解決需要用分析推理、邏輯推理主要用于解決需要用分析推理、邏輯推理才能解決的問題才能解決的問題(wnt)(wnt),例如人工智能中,例如人工智能中的許多問題的許多問題(wnt)(wnt),查找、分類等問題,查找、分類等問題(wnt)(wnt)第2頁/共81頁第三頁,共81頁。2022-5-144算法算法(sun f)的描述方法的描述方法自然語言表示自然語言表示傳統(tǒng)傳統(tǒng)(chuntng)(chuntng)的流程圖表示的流程圖表示N-SN-S結(jié)構(gòu)
3、化流程圖表示結(jié)構(gòu)化流程圖表示 偽代碼表示偽代碼表示第3頁/共81頁第四頁,共81頁。2022-5-145構(gòu)成構(gòu)成(guchng)程序的三種基本程序的三種基本結(jié)構(gòu)結(jié)構(gòu)順序結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)選擇結(jié)構(gòu)(分支結(jié)構(gòu)分支結(jié)構(gòu))循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)已經(jīng)證明,任何程序均可只用這三種結(jié)構(gòu)綜合已經(jīng)證明,任何程序均可只用這三種結(jié)構(gòu)綜合(zngh)描述描述只用這三種結(jié)構(gòu)編制的程序,叫結(jié)構(gòu)化程序只用這三種結(jié)構(gòu)編制的程序,叫結(jié)構(gòu)化程序程序必須符合結(jié)構(gòu)化規(guī)則程序必須符合結(jié)構(gòu)化規(guī)則第4頁/共81頁第五頁,共81頁。2022-5-146結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)(shj)的核心思的核心思想想采用順序采用順序(shnx)、選擇和
4、循環(huán)三種基本結(jié)構(gòu)作、選擇和循環(huán)三種基本結(jié)構(gòu)作為程序設(shè)計(jì)的基本單元為程序設(shè)計(jì)的基本單元 只有一個(gè)入口;只有一個(gè)入口;只有一個(gè)出口;只有一個(gè)出口;無死語句,即不存在永遠(yuǎn)都執(zhí)行不到的語句;無死語句,即不存在永遠(yuǎn)都執(zhí)行不到的語句;無死循環(huán),即不存在永遠(yuǎn)都執(zhí)行不完的循環(huán)。無死循環(huán),即不存在永遠(yuǎn)都執(zhí)行不完的循環(huán)。采用采用“自頂向下、逐步求精自頂向下、逐步求精”和模塊化的方法進(jìn)和模塊化的方法進(jìn)行結(jié)構(gòu)化程序設(shè)計(jì)行結(jié)構(gòu)化程序設(shè)計(jì) 第5頁/共81頁第六頁,共81頁。2022-5-1474.2 順序順序(shnx)結(jié)構(gòu)結(jié)構(gòu)NS圖傳統(tǒng)傳統(tǒng)(chuntng)流程圖流程圖第6頁/共81頁第七頁,共81頁。2022-5-1
5、48順序順序(shnx)結(jié)構(gòu)結(jié)構(gòu)應(yīng)用舉例應(yīng)用舉例(1)例:設(shè)半徑例:設(shè)半徑(bnjng)為為1.5,求圓周長及面,求圓周長及面積。積。解:解:(1)問題分析)問題分析(fnx): (算法)算法) step1:給出圓的半徑:給出圓的半徑r=1.5step2:求圓的周長及面積:求圓的周長及面積step3:輸出結(jié)果:輸出結(jié)果公式:公式:圓周長圓周長=2*3.14*r圓面積圓面積=3.14*r*r第7頁/共81頁第八頁,共81頁。2022-5-149開始開始r=1.5L=2*3.14*rs=3.14*r*r 輸出輸出L,s結(jié)束結(jié)束(2)畫出流程圖畫出流程圖第8頁/共81頁第九頁,共81頁。2022-5
6、-1410# include # define PI 3.14 main() float r,l,s; r=1.5; l=2*PI*r; s=PI*r*r; printf(nl=%f,s=%f,l,s);(3)根據(jù)根據(jù)(gnj)流程圖流程圖編程編程第9頁/共81頁第十頁,共81頁。2022-5-1411順序結(jié)構(gòu)順序結(jié)構(gòu)應(yīng)用應(yīng)用(yngyng)舉舉例例(2)例例4.1 設(shè)銀行存款利率設(shè)銀行存款利率rate為為2.25%,存款期為,存款期為n年,本金年,本金(bnjn)為為captial元,編程計(jì)算元,編程計(jì)算n年年后的本利之和后的本利之和deposit解:解:(1)問題分析)問題分析(fnx):
7、 (算(算法)法) step2:給出年:給出年n、本金、本金captial(鍵盤輸入鍵盤輸入)step3:n年后本利之和年后本利之和depositstep4:輸出結(jié)果:輸出結(jié)果公式:公式:deposit=captial*(1+rate)n step1:給出存款利率:給出存款利率rate第10頁/共81頁第十一頁,共81頁。2022-5-1412開始開始rate=0.0225輸入輸入n和和captialdepoist=captial*(1+rate)n 輸出輸出depoist結(jié)束結(jié)束(2)畫出流程圖畫出流程圖第11頁/共81頁第十二頁,共81頁。2022-5-1413(3)根據(jù)根據(jù)(gnj)流程
8、圖流程圖編程編程#include #include main() int n; double rate=0.0225; double capital,deposit; printf(please enter year,capital:); scanf(%d%lf,&n,&capital); deposit=capital*pow(1+rate,n); printf(deposit=%lfn,deposit);第12頁/共81頁第十三頁,共81頁。2022-5-1414以以#開始的編譯預(yù)處理命令開始的編譯預(yù)處理命令 main()局部變量說明語句局部變量說明語句(yj); 執(zhí)行語句執(zhí)行語句(yj)
9、;簡單簡單(jindn)的的C程序結(jié)構(gòu)框程序結(jié)構(gòu)框架架第13頁/共81頁第十四頁,共81頁。2022-5-1415編譯編譯(biny)預(yù)處理命令預(yù)處理命令文件包含編譯預(yù)處理命令文件包含編譯預(yù)處理命令#include指示編指示編譯系統(tǒng)將一個(gè)源文件嵌入譯系統(tǒng)將一個(gè)源文件嵌入(qin r)到含有到含有#include指令的源文件中該指令所在的位指令的源文件中該指令所在的位置處。置處。使用使用(shyng)形式:形式:# include /頭文件名頭文件名注意:注意:以以#開頭;每條一行;不是開頭;每條一行;不是C語句語句第14頁/共81頁第十五頁,共81頁。2022-5-1416查詢查詢(chxn)
10、情況情況編譯編譯(biny)預(yù)處理命令預(yù)處理命令(1)用)用將頭文件名括起,則在將頭文件名括起,則在include 子目錄中查詢子目錄中查詢(chxn)(2)用)用 將頭文件名括起,則先在將頭文件名括起,則先在 當(dāng)前目錄中查找若無繼續(xù)搜索當(dāng)前目錄中查找若無繼續(xù)搜索 C子目錄。子目錄。第15頁/共81頁第十六頁,共81頁。2022-5-1417常用常用(chn yn)函數(shù)對應(yīng)的頭文件函數(shù)對應(yīng)的頭文件 函數(shù)函數(shù) 頭文件名頭文件名數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù) math.h 字符串函數(shù)字符串函數(shù) string.h輸入、輸出函數(shù)輸入、輸出函數(shù) stdio.h動(dòng)態(tài)存儲(chǔ)分配函數(shù)動(dòng)態(tài)存儲(chǔ)分配函數(shù) stdlib.h/mal
11、loc.h第16頁/共81頁第十七頁,共81頁。2022-5-14184.3 選擇選擇(xunz)結(jié)構(gòu)結(jié)構(gòu)作用:根據(jù)條件作用:根據(jù)條件(tiojin)控制程序流向??刂瞥绦蛄飨?。條件條件(tiojin)的組成:的組成:問題的提出:問題的提出:各種類型的常量、變量、表達(dá)式各種類型的常量、變量、表達(dá)式(常用:關(guān)系(常用:關(guān)系/邏輯表達(dá)式)邏輯表達(dá)式)注意各種表達(dá)式的用法注意各種表達(dá)式的用法第17頁/共81頁第十八頁,共81頁。2022-5-1419簡單分支選擇簡單分支選擇(xunz)(單分支(單分支)結(jié)構(gòu))結(jié)構(gòu)yesno語句語句(yj)A(yj)A條件成立否條件成立否條件表達(dá)式條件表達(dá)式.T.F.
12、語句語句格式格式(g shi): if (表達(dá)式表達(dá)式) 語句語句/語句組;語句組;第18頁/共81頁第十九頁,共81頁。2022-5-1420雙分支雙分支(fnzh)選擇結(jié)構(gòu)選擇結(jié)構(gòu)yesno程序段程序段A A程序段程序段B B條件成立否條件成立否條件表達(dá)式條件表達(dá)式.T.F.語句語句1語句語句2格式格式(g shi):If (表達(dá)式表達(dá)式) 語句語句(yj)1/語句語句(yj)組組1;else 語句語句(yj)2/語句語句(yj)組組2;第19頁/共81頁第二十頁,共81頁。2022-5-1421多分支多分支(fnzh)選擇結(jié)構(gòu)選擇結(jié)構(gòu)第20頁/共81頁第二十一頁,共81頁。2022-5-
13、1422多分支多分支(fnzh)選擇結(jié)構(gòu)選擇結(jié)構(gòu) if(表達(dá)式表達(dá)式) 語句語句(yj)1; else if (表達(dá)式表達(dá)式2)語句)語句(yj)2; : else if(表達(dá)式表達(dá)式m)語句)語句(yj)m; else 語句語句(yj)n;一般一般(ybn)形式:形式:第21頁/共81頁第二十二頁,共81頁。2022-5-1423分支分支(fnzh)嵌套嵌套 if (表達(dá)式表達(dá)式1) if (表達(dá)式表達(dá)式2)語句)語句(yj)1; else 語句語句(yj)2; else if (表達(dá)式表達(dá)式3)語句)語句(yj)3; else 語句語句(yj)4;一般一般(ybn)形式:形式:第22頁/共
14、81頁第二十三頁,共81頁。2022-5-1424使用使用(shyng) if (shyng) if 語句需注意事項(xiàng)語句需注意事項(xiàng)(1)條件判斷)條件判斷(pndun)表達(dá)式一定用圓括號括起。表達(dá)式一定用圓括號括起。(2)復(fù)合)復(fù)合(fh)語句必須用語句必須用引起。引起。(3)每一個(gè))每一個(gè)else必須與一個(gè)必須與一個(gè)if項(xiàng)匹配。項(xiàng)匹配。(4)else總是與離它最近的總是與離它最近的if 相匹配。相匹配。第23頁/共81頁第二十四頁,共81頁。2022-5-1425體型判斷體型判斷(pndun)。按。按“體指數(shù)體指數(shù)”對肥胖程度進(jìn)行劃分對肥胖程度進(jìn)行劃分:體指數(shù)體指數(shù)t = 體重體重w / (
15、身高身高h(yuǎn))2 (w 單位為公斤,單位為公斤,h單位為單位為米)米)當(dāng)當(dāng)t = 27時(shí),為肥胖。時(shí),為肥胖。編程從鍵盤輸入你的身高編程從鍵盤輸入你的身高h(yuǎn)和體重和體重w,根據(jù)給定公式計(jì)算體,根據(jù)給定公式計(jì)算體指數(shù)指數(shù)t,然后判斷,然后判斷(pndun)你的體重屬于何種類型。你的體重屬于何種類型。用用3種方法編程:種方法編程:算法算法1:用不帶:用不帶else子句的子句的if語句編程語句編程 (ex45_1)算法算法2:用在:用在if子句中嵌入子句中嵌入if 語句的形式編程語句的形式編程 (ex45_2)算法算法3:用在:用在else子句中嵌入子句中嵌入if 語句的形式編程語句的形式編程(ex4
16、5_3) 例例4.54.5第24頁/共81頁第二十五頁,共81頁。2022-5-1426例:例: 計(jì)算并輸出下列分段函數(shù)值計(jì)算并輸出下列分段函數(shù)值 y=0 x 01 x0# include main()float x,y; printf(input x:); scanf(%f,&x); y=0; if(x0) y=1; printf(y=%fn,y);第25頁/共81頁第二十六頁,共81頁。2022-5-1427用用 switch switch語句構(gòu)成的多分支語句構(gòu)成的多分支(fnzh)(fnzh)結(jié)構(gòu)結(jié)構(gòu)多路選擇多路選擇switch (表達(dá)式表達(dá)式) case 常數(shù)常數(shù)(chngsh)1:
17、語句序列語句序列1;case 常數(shù)常數(shù)(chngsh)2: 語句序列語句序列2;default: 語句序列語句序列3;default可以沒有,但最好不省略可以沒有,但最好不省略不要忘記不要忘記break第26頁/共81頁第二十七頁,共81頁。2022-5-1428例例4.84.8編程設(shè)計(jì)一個(gè)簡單的計(jì)算器程序。編程設(shè)計(jì)一個(gè)簡單的計(jì)算器程序。(ex48)要求根據(jù)要求根據(jù)(gnj)用戶從鍵盤輸入的表達(dá)式:用戶從鍵盤輸入的表達(dá)式: 操作數(shù)操作數(shù)1 運(yùn)算符運(yùn)算符op 操作數(shù)操作數(shù)2計(jì)算表達(dá)式的值,指定的運(yùn)算符為加(計(jì)算表達(dá)式的值,指定的運(yùn)算符為加(+)、減)、減(-)、乘()、乘(*)、除()、除(/)
18、 第27頁/共81頁第二十八頁,共81頁。2022-5-1429使用使用 switch switch語句語句(yj)(yj)應(yīng)應(yīng)注意注意(1)各常量表達(dá)式的值不可)各常量表達(dá)式的值不可(bk)相同。相同。(2)case 后可有多個(gè)語句后可有多個(gè)語句(yj),不用,不用括起。括起。(3)常量表達(dá)式僅是一個(gè)語句標(biāo)號。)常量表達(dá)式僅是一個(gè)語句標(biāo)號。(4)各)各case及及default子句的順序可隨意。子句的順序可隨意。(5)每個(gè)分支執(zhí)行后,利用)每個(gè)分支執(zhí)行后,利用break語句語句跳出。跳出。第28頁/共81頁第二十九頁,共81頁。2022-5-14304.4 循環(huán)循環(huán)(xnhun)結(jié)構(gòu)結(jié)構(gòu)引入
19、循環(huán)引入循環(huán)(xnhun)的目的:的目的:簡化程序簡化程序(chngx)、提高編程效率、提高編程效率三種循環(huán)方式三種循環(huán)方式當(dāng)型循環(huán)當(dāng)型循環(huán)直到型循環(huán)直到型循環(huán)步長型循環(huán)步長型循環(huán)第29頁/共81頁第三十頁,共81頁。2022-5-1431循環(huán)循環(huán)(xnhun)結(jié)構(gòu)的流程圖結(jié)構(gòu)的流程圖真真假假假真真假假假假第30頁/共81頁第三十一頁,共81頁。2022-5-1432循環(huán)循環(huán)(xnhun)語句語句while一般形式:一般形式: while (表達(dá)式表達(dá)式) 語句語句; 只要表達(dá)式的值為非只要表達(dá)式的值為非0,就重復(fù),就重復(fù)(chngf)執(zhí)行語句,直到表達(dá)式值為執(zhí)行語句,直到表達(dá)式值為0時(shí)止時(shí)止
20、先判斷,后執(zhí)行先判斷,后執(zhí)行第31頁/共81頁第三十二頁,共81頁。2022-5-1433例:找出例:找出100以內(nèi)以內(nèi)(y ni)的奇數(shù)。的奇數(shù)。 main() int I=1; while(I=100) printf(%d,I); I+=2; 注意注意(zh y):(1) while 構(gòu)成構(gòu)成(guchng)的的 是是“當(dāng)型當(dāng)型”循環(huán)。循環(huán)。(2)循環(huán)體中一定)循環(huán)體中一定 有對于循環(huán)控有對于循環(huán)控 制變量的操作。制變量的操作。 第32頁/共81頁第三十三頁,共81頁。2022-5-1434循環(huán)循環(huán)(xnhun)語句語句do - while一般形式一般形式: do 語句語句;while (
21、表達(dá)式表達(dá)式);首先執(zhí)行語句,然后首先執(zhí)行語句,然后(rnhu)判斷表達(dá)式判斷表達(dá)式的值。如果表達(dá)式為的值。如果表達(dá)式為0,繼續(xù)向下執(zhí)行,否則,繼續(xù)向下執(zhí)行,否則,再次執(zhí)行語句,再次判斷表達(dá)式的值,再次執(zhí)行語句,再次判斷表達(dá)式的值語句會(huì)被至少執(zhí)行一次語句會(huì)被至少執(zhí)行一次第33頁/共81頁第三十四頁,共81頁。2022-5-1435例:找出例:找出100以內(nèi)以內(nèi)(y ni)的奇數(shù)。的奇數(shù)。 main() int I=1; while(I=100) printf(%d,I); I+=2; main() int I=1; do printf(%d,I); I+=2; while(I=100); 第3
22、4頁/共81頁第三十五頁,共81頁。2022-5-1436循環(huán)循環(huán)(xnhun)語句語句for 一般形式一般形式(xngsh): for (表達(dá)式表達(dá)式1; 表達(dá)式表達(dá)式2; 表達(dá)式表達(dá)式3) 語句語句; 表達(dá)式表達(dá)式2執(zhí)行循環(huán)體執(zhí)行循環(huán)體計(jì)算表達(dá)式計(jì)算表達(dá)式1的值的值計(jì)算表達(dá)式計(jì)算表達(dá)式3的值的值跳出跳出(tio ch)循環(huán)循環(huán)TF工作過程:工作過程:第35頁/共81頁第三十六頁,共81頁。2022-5-1437有關(guān)有關(guān)(yugun) for 的說明的說明(1) for (表達(dá)式表達(dá)式1; 表達(dá)式表達(dá)式2; 表達(dá)式表達(dá)式3) 語句語句(yj); 相當(dāng)于:相當(dāng)于:表達(dá)式表達(dá)式1; while
23、(表達(dá)式表達(dá)式2) 語句語句(yj);表達(dá)式表達(dá)式3;第36頁/共81頁第三十七頁,共81頁。2022-5-1438在在for和和while語句之后一般語句之后一般(ybn)沒有分號沒有分號有分號表示循環(huán)體就是分號之前的內(nèi)容(空循環(huán)有分號表示循環(huán)體就是分號之前的內(nèi)容(空循環(huán)體)體)while (i 100);i+;for (i = 0; i 100; i+);printf(%d, i);for通常有一個(gè)循環(huán)變量控制循環(huán)的次數(shù),不要在通常有一個(gè)循環(huán)變量控制循環(huán)的次數(shù),不要在循環(huán)體內(nèi)改變這個(gè)變量循環(huán)體內(nèi)改變這個(gè)變量有關(guān)有關(guān)(yugun) for 的說明的說明(2)第37頁/共81頁第三十八頁,共8
24、1頁。2022-5-1439 for語句語句(yj)中的表達(dá)式中的表達(dá)式1、表達(dá)式、表達(dá)式3可為逗號表達(dá)式??蔀槎禾柋磉_(dá)式。 如如: for(i=0,j=1;jn∈i+,j+)表達(dá)式表達(dá)式1和表達(dá)式和表達(dá)式3可以沒有可以沒有(mi yu)或者是用逗號分隔的或者是用逗號分隔的多個(gè)表達(dá)式的組合。多個(gè)表達(dá)式的組合。 如如: for(; i=5 ;)有關(guān)有關(guān)(yugun) for 的說明的說明(3)第38頁/共81頁第三十九頁,共81頁。2022-5-1440 main()float x,sum; while(x!=9999) if (x0.0) sum+=x; printf(nsum=%f,s
25、um); scanf(%f,&x);scanf(%f,&x); 例例:給定一組數(shù)據(jù)如下給定一組數(shù)據(jù)如下(rxi),編程對負(fù)數(shù)求和。,編程對負(fù)數(shù)求和。12,45,67.8,-12.5,-35.67,567.89方法方法(fngf)1:用用 while第39頁/共81頁第四十頁,共81頁。2022-5-1441例例:給定一組數(shù)據(jù)如下,編程對負(fù)數(shù)給定一組數(shù)據(jù)如下,編程對負(fù)數(shù)(fsh)求和。求和。12,45,67.8,-12.5,-35.67,567.89方法方法(fngf)2:用用 for main() float x,sum=0; for(i=1;i=6;i+) if(x0.0) sum+=x;
26、scanf(%f,&x); printf(nsum=%f,sum); int i;第40頁/共81頁第四十一頁,共81頁。2022-5-1442選擇三種選擇三種(sn zhn)循環(huán)的一循環(huán)的一般原則般原則如果循環(huán)次數(shù)已知,用如果循環(huán)次數(shù)已知,用for如果循環(huán)次數(shù)未知,用如果循環(huán)次數(shù)未知,用while如果循環(huán)體至少要執(zhí)行一次,用如果循環(huán)體至少要執(zhí)行一次,用do-while這只是這只是“一般一般(ybn)”原則,不是原則,不是“原則原則”第41頁/共81頁第四十二頁,共81頁。2022-5-1443 猜數(shù)游戲:先由計(jì)算機(jī)猜數(shù)游戲:先由計(jì)算機(jī)“想想”一個(gè)數(shù)請人猜,如果一個(gè)數(shù)請人猜,如果人猜對了,則計(jì)
27、算機(jī)給出提示:人猜對了,則計(jì)算機(jī)給出提示:“Right!”, 否否則提示:則提示:“Wrong!”,并告訴,并告訴(o s)人所猜人所猜的數(shù)是大還是小。的數(shù)是大還是小。(ex46)例例4.64.6分析分析:Step1: 計(jì)算機(jī)想一個(gè)數(shù)計(jì)算機(jī)想一個(gè)數(shù);Step2:人猜一個(gè)數(shù)人猜一個(gè)數(shù);Step3:判斷三種情況并給出相應(yīng)判斷三種情況并給出相應(yīng)(xingyng)結(jié)果。結(jié)果。第42頁/共81頁第四十三頁,共81頁。2022-5-1444猜數(shù)游戲猜數(shù)游戲(yux)(yux)用到的庫函用到的庫函數(shù)(數(shù)(1 1)隨機(jī)隨機(jī)(su j)函數(shù)函數(shù)rand()#include RAND_MAX在在stdlib.h中
28、定義,不大于中定義,不大于雙字節(jié)整數(shù)的最大值雙字節(jié)整數(shù)的最大值32767 產(chǎn)生產(chǎn)生0,RAND_MAX 之間的隨機(jī)之間的隨機(jī)(su j)數(shù)數(shù)magic = rand(); 產(chǎn)生產(chǎn)生0,b-1 之間的隨機(jī)之間的隨機(jī)(su j)數(shù)數(shù)magic = rand()%b;產(chǎn)生產(chǎn)生a,a+b-1 之間的隨機(jī)之間的隨機(jī)(su j)數(shù)數(shù)magic = rand()%b + a; 第43頁/共81頁第四十四頁,共81頁。2022-5-1445 猜數(shù)游戲猜數(shù)游戲:先由計(jì)算機(jī)先由計(jì)算機(jī)“想想”一個(gè)一個(gè)(y )1到到100之間之間的數(shù)請人猜,如果人猜對了,則結(jié)束游戲,否則計(jì)的數(shù)請人猜,如果人猜對了,則結(jié)束游戲,否則計(jì)
29、算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,直到人猜對為止。計(jì)算機(jī)記錄人猜的次數(shù),以此來直到人猜對為止。計(jì)算機(jī)記錄人猜的次數(shù),以此來反映猜數(shù)者反映猜數(shù)者“猜猜”的水平。的水平。(ex49)例例4.94.9運(yùn)行程序發(fā)現(xiàn)問題運(yùn)行程序發(fā)現(xiàn)問題每次運(yùn)行程序,機(jī)器所想的數(shù)都是一樣的;每次運(yùn)行程序,機(jī)器所想的數(shù)都是一樣的;用函數(shù)用函數(shù)rand所產(chǎn)生所產(chǎn)生(chnshng)的隨機(jī)數(shù)只是偽隨機(jī)數(shù)。的隨機(jī)數(shù)只是偽隨機(jī)數(shù)。第44頁/共81頁第四十五頁,共81頁。2022-5-1446猜數(shù)游戲猜數(shù)游戲(yux)(yux)用到的庫函用到的庫函數(shù)(數(shù)(2 2)隨機(jī)隨機(jī)(su
30、j)函數(shù)函數(shù)srand為函數(shù)為函數(shù)rand()設(shè)置隨機(jī)設(shè)置隨機(jī)(su j)數(shù)種子來實(shí)現(xiàn)對函數(shù)種子來實(shí)現(xiàn)對函數(shù)數(shù)rand所產(chǎn)生的偽隨機(jī)所產(chǎn)生的偽隨機(jī)(su j)數(shù)的數(shù)的 “隨機(jī)隨機(jī)(su j)化化” 通過鍵入隨機(jī)通過鍵入隨機(jī)(su j)數(shù)種子,產(chǎn)生數(shù)種子,產(chǎn)生0,100之間的之間的隨機(jī)隨機(jī)(su j)數(shù)數(shù)scanf(%u, &seed); srand(seed); magic = rand() % 100 + 1; 改進(jìn)例改進(jìn)例4.9(ex49_1)第45頁/共81頁第四十六頁,共81頁。2022-5-1447猜數(shù)游戲猜數(shù)游戲(yux)(yux)用到的庫函用到的庫函數(shù)(數(shù)(3 3)隨機(jī)函數(shù)隨機(jī)函
31、數(shù)srand:為函數(shù)為函數(shù)rand()設(shè)置隨機(jī)數(shù)種子來設(shè)置隨機(jī)數(shù)種子來實(shí)現(xiàn)對其產(chǎn)生的偽隨機(jī)數(shù)的實(shí)現(xiàn)對其產(chǎn)生的偽隨機(jī)數(shù)的 “隨機(jī)化隨機(jī)化” 使用計(jì)算機(jī)讀取其時(shí)鐘值并把該值自動(dòng)使用計(jì)算機(jī)讀取其時(shí)鐘值并把該值自動(dòng)(zdng)設(shè)置為隨機(jī)數(shù)種子,產(chǎn)生設(shè)置為隨機(jī)數(shù)種子,產(chǎn)生0,100之間的隨機(jī)數(shù)之間的隨機(jī)數(shù)函數(shù)函數(shù)time()返回以秒計(jì)算的當(dāng)前時(shí)間值,該值被返回以秒計(jì)算的當(dāng)前時(shí)間值,該值被轉(zhuǎn)換為無符號整數(shù)并用作隨機(jī)數(shù)發(fā)生器的種子轉(zhuǎn)換為無符號整數(shù)并用作隨機(jī)數(shù)發(fā)生器的種子 #include srand(time(NULL); magic = rand() % 100 + 1; 再改進(jìn)例再改進(jìn)例4.9(ex49
32、_2)第46頁/共81頁第四十七頁,共81頁。2022-5-1448永遠(yuǎn)不會(huì)退出的循環(huán)為死循環(huán)永遠(yuǎn)不會(huì)退出的循環(huán)為死循環(huán)for (;) while (1) do while (1);一般情況下,要極力避免死循環(huán)一般情況下,要極力避免死循環(huán)絕大多數(shù)程序不需要死循環(huán)。如果出現(xiàn),往往絕大多數(shù)程序不需要死循環(huán)。如果出現(xiàn),往往(wngwng)都是都是bug時(shí)間過長的循環(huán)會(huì)造成時(shí)間過長的循環(huán)會(huì)造成“假死假死”效果,也要考慮解決效果,也要考慮解決死循環(huán)死循環(huán)第47頁/共81頁第四十八頁,共81頁。2022-5-1449例例4.11 4.11 國王國王(guwng)(guwng)的許諾的許諾相傳國際象棋是古印
33、度舍罕王的宰相達(dá)依爾發(fā)明的。舍罕王相傳國際象棋是古印度舍罕王的宰相達(dá)依爾發(fā)明的。舍罕王十分喜歡象棋,決定讓宰相自己選擇何種賞賜。十分喜歡象棋,決定讓宰相自己選擇何種賞賜。位聰明的宰相指著位聰明的宰相指著8 88 8共共6464格的象棋盤說:陛下格的象棋盤說:陛下(bxi)(bxi),請您賞給我一些麥子吧,就在棋盤的第一個(gè)格子中放請您賞給我一些麥子吧,就在棋盤的第一個(gè)格子中放1 1粒,粒,第第2 2格中放格中放2 2粒,第粒,第3 3格放格放4 4粒,以后每一格都比前一格增加一粒,以后每一格都比前一格增加一倍,依此放完棋盤上的倍,依此放完棋盤上的6464個(gè)格子,我就感恩不盡了個(gè)格子,我就感恩不盡
34、了舍罕王讓人扛來一袋麥子,他要兌現(xiàn)他的許諾。舍罕王讓人扛來一袋麥子,他要兌現(xiàn)他的許諾。 國王能兌現(xiàn)他的許諾嗎?試編程計(jì)算舍罕王共要多少麥子賞國王能兌現(xiàn)他的許諾嗎?試編程計(jì)算舍罕王共要多少麥子賞賜他的宰相,這些麥子合多少立方米?賜他的宰相,這些麥子合多少立方米? (已知(已知1 1立方米麥子約立方米麥子約1.42e81.42e8粒)粒) 總粒數(shù)為:總粒數(shù)為:sum=1+2+22+23+263 sum=1+2+22+23+263 第48頁/共81頁第四十九頁,共81頁。2022-5-1450#define CONST 1.42e8#include #include main() int n; do
35、uble term, sum = 0; /*累加求和變量賦初值累加求和變量賦初值*/ for (n=1; n=64; n+) term = pow(2, n-1); /*根據(jù)累加項(xiàng)的規(guī)律計(jì)算累加項(xiàng)根據(jù)累加項(xiàng)的規(guī)律計(jì)算累加項(xiàng) */ sum = sum + term; /*作累加運(yùn)算作累加運(yùn)算*/ printf(sum = %en, sum); /*打印總麥粒打印總麥粒(mi l)數(shù)數(shù)*/ printf(volum = %en, sum/CONST);/*打印折合的總麥粒打印折合的總麥粒(mi l)體體積數(shù)積數(shù)*/ 方法方法(fngf)1(fngf)1第49頁/共81頁第五十頁,共81頁。2022
36、-5-1451方法方法(fngf)2(fngf)2#define CONST 1.42e8 /*定義符號常量定義符號常量CONST值為值為1.42e8 */#include main() int n; double term = 1, sum = 1;/*累乘求積、累加求和變量賦初值累乘求積、累加求和變量賦初值*/ for (n=2; n=64; n+) term = term * 2; /*根據(jù)后項(xiàng)總是根據(jù)后項(xiàng)總是(zn sh)前項(xiàng)的前項(xiàng)的2倍計(jì)算倍計(jì)算累加項(xiàng)累加項(xiàng)*/ sum = sum + term; /*作累加運(yùn)算作累加運(yùn)算*/ printf(sum = %en, sum); /*打印
37、總麥粒數(shù)打印總麥粒數(shù)*/ printf(volum = %en, sum/CONST); /*打印折合的總麥粒體積數(shù)打印折合的總麥粒體積數(shù)*/ 第50頁/共81頁第五十一頁,共81頁。2022-5-1452循環(huán)循環(huán)(xnhun)(xnhun)嵌套嵌套結(jié)構(gòu)結(jié)構(gòu)(jigu)形式形式 for( ) : while( ) : do : while( );第51頁/共81頁第五十二頁,共81頁。2022-5-1453使用使用(shyng)(shyng)嵌套的循環(huán)時(shí)嵌套的循環(huán)時(shí), ,應(yīng)注意應(yīng)注意的問題的問題在嵌套的各層循環(huán)體中,使用復(fù)合語句(即用一在嵌套的各層循環(huán)體中,使用復(fù)合語句(即用一對大花括號將循環(huán)
38、體語句括起來)保證邏輯上的對大花括號將循環(huán)體語句括起來)保證邏輯上的正確性正確性 內(nèi)層和外層內(nèi)層和外層(wi cn)(wi cn)循環(huán)控制變量不應(yīng)同名,循環(huán)控制變量不應(yīng)同名,以免造成混亂以免造成混亂 嵌套的循環(huán)最好采用右縮進(jìn)格式書寫,以保證層嵌套的循環(huán)最好采用右縮進(jìn)格式書寫,以保證層次的清晰性次的清晰性 循環(huán)嵌套不能交叉,即在一個(gè)循環(huán)體內(nèi)必須完整循環(huán)嵌套不能交叉,即在一個(gè)循環(huán)體內(nèi)必須完整的包含著另一個(gè)循環(huán)的包含著另一個(gè)循環(huán) 第52頁/共81頁第五十三頁,共81頁。2022-5-1454合法合法(hf)(hf)的嵌套的嵌套循環(huán)循環(huán) 外層循環(huán) 內(nèi)層循環(huán) 內(nèi)層循環(huán) 內(nèi)層循環(huán) 合法的嵌套循環(huán) 第53頁
39、/共81頁第五十四頁,共81頁。2022-5-14558172635445362718972645648403224168635649423528211475448423630241812645403530252015105363228242016128427242118151296318161412108642987654321987654321例例4.144.14編程輸出如下編程輸出如下(rxi)形式的九九形式的九九表表第54頁/共81頁第五十五頁,共81頁。2022-5-1456#include main() int m, n; for (m=1; m10; m+) printf(%4d
40、, m); /*打印打印(d yn)表頭表頭*/ 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); 例例4.144.1481726354453627189726456484032241686356494235282114754484236302418126454035302520151053632282420161284272421181512963181614121086429876543219876543
41、21第55頁/共81頁第五十六頁,共81頁。2022-5-1457例例4.154.15將上例輸出格式改變將上例輸出格式改變(gibin)成下三成下三角格式打印角格式打印817263544536271897264564840322416863564942352821147544842363024181264540353025201510536322824201612842724211815129631816141210864298765432198765432181726354453627189645648403224168494235282114736302418126252015105161
42、284963421987654321第56頁/共81頁第五十七頁,共81頁。2022-5-1458#include main() int m, n; for (m=1; m10; m+) printf(%4d, m); /*打印打印(d yn)表頭表頭*/ 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); 例例4.154.15第57頁/共81頁第五十八頁,共81頁。2022-5-1459例例4.16 4.16
43、 馬克思手稿馬克思手稿(shugo)(shugo)中有一道趣味數(shù)學(xué)題中有一道趣味數(shù)學(xué)題:有:有3030個(gè)人,其中有男人、女人和小孩,在個(gè)人,其中有男人、女人和小孩,在一家飯館里吃飯共花了一家飯館里吃飯共花了5050先令,每個(gè)男人各先令,每個(gè)男人各花花3 3先令,每個(gè)女人各花先令,每個(gè)女人各花2 2先令,每個(gè)小孩各先令,每個(gè)小孩各花花1 1先令,問男人、女人和小孩各有幾人?先令,問男人、女人和小孩各有幾人? 解方程組解方程組窮舉法窮舉法)2(5023) 1 (30zyxzyx第58頁/共81頁第五十九頁,共81頁。2022-5-1460方法方法1:1:窮舉窮舉x x,y y,z z的所有的所有(
44、suyu)(suyu)組合組合#include main() 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 & 3*x+2*y+z=50) printf(%3d t %5d t %8dn,x,y,z); 第59頁/共81頁第六十頁,共81頁。2022-5-1461方法方法(fngf)2:(fngf)2:改改進(jìn)算法進(jìn)算法#include main() int x,y,z; printf(Man t Women
45、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,y,z); 第60頁/共81頁第六十一頁,共81頁。2022-5-14624.5 4.5 流程的轉(zhuǎn)移流程的轉(zhuǎn)移(zhuny)(zhuny)控制控制goto語句語句(yj)break語句語句(yj)continue語句語句(yj)return語句語句(yj) 標(biāo)準(zhǔn)庫函數(shù)標(biāo)準(zhǔn)庫函數(shù)exit() 第61頁/共81頁第六十二頁,共81頁。2022-5-1463g
46、oto goto 語句語句(yj)(yj)一般形式一般形式(xngsh) goto 語句標(biāo)號語句標(biāo)號; 語句標(biāo)號:語句標(biāo)號:或或 語句標(biāo)號:語句標(biāo)號: goto 語句標(biāo)號語句標(biāo)號;功能:無條件轉(zhuǎn)去執(zhí)行語句標(biāo)號所指語句行功能:無條件轉(zhuǎn)去執(zhí)行語句標(biāo)號所指語句行。第62頁/共81頁第六十三頁,共81頁。2022-5-1464(1)語句)語句(yj)標(biāo)號用標(biāo)識符表示。標(biāo)號用標(biāo)識符表示。(2)語句標(biāo)號)語句標(biāo)號(bioho)一定為函數(shù)段中存在一定為函數(shù)段中存在的。的。(3)該語句不可)該語句不可(bk)濫用濫用。使用使用gotogoto 語句要注意語句要注意標(biāo)號舉例標(biāo)號舉例error:goto舉例舉例g
47、oto error;不能用整數(shù)不能用整數(shù)作語句標(biāo)號作語句標(biāo)號第63頁/共81頁第六十四頁,共81頁。2022-5-1465使用之后,程序仍然是單入口使用之后,程序仍然是單入口(r ku),單出口,單出口不要使用一個(gè)以上的標(biāo)號不要使用一個(gè)以上的標(biāo)號不要用不要用goto往回跳,要向下跳往回跳,要向下跳不要讓不要讓goto制造出永遠(yuǎn)不會(huì)被執(zhí)行的代碼制造出永遠(yuǎn)不會(huì)被執(zhí)行的代碼使用使用(shyng)goto (shyng)goto 語語句的原則句的原則第64頁/共81頁第六十五頁,共81頁。2022-5-1466break 與與continue 語句語句(yj) break語句語句(yj)的作用的作用:
48、循環(huán)中使用循環(huán)中使用break語句語句(yj)可提前結(jié)束整個(gè)循環(huán)。可提前結(jié)束整個(gè)循環(huán)。 continue語句的作用:語句的作用:循環(huán)中使用循環(huán)中使用continue語句可語句可提前結(jié)束提前結(jié)束本次本次循環(huán)循環(huán)第65頁/共81頁第六十六頁,共81頁。2022-5-1467break 與與continue 語句語句(yj)示示意圖意圖假假假假真真真真break表達(dá)式表達(dá)式1表達(dá)式表達(dá)式2循環(huán)語句的循環(huán)語句的下一條語句下一條語句循環(huán)語句的循環(huán)語句的下一條語句下一條語句假假假假真真真真 contiue表達(dá)式表達(dá)式1表達(dá)式表達(dá)式2continue第66頁/共81頁第六十七頁,共81頁。2022-5-14
49、68有關(guān)有關(guān)(yugun)break 與與continue 的說明的說明(1)break 語句語句(yj)可用于可用于switch結(jié)構(gòu),也可用結(jié)構(gòu),也可用于循環(huán)中;于循環(huán)中;(2)continue語句語句(yj)僅用于循環(huán)中僅用于循環(huán)中;(3)break 與與continue均只影響包含它的結(jié)構(gòu)中;均只影響包含它的結(jié)構(gòu)中;(4)break 與與continue少用為妙;少用為妙;第67頁/共81頁第六十八頁,共81頁。2022-5-1469# include # define PI 3.14 main() int r; float area; for(r=1;r50.0) break; pri
50、ntf(面積面積(min j)等于等于%fn,area); printf(現(xiàn)在現(xiàn)在(xinzi)r=%dn,r);例例第68頁/共81頁第六十九頁,共81頁。2022-5-1470例例# include # define PI 3.14 main() int r; float area; for(r=1;r=10;r+) area=PI*r*r; if(area50.0) continue; printf(面積面積(min j)等于等于%fn,area); 第69頁/共81頁第七十頁,共81頁。2022-5-1471Exit() 函數(shù)函數(shù)(hnsh)exit(0)作用作用(zuyng)是終止整
51、個(gè)程序的執(zhí)行,強(qiáng)是終止整個(gè)程序的執(zhí)行,強(qiáng)制返回操作系統(tǒng)制返回操作系統(tǒng) 調(diào)用該函數(shù)需要嵌入頭文件調(diào)用該函數(shù)需要嵌入頭文件第70頁/共81頁第七十一頁,共81頁。2022-5-1472例例4.194.19從鍵盤任意輸入從鍵盤任意輸入(shr)一個(gè)正整數(shù),編程判斷它一個(gè)正整數(shù),編程判斷它是否是素?cái)?shù),若是素?cái)?shù),輸出是否是素?cái)?shù),若是素?cái)?shù),輸出“Yes!”;否則,;否則,輸出輸出“No!”問題分析:問題分析:概念:素?cái)?shù)是指除了能被概念:素?cái)?shù)是指除了能被1和它本身整除外,不和它本身整除外,不能被其他任何整數(shù)整除的數(shù);能被其他任何整數(shù)整除的數(shù);判斷素?cái)?shù)的方法:把判斷素?cái)?shù)的方法:把m作為被除數(shù),把作為被除數(shù),把
52、i=2(m-1)依次做為除數(shù),若余數(shù)都不為依次做為除數(shù),若余數(shù)都不為0,則說明是素?cái)?shù),則說明是素?cái)?shù)。簡單判斷方法:只需用簡單判斷方法:只需用2 的數(shù)去除的數(shù)去除m,即可,即可得到正確的判定結(jié)果。得到正確的判定結(jié)果。m第71頁/共81頁第七十二頁,共81頁。2022-5-1473#include main() int m, i, k; printf(Please enter a number:); scanf(%d, &m); k = sqrt(m); for (i=2; i=k; i+) if (m%i = 0) printf(No!n); goto end; printf(Yes!n); e
53、nd: printf(Program is over!n); Please enter a number:6Program is over!No!方法方法(fngf)1(fngf)1:用:用gotogoto第72頁/共81頁第七十三頁,共81頁。2022-5-1474方法方法(fngf)1(fngf)1:用:用gotogoto#include main() int m, i, k; printf(Please enter a number:); scanf(%d, &m); k = sqrt(m); for (i=2; i=k; i+) if (m%i = 0) printf(No!n); goto end; printf(Yes!n); end: printf(Program is over!n); Please enter a number:5Program
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年體育春季開學(xué)第一課
- 二零二五年度房地產(chǎn)買賣合同范本(含土地、配套設(shè)施、稅費(fèi)及車位)3篇
- 國際山岳日介紹
- 二零二五年度房產(chǎn)交易平臺二手房按揭合同范本2篇
- 實(shí)驗(yàn)室生物危害及生物安全安全培訓(xùn)課件
- 重慶市2024-2025學(xué)年高二上學(xué)期期末考試語文試卷(含答案)
- 公關(guān)部部門年終總結(jié)
- Unit 4 Never too old to learn Reading I 說課稿-2023-2024學(xué)年高中英語牛津譯林版(2020)選擇性必修第四冊
- 江西省上饒市2024-2025學(xué)年度第一學(xué)期七年級道德與法治上冊期末綠色評價(jià)試卷(含答案)
- 廣東省深圳市龍崗區(qū)2024-2025學(xué)年高三上學(xué)期期末質(zhì)量監(jiān)測歷史試題(含答案)
- 2025版健康體檢中心代理運(yùn)營合同協(xié)議3篇
- (已壓縮)礦產(chǎn)資源儲(chǔ)量技術(shù)標(biāo)準(zhǔn)解讀300問-1-90
- 《戶用光伏發(fā)電系統(tǒng)技術(shù)導(dǎo)則》
- (2024)江西省公務(wù)員考試《行測》真題卷及答案解析
- 采購部門總結(jié)及規(guī)劃
- 期末綜合試卷(含答案)2024-2025學(xué)年蘇教版數(shù)學(xué)四年級上冊
- 銀行信息安全保密培訓(xùn)
- 《中華人民共和國藥品管理法實(shí)施條例》
- 2024-2025學(xué)年人教版道法八年級上冊 第一學(xué)期期末測試卷01
- GB/T 8574-2024復(fù)合肥料中鉀含量的測定
- 工程結(jié)算業(yè)務(wù)咨詢服務(wù)協(xié)議書
評論
0/150
提交評論