C語言教程基礎(chǔ)篇綜述_第1頁
C語言教程基礎(chǔ)篇綜述_第2頁
C語言教程基礎(chǔ)篇綜述_第3頁
C語言教程基礎(chǔ)篇綜述_第4頁
C語言教程基礎(chǔ)篇綜述_第5頁
已閱讀5頁,還剩180頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語言程序設(shè)計(jì)語言程序設(shè)計(jì)一、教學(xué)對(duì)象 計(jì)算機(jī)科學(xué)與技術(shù)系新生(第二學(xué)期) 二、教學(xué)目標(biāo) 程序設(shè)計(jì)的重要性 程序設(shè)計(jì)的基本概念與基本方法 編程解題的思路與典型方法 數(shù)學(xué)模型簡(jiǎn)介 算法及算法步驟 程序結(jié)構(gòu)與相應(yīng)語句 編碼與上機(jī)調(diào)試C語言程序設(shè)計(jì)語言程序設(shè)計(jì) C語言程序設(shè)計(jì)語言程序設(shè)計(jì)四、指導(dǎo)思想四、指導(dǎo)思想1. 1. 立足改革,以培養(yǎng)高素質(zhì)有創(chuàng)造精神的人才為這門課立足改革,以培養(yǎng)高素質(zhì)有創(chuàng)造精神的人才為這門課的教學(xué)目標(biāo)。的教學(xué)目標(biāo)。2. 2. 以學(xué)生為中心,采用與現(xiàn)實(shí)生活貼切和具有趣味性的以學(xué)生為中心,采用與現(xiàn)實(shí)生活貼切和具有趣味性的實(shí)例進(jìn)行講解,有利于調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性,引導(dǎo)學(xué)實(shí)例進(jìn)行講解,

2、有利于調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性,引導(dǎo)學(xué)生主動(dòng)學(xué)習(xí)。生主動(dòng)學(xué)習(xí)。 3. 3. 強(qiáng)化實(shí)踐,這門課主張程序設(shè)計(jì)是高強(qiáng)度的腦力勞動(dòng),強(qiáng)化實(shí)踐,這門課主張程序設(shè)計(jì)是高強(qiáng)度的腦力勞動(dòng),不是聽會(huì)的、也不是看會(huì)的,而是練會(huì)的。引導(dǎo)學(xué)生在不是聽會(huì)的、也不是看會(huì)的,而是練會(huì)的。引導(dǎo)學(xué)生在解題編程的實(shí)踐中探索其中帶規(guī)律性的認(rèn)識(shí)。將感性認(rèn)解題編程的實(shí)踐中探索其中帶規(guī)律性的認(rèn)識(shí)。將感性認(rèn)識(shí)升華到理性高度。識(shí)升華到理性高度。C語言程序設(shè)計(jì)語言程序設(shè)計(jì)五、學(xué)習(xí)方法五、學(xué)習(xí)方法 1.1.動(dòng)手動(dòng)腦,理論指導(dǎo)下的實(shí)踐動(dòng)手動(dòng)腦,理論指導(dǎo)下的實(shí)踐 有條有理的實(shí)踐。有條有理的實(shí)踐。 2.2.在編寫大量程序之后,才能感到運(yùn)用自如。在編寫大量

3、程序之后,才能感到運(yùn)用自如。C語言程序設(shè)計(jì)語言程序設(shè)計(jì)六、教學(xué)內(nèi)容安排六、教學(xué)內(nèi)容安排 1. 1. 簡(jiǎn)單簡(jiǎn)單C C程序設(shè)計(jì);程序設(shè)計(jì); 2. 2. 分支結(jié)構(gòu)程序設(shè)計(jì);分支結(jié)構(gòu)程序設(shè)計(jì); 3. 3. 循環(huán)結(jié)構(gòu)程序設(shè)計(jì);循環(huán)結(jié)構(gòu)程序設(shè)計(jì); 4. 4. 數(shù)組;數(shù)組; 5. 5. 函數(shù);函數(shù); 6. 6. 遞歸及其實(shí)現(xiàn)方法遞歸及其實(shí)現(xiàn)方法 7. 7. 指針;指針; 8. 8. 結(jié)構(gòu)體與鏈表。結(jié)構(gòu)體與鏈表。C語言程序設(shè)計(jì)語言程序設(shè)計(jì)1.1 1.1 認(rèn)識(shí)認(rèn)識(shí)C C語言程序語言程序 1.1.程序?qū)嵗绦驅(qū)嵗?include /#include /預(yù)編譯命令預(yù)編譯命令, ,將標(biāo)準(zhǔn)輸入輸出函數(shù)將標(biāo)準(zhǔn)輸入輸出函數(shù)

4、 /作為頭文件包擴(kuò)到用戶源文件中作為頭文件包擴(kuò)到用戶源文件中 #include /#include /預(yù)編譯命令預(yù)編譯命令, ,將系統(tǒng)提供的數(shù)學(xué)函數(shù)將系統(tǒng)提供的數(shù)學(xué)函數(shù) /作為頭文件包擴(kuò)到用戶源文件中作為頭文件包擴(kuò)到用戶源文件中 main( )main( ) / /主函數(shù),名為主函數(shù),名為mainmain, / /函數(shù)體函數(shù)體. .開始開始 float a,b,c;float a,b,c; / /聲明部分聲明部分. .定義變量類型定義變量類型 b=30.0;b=30.0; / /執(zhí)行部分執(zhí)行部分. .賦值語句賦值語句 a=sin(ba=sin(b* *3.14159/180); /3.1415

5、9/180); /執(zhí)行部分執(zhí)行部分. .賦值語句賦值語句 printf(“%fn”,a);printf(“%fn”,a);/執(zhí)行部分執(zhí)行部分. .輸出語句輸出語句 / /函數(shù)體函數(shù)體. .結(jié)束結(jié)束第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)1.2 實(shí)例總結(jié)實(shí)例總結(jié) 1.C程序結(jié)構(gòu)程序結(jié)構(gòu)預(yù)編譯命令預(yù)編譯命令主函數(shù)主函數(shù) main( ) 函數(shù)體開始函數(shù)體開始 聲明部分聲明部分 執(zhí)行部分執(zhí)行部分 函數(shù)體結(jié)束函數(shù)體結(jié)束第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)2.2.變量的類型變量的類型 整型:整型:int int 長(zhǎng)整型:長(zhǎng)整型:lon

6、glong 浮點(diǎn)型:浮點(diǎn)型:floatfloat 雙精度型:雙精度型:doubledouble 字符型:字符型:charchar 用戶自定義類型用戶自定義類型第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語言程序設(shè)計(jì)語言程序設(shè)計(jì) 3.3.聲明的作用聲明的作用 為變量分配內(nèi)存單元,變量名作為內(nèi)存單元的符為變量分配內(nèi)存單元,變量名作為內(nèi)存單元的符號(hào)地址,這件事是在程序編譯鏈接時(shí)完成的。號(hào)地址,這件事是在程序編譯鏈接時(shí)完成的。 4. 變量變量 其值可以改變的量,是內(nèi)存單元的符號(hào)地址。其值可以改變的量,是內(nèi)存單元的符號(hào)地址。 通過符號(hào)通過符號(hào)b可以找到相應(yīng)的存儲(chǔ)單元地址,假設(shè)可以找到相應(yīng)的存儲(chǔ)單元

7、地址,假設(shè)為為1000。 語句語句 b=30.0b=30.0; 是將值是將值30.030.0存放在地址存放在地址為為1000的的存儲(chǔ)單元存儲(chǔ)單元。第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)5.5.對(duì)變量的賦值對(duì)變量的賦值 賦值符號(hào)賦值符號(hào)“=” b = 30.0;/ 讀作將表達(dá)式的值讀作將表達(dá)式的值30.0賦給變量賦給變量b a=sin(b*3.14159/180); / 讀作將表達(dá)式(正弦函數(shù))的值賦給變量讀作將表達(dá)式(正弦函數(shù))的值賦給變量a 第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)6.6.變量賦值特點(diǎn)變量賦值特點(diǎn) (1)先

8、定義,后使用)先定義,后使用 int d,e,f; 定義三個(gè)變量為整數(shù)類型定義三個(gè)變量為整數(shù)類型 如未定義,則在編譯時(shí)被查出,認(rèn)為非法如未定義,則在編譯時(shí)被查出,認(rèn)為非法 (2)變量未被賦值前,值為)變量未被賦值前,值為未知未知 (3)對(duì)變量賦值過程是)對(duì)變量賦值過程是“覆蓋覆蓋”過程,用新值去替換舊過程,用新值去替換舊(4)讀出變量的值,該變量保持不變)讀出變量的值,該變量保持不變 (5)參與表達(dá)式運(yùn)算的所有變量都保持原來的值不變)參與表達(dá)式運(yùn)算的所有變量都保持原來的值不變第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)變量賦值過程變量賦值過程 d e fd e f

9、未賦值前未賦值前執(zhí)行執(zhí)行d=7執(zhí)行執(zhí)行 e=d 執(zhí)行執(zhí)行 f=d+e執(zhí)行執(zhí)行 d=d+1 000-12349723431607234316077077148714第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)7. 7. 輸出語句輸出語句 printfprintf函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) 一般形式為一般形式為 printf(printf(參數(shù)參數(shù)1 1,參數(shù),參數(shù)2 2,參數(shù),參數(shù)3 3,參數(shù),參數(shù)n n) 其中參數(shù)其中參數(shù)11格式控制格式控制 參數(shù)參數(shù)2 2,參數(shù),參數(shù)3 3,參數(shù),參數(shù)nn輸出表列輸出表列 舉例:舉例: float a; float

10、 a; int b; int b; a = 85.56; a = 85.56; b = 100; b = 100; printf(%f %d, a, b); printf(%f %d, a, b);第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)格式控制是用雙引號(hào)括起來的字符串,稱格式控制是用雙引號(hào)括起來的字符串,稱“轉(zhuǎn)換控制字符轉(zhuǎn)換控制字符串串”%f 第一個(gè)輸出表列的格式說明,以小數(shù)形式輸出單、第一個(gè)輸出表列的格式說明,以小數(shù)形式輸出單、雙精度實(shí)數(shù),隱含輸出雙精度實(shí)數(shù),隱含輸出6位小數(shù)位小數(shù) %d 第二個(gè)輸出表列的格式說明,以帶有符號(hào)的十第二個(gè)輸出表列的格式說明,以

11、帶有符號(hào)的十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號(hào))進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號(hào)) 顯然,顯然,%f是控制實(shí)數(shù)是控制實(shí)數(shù)a的;的;%d是控制整數(shù)是控制整數(shù)b的的第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)為了醒目,格式控制項(xiàng)中除格式說明之外可以有為了醒目,格式控制項(xiàng)中除格式說明之外可以有 普通字符普通字符例例: printf(“a=%f b=%d, a, b);: printf(“a=%f b=%d, a, b); 輸出結(jié)果為:輸出結(jié)果為: a=85.560000 b=100a=85.560000 b=100 換行符號(hào)換行符號(hào) 例例: printf(“a=%fnb=

12、%d”,a,b);: printf(“a=%fnb=%d”,a,b);輸出結(jié)果為:輸出結(jié)果為: a=85.560000a=85.560000 b=100 b=100 域?qū)捄途扔驅(qū)捄途壤豪簆rintfprintf(”%5.3f”%5.3f”,a a);第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)8. 數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù) sin(x)x x為弧度,為弧度,double xdouble x,double sin(x)double sin(x) cos(x) cos(x)exp(x) exlog(x) logexlog10(x) log10 xfabs(x) xfm

13、od(x,y) 整除整除x/y的余數(shù)的余數(shù)floor(x) 求不大于求不大于x的最大整數(shù)的最大整數(shù)pow(x, y) xysqrt(x) x1/2第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)9. 算術(shù)運(yùn)算符算術(shù)運(yùn)算符 加加 減減 *乘乘 / 除除 % 模(取余數(shù))模(取余數(shù))第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)1.3 1.3 作業(yè)作業(yè)第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語言程序設(shè)計(jì)語言程序設(shè)計(jì) 我們?cè)谌粘I钪薪?jīng)常需要處理具有兩個(gè)分支的問題,例我們?cè)谌粘I钪薪?jīng)常需要處理具有兩個(gè)分支的問題,例如,如果明天下雨,則

14、在教室內(nèi)組織活動(dòng),否則去野游。如,如果明天下雨,則在教室內(nèi)組織活動(dòng),否則去野游。 在在C C語言中,這類問題需要使用語言中,這類問題需要使用ifif語句解決,而判斷操語句解決,而判斷操作通常使用關(guān)系運(yùn)算符。作通常使用關(guān)系運(yùn)算符。關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式 大于大于 =大于等于大于等于 = = 小于等于小于等于 =等于等于 !=!=不等于不等于第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)2.1 2.1 掌握掌握ifif語句的使用方法語句的使用方法【實(shí)例】編寫程序,判斷輸入的整數(shù)是否為實(shí)例】編寫程序,判斷輸入的整數(shù)是否為6 6,若是,顯示,若是,顯示“RightRig

15、ht!”和和“Great!”Great!”,否則顯示,否則顯示“WrongWrong!”和和“SorrySorry!”。 1編程思路:編程思路: 要顯示要顯示“RightRight!”和和“GreatGreat!”,應(yīng)執(zhí)行兩條語句,應(yīng)執(zhí)行兩條語句“printf(”Rightprintf(”Right!n“);”n“);”和和“printf(”Greatprintf(”Great!n“);”n“);”,要顯示,要顯示“WrongWrong!”和和“SorrySorry!”,執(zhí)行兩條語,執(zhí)行兩條語句句“printf(”Wrongprintf(”Wrong! n“);”n“);”和和“printf(

16、”Sorryprintf(”Sorry!n“);”n“);”。本題需要根據(jù)所輸入的值(假設(shè)賦給。本題需要根據(jù)所輸入的值(假設(shè)賦給a a)是否為)是否為6 6來選擇執(zhí)行相應(yīng)的兩條語句。來選擇執(zhí)行相應(yīng)的兩條語句。 在在C C語言中判斷語言中判斷a a中的值是否為中的值是否為6 6,使用,使用“if(a=6)”if(a=6)”形式。形式。 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)本實(shí)例的流程圖如圖所示 開始輸入a值a=6顯示“Right!”顯示“Great!”顯示“Wrong!”顯示“Sorry!”結(jié)束假真第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)本實(shí)例的N-S流程圖如

17、圖所示輸入a的值a=6顯示“Right!” 顯示“Great!” 顯示“Wrong!” 顯示“Sorry! ” 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)2 2程序代碼程序代碼:#include main() int a=0; printf(Input a:); scanf(%d,&a); printf(a=%dn,a); if(a=6)/* if語句開始語句開始 */ printf(Right!n); printf(Great!n); else printf(Wrong!n); printf(Sorry!n); /* if語句結(jié)束語句結(jié)束 */第二講第二講 分支結(jié)構(gòu)分支

18、結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)3 3運(yùn)行結(jié)果:運(yùn)行結(jié)果: 第第1 1次運(yùn)行結(jié)果:次運(yùn)行結(jié)果: Input a:6Input a:6 a=6 a=6 Right Right! GreatGreat! 第第2 2次運(yùn)行結(jié)果:次運(yùn)行結(jié)果: Input a:5Input a:5 a=5 a=5 Wrong Wrong! SorrySorry!第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)4 4歸納分析:歸納分析: (1 1)程序中的)程序中的“a=6”a=6”是關(guān)系表達(dá)式。是關(guān)系表達(dá)式。用關(guān)系運(yùn)算符把兩個(gè)用關(guān)系運(yùn)算符把兩個(gè)C C語言表達(dá)式連接起來的表達(dá)式稱為關(guān)系語言表達(dá)式連接起來的表達(dá)式稱為

19、關(guān)系表達(dá)式。關(guān)系運(yùn)算的判斷結(jié)果只有表達(dá)式。關(guān)系運(yùn)算的判斷結(jié)果只有“真真”或或“假假”兩種可兩種可能,關(guān)系成立時(shí)為能,關(guān)系成立時(shí)為“真真”,不成立時(shí)為,不成立時(shí)為“假假”。關(guān)系表達(dá)式的值只能是關(guān)系表達(dá)式的值只能是1 1或或0 0,當(dāng)關(guān)系運(yùn)算的判斷結(jié)果為,當(dāng)關(guān)系運(yùn)算的判斷結(jié)果為“真真”時(shí),關(guān)系表達(dá)式的值為時(shí),關(guān)系表達(dá)式的值為 1 1,否則,關(guān)系表達(dá)式的值為,否則,關(guān)系表達(dá)式的值為0 0。例。例如,當(dāng)如,當(dāng)a a的值為的值為6 6時(shí),關(guān)系表達(dá)式時(shí),關(guān)系表達(dá)式“a=6”a=6”的值為的值為1 1,當(dāng),當(dāng)a a的的值為值為5 5時(shí),關(guān)系表達(dá)式時(shí),關(guān)系表達(dá)式“a=6”a=6”的值為的值為0 0。第二講第二

20、講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)(2 2)程序中的)程序中的“if(a=6)”if(a=6)”是是ifif語句的開始部分。語句的開始部分。 本例題需要根據(jù)本例題需要根據(jù)“a=6”a=6”是否為是否為“真真”來選擇執(zhí)行不同的來選擇執(zhí)行不同的兩個(gè)輸出語句。處理兩個(gè)分支的問題時(shí)常使用兩個(gè)輸出語句。處理兩個(gè)分支的問題時(shí)常使用ifif語句。語句。ifif語句語句根據(jù)其后面括號(hào)中表達(dá)式的結(jié)果,選擇執(zhí)行某個(gè)分支程序段。根據(jù)其后面括號(hào)中表達(dá)式的結(jié)果,選擇執(zhí)行某個(gè)分支程序段。 ifif語句的一般形式如下:語句的一般形式如下: if(if(表達(dá)式表達(dá)式) ) 語句組語句組1 1 else else

21、語句組語句組2 2 “if” “if”和和“else”else”是關(guān)鍵字。當(dāng)表達(dá)式結(jié)果為是關(guān)鍵字。當(dāng)表達(dá)式結(jié)果為“真真”(即(即不等不等于于0 0)時(shí),執(zhí)行語句組)時(shí),執(zhí)行語句組1 1,表達(dá)式結(jié)果為,表達(dá)式結(jié)果為“假假”(即等于(即等于0 0)時(shí),)時(shí),執(zhí)行語句組執(zhí)行語句組2 2。在語句組。在語句組1 1和語句組和語句組2 2中只能選擇執(zhí)行一組,而中只能選擇執(zhí)行一組,而后執(zhí)行整個(gè)后執(zhí)行整個(gè)ifif語句后面的語句。語句后面的語句。 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)(3) C語言中允許程序中的if語句不帶else部分。省略else的if語句一般形式如下: if(表達(dá)式) 語

22、句組 此if語句的執(zhí)行過程: 當(dāng)表達(dá)式結(jié)果為“真”時(shí),執(zhí)行語句組,表達(dá)式結(jié)果為“假”時(shí),不處理。 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)2.2學(xué)會(huì)使用邏輯運(yùn)算符 處理問題時(shí)經(jīng)常需要同時(shí)判斷多個(gè)條件。例如,在某學(xué)生數(shù)學(xué)和英語成績(jī)中判斷是否至少有一門課程是不及格。這時(shí)使用邏輯運(yùn)算符。邏輯運(yùn)算符共有三種: & 邏輯與 | 邏輯或 ! 邏輯非這3個(gè)運(yùn)算符按高到低的優(yōu)先級(jí)順序是“!”、“&”、“|” 一般而言,單目運(yùn)算符優(yōu)先級(jí)較高,賦值運(yùn)算符優(yōu)先級(jí)低。 算術(shù)運(yùn)算符優(yōu)先級(jí)較高,關(guān)系和邏輯運(yùn)算符優(yōu)先級(jí)較低。 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)【實(shí)例】編

23、寫程序,判斷某人的體重是否在50公斤至55公斤之間,若在此范圍之內(nèi),顯示“Ok”,否則顯示“No”。1編程思路: 先將體重存放在變量w中,要使w的值在50至55范圍內(nèi),應(yīng)同時(shí)滿足“w=50”和“w=50 & w=50”和“w=50 & w=50 & w=55顯示“Ok”顯示“No”第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)2 2程序代碼:程序代碼:#include main() float w=0.0; printf(Input w:); scanf(%f,&w); printf(w=%.1fn,w); if(w=50&w=55) prin

24、tf(Okn); else printf(Non);第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)3.運(yùn)行結(jié)果:第1次運(yùn)行結(jié)果:Input w:53.5w=53.5Ok第2次運(yùn)行結(jié)果:Input w:60.7w=60.7No第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)4 4歸納分析:歸納分析: 程序中的“w=50 & w0且w0 & w0 & w=50 w=50 w=55) / /* * 內(nèi)嵌內(nèi)嵌ifif語句開始語句開始 * */ /printf(“Okn);printf(“Okn);elseelseprintf(Non);/printf(Non)

25、;/* * 內(nèi)嵌內(nèi)嵌ifif語句結(jié)束語句結(jié)束 * */ / elseelseprintf(Data over!n);/printf(Data over!n);/* * 外嵌外嵌ifif語句結(jié)束語句結(jié)束 * */ / 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)3 3運(yùn)行結(jié)果:運(yùn)行結(jié)果:第第1 1次運(yùn)行結(jié)果:次運(yùn)行結(jié)果:Input w:Input w:53.553.5 w=53.5w=53.5OkOk第第2 2次運(yùn)行結(jié)果:次運(yùn)行結(jié)果:Input w:Input w:60.760.7 w=60.7w=60.7NoNo第第3 3次運(yùn)行結(jié)果:次運(yùn)行結(jié)果:Input w:Input w:20

26、1.7201.7 w=201.7w=201.7Data over!Data over!第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)4歸納分析:(1)本程序在一個(gè)if語句中包含了另一個(gè)if語句。在if語句的語句組1或語句組2中又包含另一個(gè)分支結(jié)構(gòu)的if語句稱為嵌套的if語句。(2)本程序中出現(xiàn)了兩次else。 C語法規(guī)定,在if語句中,若多次出現(xiàn)else,則每一個(gè)else總是與前面最近的if配對(duì),所以本例題中第一個(gè)else與內(nèi)嵌的if配對(duì),第二個(gè)else與最上面的if配對(duì)。程序中由于采用了縮進(jìn)格式,if與else的配對(duì)關(guān)系一目了然。 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程

27、序設(shè)計(jì)2.42.4學(xué)會(huì)使用學(xué)會(huì)使用if-else ifif-else if形式的嵌套形式的嵌套ifif語句語句 【實(shí)例】編寫程序,求下面分段函數(shù)的值,要求【實(shí)例】編寫程序,求下面分段函數(shù)的值,要求x x的值從鍵盤輸?shù)闹祻逆I盤輸入。入。 x+2 (0 x5)y=0 (x0)x2-3 (5x10)10 (x10)第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)1 1編程思路:編程思路: 開始開始輸入輸入x值值x00結(jié)束結(jié)束假假真真真真假假顯示顯示x x和和y y的值的值x55真真假假x1010y=x+2y=10y=x2-3y=0第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)2 2

28、程序代碼:程序代碼:#include #include main()main() float x=0,y=0;float x=0,y=0;printf(Input x:);printf(Input x:); scanf(%f,&x); scanf(%f,&x); if(x0) if(x0)y=0;y=0; else else if(x5) y=x+2; if(x5) y=x+2; else else if(x10) y=x if(x10) y=x* *x-3;x-3; else y=10; else y=10; printf(x=%f,y=%fn,x,y); printf(x=

29、%f,y=%fn,x,y); 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)2.5 switch語句 在日常生活中經(jīng)常遇到菜單選擇操作,例如,用ATM自動(dòng)取款機(jī)取錢時(shí),從菜單中可以選擇語種、取款額;用自動(dòng)服務(wù)系統(tǒng)給手機(jī)充值時(shí),可以選擇查余額還是充值,對(duì)本機(jī)充值還是對(duì)其他號(hào)碼充值等。這些問題一般使用switch語句解決。 總之,這些問題都是多分支情況。第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)【實(shí)例】編寫程序,在如下菜單中選擇一個(gè)運(yùn)算類型,并【實(shí)例】編寫程序,在如下菜單中選擇一個(gè)運(yùn)算類型,并進(jìn)行相應(yīng)的運(yùn)算。如選擇了加法,則進(jìn)行求和運(yùn)算。進(jìn)行相應(yīng)的運(yùn)算。如選擇了加法,則進(jìn)行

30、求和運(yùn)算。Please choose Please choose + : addition+ : addition- : subtraction- : subtraction* * : multiplication : multiplication/ : division/ : division第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)1 1程序代碼:程序代碼:#include #include main()main()float a=5.0,b=2.0,c=0.0;float a=5.0,b=2.0,c=0.0;char sym=0;char sym=0;printf(Plea

31、se choosen);printf(Please choosen);printf(+ : additionn);printf(+ : additionn);printf(- : subtractionn);printf(- : subtractionn);printf(printf(* * : multiplicationn); : multiplicationn);printf(/ : divisionn);printf(/ : divisionn);sym=getchar();sym=getchar();printf(%f%c%f=,a,sym,b); printf(%f%c%f=,a,

32、sym,b); / /* * 顯示算式顯示算式 * */ /第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)switch(sym) switch(sym) / /* * 計(jì)算算式計(jì)算算式 * */ / case +: c=a+b; break; case +: c=a+b; break; case -: c=a-b; break; case -: c=a-b; break; case case * *: c=a: c=a* *b; break;b; break; case /: c=a/b; break; case /: c=a/b; break; printf(%fn,c); pri

33、ntf(%fn,c); / /* * 顯示結(jié)果顯示結(jié)果 * */ / 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)2 2運(yùn)行結(jié)果:運(yùn)行結(jié)果:Please choosePlease choose+ : addition+ : addition- : subtraction- : subtraction* * : multiplication : multiplication/ : division/ : division/ 5.000000/2.000000=2.5000005.000000/2.000000=2.500000 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)

34、3 3歸納分析:歸納分析:switchswitch語句的一般形式為:語句的一般形式為:switch(switch(表達(dá)式表達(dá)式) ) case case 表達(dá)式表達(dá)式1: 1: 語句組語句組1 break;1 break; case case 表達(dá)式表達(dá)式2: 2: 語句組語句組2 break;2 break; case case 表達(dá)式表達(dá)式n: n: 語句組語句組n break;n break; default: default: 語句組語句組n+1 break;n+1 break; 其中其中switchswitch、casecase、defaultdefault和和breakbreak是

35、關(guān)鍵字,所有表達(dá)式均是關(guān)鍵字,所有表達(dá)式均為整型或字符型。在表達(dá)式為整型或字符型。在表達(dá)式1 1、表達(dá)式、表達(dá)式2 2、表達(dá)式、表達(dá)式n n中只能中只能出現(xiàn)常量和運(yùn)算符,而且每個(gè)表達(dá)式的值不能相等。出現(xiàn)常量和運(yùn)算符,而且每個(gè)表達(dá)式的值不能相等。 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)2.6 2.6 條件運(yùn)算符及其表達(dá)式條件運(yùn)算符及其表達(dá)式 C C語言中條件運(yùn)算符由語言中條件運(yùn)算符由“?”?”和和“:”:”組成,例如組成,例如“ab ? a : ab ? a : b”b”。條件表達(dá)式的一般形式為:條件表達(dá)式的一般形式為:表達(dá)式表達(dá)式1 1 ?表達(dá)式?表達(dá)式2 2 :表達(dá)式:表達(dá)

36、式3 3當(dāng)表達(dá)式當(dāng)表達(dá)式1 1的值為非的值為非0 0時(shí),以表達(dá)式時(shí),以表達(dá)式2 2的值作為條件表達(dá)式的值,的值作為條件表達(dá)式的值,否則,以表達(dá)式否則,以表達(dá)式3 3的值作為條件表達(dá)式的值。例如,當(dāng)?shù)闹底鳛闂l件表達(dá)式的值。例如,當(dāng)abab成立時(shí),條件表達(dá)式成立時(shí),條件表達(dá)式“ab ? a : b”ab ? a : b”的值為的值為a a中的值,否中的值,否則為則為b b中的值。中的值。 使用條件表達(dá)式也可以實(shí)現(xiàn)分支結(jié)構(gòu)。使用條件表達(dá)式也可以實(shí)現(xiàn)分支結(jié)構(gòu)。 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)課堂討論:誰做的好事?課堂討論:誰做的好事?忻州師院有四位同學(xué)中的一位做了好事,不留名

37、,表揚(yáng)信來忻州師院有四位同學(xué)中的一位做了好事,不留名,表揚(yáng)信來了之后,校長(zhǎng)問這四位是誰做的好事。了之后,校長(zhǎng)問這四位是誰做的好事。 A說:不是我。說:不是我。 B說:說:是是C。 C說:是說:是D。 D說:說:C胡說。胡說。 已知三個(gè)人說的是真話,已知三個(gè)人說的是真話,一個(gè)人說的是假話?,F(xiàn)在要根據(jù)這些信息,找出做了好事的一個(gè)人說的是假話?,F(xiàn)在要根據(jù)這些信息,找出做了好事的人。畫出人。畫出N-S流程圖并寫出程序。流程圖并寫出程序。第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)顯然,不是顯然,不是AA做的好事(四個(gè)關(guān)系表達(dá)式值的和為做的好事(四個(gè)關(guān)系表達(dá)式值的和為1 1)第二講第二講 分

38、支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)顯然,不是顯然,不是BB所為(四個(gè)關(guān)系表達(dá)式值的和為所為(四個(gè)關(guān)系表達(dá)式值的和為2 2)第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)顯然,就是顯然,就是CC做了好事(四個(gè)關(guān)系表達(dá)式值之和為做了好事(四個(gè)關(guān)系表達(dá)式值之和為3 3)這時(shí),我可以理出頭緒,要用所謂枚舉法,一個(gè)人一個(gè)人地去這時(shí),我可以理出頭緒,要用所謂枚舉法,一個(gè)人一個(gè)人地去試,試,四句話中有三句為真,該人即所求。四句話中有三句為真,該人即所求。第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì) 循環(huán)結(jié)構(gòu)是程序中一種很重要的結(jié)構(gòu)。其特點(diǎn)循環(huán)結(jié)構(gòu)是程序中一種很重要的結(jié)構(gòu)。其特點(diǎn)是

39、,是, 在給定條件成立時(shí),反復(fù)執(zhí)行某程序段,直到在給定條件成立時(shí),反復(fù)執(zhí)行某程序段,直到條件不成立為止。條件不成立為止。 給定的條件稱為循環(huán)條件,反復(fù)給定的條件稱為循環(huán)條件,反復(fù)執(zhí)行的程序段稱為循環(huán)體。執(zhí)行的程序段稱為循環(huán)體。 語言提供了三種循環(huán)語言提供了三種循環(huán)語句,可以組成各種不同形式的循環(huán)結(jié)構(gòu)語句,可以組成各種不同形式的循環(huán)結(jié)構(gòu), ,它們是它們是: : 語句語句 語句語句 語句語句第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)3.1 3.1 簡(jiǎn)單循環(huán)簡(jiǎn)單循環(huán)【實(shí)例】古典問題:有一對(duì)兔子,從出生后第【實(shí)例】古典問題:有一對(duì)兔子,從出生后第3 3個(gè)月起每個(gè)月都個(gè)月起每個(gè)月都生一對(duì)兔

40、子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問每個(gè)月的兔子總數(shù)為多少?假如兔子都不死,問每個(gè)月的兔子總數(shù)為多少?1.1.程序分析:兔子的規(guī)律為數(shù)列程序分析:兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21.1,1,2,3,5,8,13,21.該數(shù)列的規(guī)律為該數(shù)列的規(guī)律為 a a1 1=1=1 a a2 2=1=1 a an n=a=an-1n-1+a+an-2n-2 這里求前這里求前2020項(xiàng)項(xiàng)第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)i=20a1=1;a2=1; i=3an=a1+a2輸出ani=i+1;a1

41、=a2;a2=an;YendbeginN第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)該題目的該題目的N-SN-S流程圖流程圖a1=1;a2=1;an=0;i=20an=a1+a2輸出ani=i+1a1=a2a2=an第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)2.程序源代碼:方法一:for循環(huán)語句#include stdio.h#include stdio.hmain( )main( ) long a1,a2,an;long a1,a2,an; int i;int i; a1=a2=1;a1=a2=1; for(i=3;i=20;i+)for(i=3;i=20;i+)

42、an=a1+a2;an=a1+a2; printf(“a%d=%ld”,i,an); printf(“a%d=%ld”,i,an); a1=a2; a1=a2; a2=an; a2=an; 可否調(diào)換?第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)方法二:while循環(huán)語句#include stdio.h#include stdio.hmain( )main( ) long a1,a2,an;long a1,a2,an; int i;int i; a1=a2=1;i=3a1=a2=1;i=3; whilewhile(i=20i=20) an=a1+a2;an=a1+a2; printf

43、(“a%d=%ld”,i,an); printf(“a%d=%ld”,i,an); a1=a2; a1=a2; a2=an; a2=an; i+; i+; 第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)方法三:do-while循環(huán)語句#include stdio.h#include stdio.hmain( )main( ) long a1,a2,an;long a1,a2,an; int i;int i; a1=a2=1;i=3a1=a2=1;i=3; dodo an=a1+a2;an=a1+a2; printf(“a%d=%ld”,i,an); printf(“a%d=%ld”,

44、i,an); a1=a2; a1=a2; a2=an; a2=an; i+; i+; whilewhile(i=20);i=20); 第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)3.3.歸納分析歸納分析(1 1)forfor語句格式:語句格式: for ( for ( 表達(dá)式表達(dá)式1 ; 1 ; 表達(dá)式表達(dá)式2 ; 2 ; 表達(dá)式表達(dá)式3 ) 3 ) 語句語句 即:即: for (for (循環(huán)變量賦初值循環(huán)變量賦初值 , , 循環(huán)結(jié)束條件循環(huán)結(jié)束條件 , , 循環(huán)變量增值循環(huán)變量增值 ) ) 語句語句 第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)ForFor語句執(zhí)行過

45、程語句執(zhí)行過程表達(dá)式1 表達(dá)式2 表達(dá)式3 語 句 YN第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)表達(dá)式可以省略,但分號(hào)不能省略表達(dá)式可以省略,但分號(hào)不能省略a) a) 省略表達(dá)式省略表達(dá)式1 1 i=1 i=1 for ( for ( ;i=50 i=50 ;i+ ) sum=sum+2i+ ) sum=sum+2* *i ib) b) 省略表達(dá)式省略表達(dá)式22產(chǎn)生死循環(huán)產(chǎn)生死循環(huán) for ( i=1for ( i=1; ;i+ ) sum=sum+2i+ ) sum=sum+2* *i ic) c) 省略表達(dá)式省略表達(dá)式3 3 for ( i=1 for ( i=1;i=50

46、 i=50 ;) ) sum=sum+2 sum=sum+2* *i; i+;i; i+;d) d) 省略表達(dá)式省略表達(dá)式1 , 1 , 省略表達(dá)式省略表達(dá)式3 3 i=1 i=1 for ( for ( ;i=50 i=50 ;) ) sum=sum+2 sum=sum+2* *i; i+; i; i+; 第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)表達(dá)式表達(dá)式1 1,表達(dá)式,表達(dá)式3 3可以是:可以是: a) a) 簡(jiǎn)單的表達(dá)式簡(jiǎn)單的表達(dá)式 b)b)逗號(hào)表達(dá)式逗號(hào)表達(dá)式表達(dá)式表達(dá)式2 2 一般是關(guān)系表達(dá)式或邏輯表達(dá)式一般是關(guān)系表達(dá)式或邏輯表達(dá)式例:例:for ( sum=0 f

47、or ( sum=0 , , i=1 ; i=50 ; i+ i=1 ; i=50 ; i+, ,i+ )i+ ) sum=sum+2 sum=sum+2* *i;i;或:或:for ( sum=0 for ( sum=0 , , i=1 ; i=50 ; i=i+2 ) i=1 ; i=50 ; i=i+2 ) sum=sum+2 sum=sum+2* *i i第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)(2) while(2) while語句的一般形式為:語句的一般形式為: while(while(表達(dá)式表達(dá)式) ) 語句;語句; 其中表達(dá)式是循環(huán)條件,語句為循環(huán)體。其中表達(dá)式

48、是循環(huán)條件,語句為循環(huán)體。whilewhile語句的語義是:語句的語義是: 計(jì)算表達(dá)式的值,當(dāng)值為真計(jì)算表達(dá)式的值,當(dāng)值為真( (非非0)0)時(shí),執(zhí)行循環(huán)體語句。時(shí),執(zhí)行循環(huán)體語句。第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)使用使用whilewhile語句應(yīng)注意以下幾點(diǎn):語句應(yīng)注意以下幾點(diǎn):1.while1.while語句中的表達(dá)式一般是關(guān)系表達(dá)或邏輯表達(dá)式,只語句中的表達(dá)式一般是關(guān)系表達(dá)或邏輯表達(dá)式,只要表達(dá)式的值為真要表達(dá)式的值為真( (非非0)0)即可繼續(xù)循環(huán)。即可繼續(xù)循環(huán)。2.2.循環(huán)體如包括有一個(gè)以上的語句,則必須用循環(huán)體如包括有一個(gè)以上的語句,則必須用括起來,括起來,

49、 組成復(fù)合語句。組成復(fù)合語句。3.3.應(yīng)注意循環(huán)條件的選擇以避免死循環(huán)應(yīng)注意循環(huán)條件的選擇以避免死循環(huán), ,一般需要在循環(huán)體一般需要在循環(huán)體中動(dòng)態(tài)改變循環(huán)條件的值。中動(dòng)態(tài)改變循環(huán)條件的值。第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)(3) do-while(3) do-while語句的一般形式為:語句的一般形式為: dodo語句;語句; while(while(表達(dá)式表達(dá)式) ); 其中語句是循環(huán)體,表達(dá)式是循環(huán)條件。其中語句是循環(huán)體,表達(dá)式是循環(huán)條件。do-whiledo-while語句的語義是:語句的語義是:先執(zhí)行循環(huán)體語句一次,先執(zhí)行循環(huán)體語句一次, 再判別表達(dá)式的值,若為真

50、再判別表達(dá)式的值,若為真( (非非0)0)則繼續(xù)循環(huán),否則終止循環(huán)。則繼續(xù)循環(huán),否則終止循環(huán)。do-whiledo-while語句和語句和whilewhile語句的區(qū)別在于語句的區(qū)別在于do-whiledo-while是先執(zhí)行后是先執(zhí)行后判斷,因此判斷,因此do-whiledo-while至少要執(zhí)行一次至少要執(zhí)行一次循環(huán)體。而循環(huán)體。而whilewhile是先是先判斷后執(zhí)行,如果條件不滿足,則一次循環(huán)體語句也不執(zhí)判斷后執(zhí)行,如果條件不滿足,則一次循環(huán)體語句也不執(zhí)行。行。第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)(4)(4)循環(huán)體語句可使用breakbreak 和continuec

51、ontinue語句breakbreak:可以用來從循環(huán)體內(nèi)跳出循環(huán)體(提前結(jié)束循環(huán))continuecontinue:用于跳過循環(huán)體中下面尚未執(zhí)行的語句,接著重新執(zhí)行循環(huán)的判斷例:輸出100以內(nèi)能被7整除的數(shù)。 int n;int n;for(n=7;n=100;n+)for(n=7;n=100;n+) if (n%7!=0)if (n%7!=0)continue;continue;printf(%d ,n);printf(%d ,n); 第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)練習(xí):練習(xí):1.1.有一分?jǐn)?shù)序列:有一分?jǐn)?shù)序列:2/12/1,3/23/2,5/35/3,8/58/

52、5,13/813/8,21/13.21/13.求出這個(gè)數(shù)列的前求出這個(gè)數(shù)列的前2020項(xiàng)之和。項(xiàng)之和。2.2.求求1+2!+3!+.+20!1+2!+3!+.+20!的和。的和。3.3.用牛頓切線法求用牛頓切線法求x-sin(x)=0 x-sin(x)=0在區(qū)間(在區(qū)間(0 0,)之間的解。)之間的解。4.4.任意輸入兩個(gè)數(shù),求這兩個(gè)數(shù)的最大公約數(shù)。任意輸入兩個(gè)數(shù),求這兩個(gè)數(shù)的最大公約數(shù)。5.5.從鍵盤輸入一個(gè)數(shù)判斷其是否為素?cái)?shù)。從鍵盤輸入一個(gè)數(shù)判斷其是否為素?cái)?shù)。第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)作業(yè):作業(yè):求求s=a+aa+aaa+aaaa+aa.as=a+aa+aaa

53、+aaaa+aa.a的值,其中的值,其中a a是一個(gè)數(shù)字。例是一個(gè)數(shù)字。例如如2+22+222+2222+22222(2+22+222+2222+22222(此時(shí)共有此時(shí)共有5 5個(gè)數(shù)相加個(gè)數(shù)相加) ),幾個(gè)數(shù)相,幾個(gè)數(shù)相加由鍵盤輸入控制。加由鍵盤輸入控制。一球從一球從100100米高度自由落下,每次落地后反跳回原高度的米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第一半;再落下,求它在第1010次落地時(shí),共經(jīng)過多少米?第次落地時(shí),共經(jīng)過多少米?第1010次反彈多高?次反彈多高?求求1+2!+3!+.+20!1+2!+3!+.+20!的和的和1.1.猴子吃桃問題:猴子第一天摘下若

54、干個(gè)桃子,當(dāng)即吃了一猴子吃桃問題:猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不癮,又多吃了一個(gè)。第二天早上又將剩下的桃子半,還不癮,又多吃了一個(gè)。第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第下的一半零一個(gè)。到第1010天早上想再吃時(shí),見只剩下一個(gè)天早上想再吃時(shí),見只剩下一個(gè)桃子了。求第一天共摘了多少?桃子了。求第一天共摘了多少?第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)3.23.2循環(huán)的嵌套使用循環(huán)的嵌套使用【實(shí)例】【實(shí)例】 搬磚問題。搬磚問題。3636塊磚,塊磚,3636人搬,男

55、搬人搬,男搬4 4,女搬,女搬3 3,兩,兩個(gè)小孩抬一磚,要求一次全搬完,問男、女、小孩各若干?個(gè)小孩抬一磚,要求一次全搬完,問男、女、小孩各若干?1.1.分析分析: : 列方程列方程, ,得出問題條件得出問題條件: : w+m+c=36 w+m+c=36 4 4* *m+3m+3* *w+c/2=36w+c/2=36 可以用枚舉的方法,讓變量可以用枚舉的方法,讓變量w w在在09 09 、m m在在012 012 、c c在在036036的偶數(shù)中取值,形成滿足上述條件的的偶數(shù)中取值,形成滿足上述條件的w w 、m m、c c的組合的組合第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)

56、N-SN-S流程圖流程圖m9w12c=36-m-w且c%2=04*m+3*w+c/2=36輸出m、w、cTrueFalsew=0w=w+1;m=m+1;m=0第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)2.2.程序程序mainmain()()int m,w,c;int m,w,c; for(m=0;m9;m+) for(m=0;m9;m+) for(w=0;w12;w+) for(w=0;w12;w+) c=36-w-m; c=36-w-m; if(c%2!=0)continue; if(c%2!=0)continue; if(4 if(4* *m+3m+3* *w+c/2=36)

57、w+c/2=36) printf(“m=%d,w=%d,c=%d”,m,w,c); printf(“m=%d,w=%d,c=%d”,m,w,c); 第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)練習(xí):練習(xí):1.1.輸出輸出9 9* *9 9口訣。口訣。2.2.判斷判斷101-200101-200之間有多少個(gè)素?cái)?shù),并輸出所有素之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。數(shù)。3.3.打印出所有的打印出所有的“水仙花數(shù)水仙花數(shù)”,所謂,所謂“水仙花數(shù)水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:本身。例如:153153是一個(gè)是一個(gè)“水仙花數(shù)水仙

58、花數(shù)”,因?yàn)?,因?yàn)?53=1153=1的三次方的三次方5 5的三次方的三次方3 3的三次方。的三次方。第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)作業(yè):作業(yè):1.1.將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,90,打印出打印出90=290=2* *3 3* *3 3* *5 5。程序分析:對(duì)程序分析:對(duì)n n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k k,然,然后按下述步驟完成:后按下述步驟完成: (1)(1)如果這個(gè)質(zhì)數(shù)恰等于如果這個(gè)質(zhì)數(shù)恰等于n n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié),則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,

59、打印出即可。束,打印出即可。(2)(2)如果如果nknk,但,但n n能被能被k k整除,則應(yīng)打印出整除,則應(yīng)打印出k k的值,并用的值,并用n n除以除以k k的商的商, ,作為新的正整數(shù)你作為新的正整數(shù)你n,n,重復(fù)執(zhí)行第一步。重復(fù)執(zhí)行第一步。(3)(3)如果如果n n不能被不能被k k整除,則用整除,則用k+1k+1作為作為k k的值的值, ,重復(fù)執(zhí)行第一步。重復(fù)執(zhí)行第一步。2.2.一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為“完數(shù)完數(shù)”。例如例如6=16=12 23.3.編程找出編程找出10001000以內(nèi)的所有完數(shù)。以內(nèi)的所有完數(shù)。第三講第

60、三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設(shè)計(jì)語言程序設(shè)計(jì)課堂討論:課堂討論:五位跳水高手將參加十米高臺(tái)跳水決賽,有好事者讓五位跳水高手將參加十米高臺(tái)跳水決賽,有好事者讓五個(gè)人據(jù)實(shí)力預(yù)測(cè)比賽結(jié)果。五個(gè)人據(jù)實(shí)力預(yù)測(cè)比賽結(jié)果。 A A選手說:選手說:B B第二,我第三;第二,我第三;B B選手說:我第二,選手說:我第二,E E第四;第四;C C選手說:我第一,選手說:我第一,D D第二;第二;D D選手說:選手說:C C最后,我第三;最后,我第三;E E選手說:我第四,選手說:我第四,A A第一;第一; 決賽成績(jī)公布之后,每位選手的預(yù)測(cè)都只說對(duì)了一半,決賽成績(jī)公布之后,每位選手的預(yù)測(cè)都只說對(duì)了一半,即一對(duì)一錯(cuò),請(qǐng)編程解出比賽的實(shí)際名次。即一對(duì)一錯(cuò),請(qǐng)編程解出比賽的實(shí)際名次。第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論