![C語(yǔ)言教程基礎(chǔ)篇綜述_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/84786e83-f884-441f-a4a3-d5e0732c64bf/84786e83-f884-441f-a4a3-d5e0732c64bf1.gif)
![C語(yǔ)言教程基礎(chǔ)篇綜述_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/84786e83-f884-441f-a4a3-d5e0732c64bf/84786e83-f884-441f-a4a3-d5e0732c64bf2.gif)
![C語(yǔ)言教程基礎(chǔ)篇綜述_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/84786e83-f884-441f-a4a3-d5e0732c64bf/84786e83-f884-441f-a4a3-d5e0732c64bf3.gif)
![C語(yǔ)言教程基礎(chǔ)篇綜述_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/84786e83-f884-441f-a4a3-d5e0732c64bf/84786e83-f884-441f-a4a3-d5e0732c64bf4.gif)
![C語(yǔ)言教程基礎(chǔ)篇綜述_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/84786e83-f884-441f-a4a3-d5e0732c64bf/84786e83-f884-441f-a4a3-d5e0732c64bf5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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)語(yǔ)句 編碼與上機(jī)調(diào)試C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)1.1 1.1 認(rèn)識(shí)認(rèn)識(shí)C C語(yǔ)言程序語(yǔ)言程序 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í)行部分. .賦值語(yǔ)句賦值語(yǔ)句 a=sin(ba=sin(b* *3.14159/180); /3.1415
5、9/180); /執(zhí)行部分執(zhí)行部分. .賦值語(yǔ)句賦值語(yǔ)句 printf(“%fn”,a);printf(“%fn”,a);/執(zhí)行部分執(zhí)行部分. .輸出語(yǔ)句輸出語(yǔ)句 / /函數(shù)體函數(shù)體. .結(jié)束結(jié)束第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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)地址。 通過(guò)符號(hào)通過(guò)符號(hào)b可以找到相應(yīng)的存儲(chǔ)單元地址,假設(shè)可以找到相應(yīng)的存儲(chǔ)單元
7、地址,假設(shè)為為1000。 語(yǔ)句語(yǔ)句 b=30.0b=30.0; 是將值是將值30.030.0存放在地址存放在地址為為1000的的存儲(chǔ)單元存儲(chǔ)單元。第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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ì)變量賦值過(guò)程是)對(duì)變量賦值過(guò)程是“覆蓋覆蓋”過(guò)程,用新值去替換舊過(guò)程,用新值去替換舊(4)讀出變量的值,該變量保持不變)讀出變量的值,該變量保持不變 (5)參與表達(dá)式運(yùn)算的所有變量都保持原來(lái)的值不變)參與表達(dá)式運(yùn)算的所有變量都保持原來(lái)的值不變第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)變量賦值過(guò)程變量賦值過(guò)程 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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)7. 7. 輸出語(yǔ)句輸出語(yǔ)句 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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)格式控制是用雙引號(hào)括起來(lái)的字符串,稱格式控制是用雙引號(hào)括起來(lái)的字符串,稱“轉(zhuǎn)換控制字符轉(zhuǎn)換控制字符串串”%f 第一個(gè)輸出表列的格式說(shuō)明,以小數(shù)形式輸出單、第一個(gè)輸出表列的格式說(shuō)明,以小數(shù)形式輸出單、雙精度實(shí)數(shù),隱含輸出雙精度實(shí)數(shù),隱含輸出6位小數(shù)位小數(shù) %d 第二個(gè)輸出表列的格式說(shuō)明,以帶有符號(hào)的十第二個(gè)輸出表列的格式說(shuō)明,以
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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)為了醒目,格式控制項(xiàng)中除格式說(shuō)明之外可以有為了醒目,格式控制項(xiàng)中除格式說(shuō)明之外可以有 普通字符普通字符例例: 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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)9. 算術(shù)運(yùn)算符算術(shù)運(yùn)算符 加加 減減 *乘乘 / 除除 % 模(取余數(shù))模(取余數(shù))第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)1.3 1.3 作業(yè)作業(yè)第一講第一講 簡(jiǎn)單的簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 我們?cè)谌粘I钪薪?jīng)常需要處理具有兩個(gè)分支的問(wèn)題,例我們?cè)谌粘I钪薪?jīng)常需要處理具有兩個(gè)分支的問(wèn)題,例如,如果明天下雨,則
14、在教室內(nèi)組織活動(dòng),否則去野游。如,如果明天下雨,則在教室內(nèi)組織活動(dòng),否則去野游。 在在C C語(yǔ)言中,這類問(wèn)題需要使用語(yǔ)言中,這類問(wèn)題需要使用ifif語(yǔ)句解決,而判斷操語(yǔ)句解決,而判斷操作通常使用關(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)2.1 2.1 掌握掌握ifif語(yǔ)句的使用方法語(yǔ)句的使用方法【實(shí)例】編寫程序,判斷輸入的整數(shù)是否為實(shí)例】編寫程序,判斷輸入的整數(shù)是否為6 6,若是,顯示,若是,顯示“RightRig
15、ht!”和和“Great!”Great!”,否則顯示,否則顯示“WrongWrong!”和和“SorrySorry!”。 1編程思路:編程思路: 要顯示要顯示“RightRight!”和和“GreatGreat!”,應(yīng)執(zhí)行兩條語(yǔ)句,應(yīng)執(zhí)行兩條語(yǔ)句“printf(”Rightprintf(”Right!n“);”n“);”和和“printf(”Greatprintf(”Great!n“);”n“);”,要顯示,要顯示“WrongWrong!”和和“SorrySorry!”,執(zhí)行兩條語(yǔ),執(zhí)行兩條語(yǔ)句句“printf(”Wrongprintf(”Wrong! n“);”n“);”和和“printf(
16、”Sorryprintf(”Sorry!n“);”n“);”。本題需要根據(jù)所輸入的值(假設(shè)賦給。本題需要根據(jù)所輸入的值(假設(shè)賦給a a)是否為)是否為6 6來(lái)選擇執(zhí)行相應(yīng)的兩條語(yǔ)句。來(lái)選擇執(zhí)行相應(yīng)的兩條語(yǔ)句。 在在C C語(yǔ)言中判斷語(yǔ)言中判斷a a中的值是否為中的值是否為6 6,使用,使用“if(a=6)”if(a=6)”形式。形式。 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)本實(shí)例的流程圖如圖所示 開始輸入a值a=6顯示“Right!”顯示“Great!”顯示“Wrong!”顯示“Sorry!”結(jié)束假真第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)本實(shí)例的N-S流程圖如
17、圖所示輸入a的值a=6顯示“Right!” 顯示“Great!” 顯示“Wrong!” 顯示“Sorry! ” 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)2 2程序代碼程序代碼:#include main() int a=0; printf(Input a:); scanf(%d,&a); printf(a=%dn,a); if(a=6)/* if語(yǔ)句開始語(yǔ)句開始 */ printf(Right!n); printf(Great!n); else printf(Wrong!n); printf(Sorry!n); /* if語(yǔ)句結(jié)束語(yǔ)句結(jié)束 */第二講第二講 分支結(jié)構(gòu)分支
18、結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言表達(dá)式連接起來(lái)的表達(dá)式稱為關(guān)系語(yǔ)言表達(dá)式連接起來(lái)的表達(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(2 2)程序中的)程序中的“if(a=6)”if(a=6)”是是ifif語(yǔ)句的開始部分。語(yǔ)句的開始部分。 本例題需要根據(jù)本例題需要根據(jù)“a=6”a=6”是否為是否為“真真”來(lái)選擇執(zhí)行不同的來(lái)選擇執(zhí)行不同的兩個(gè)輸出語(yǔ)句。處理兩個(gè)分支的問(wèn)題時(shí)常使用兩個(gè)輸出語(yǔ)句。處理兩個(gè)分支的問(wèn)題時(shí)常使用ifif語(yǔ)句。語(yǔ)句。ifif語(yǔ)句語(yǔ)句根據(jù)其后面括號(hào)中表達(dá)式的結(jié)果,選擇執(zhí)行某個(gè)分支程序段。根據(jù)其后面括號(hào)中表達(dá)式的結(jié)果,選擇執(zhí)行某個(gè)分支程序段。 ifif語(yǔ)句的一般形式如下:語(yǔ)句的一般形式如下: if(if(表達(dá)式表達(dá)式) ) 語(yǔ)句組語(yǔ)句組1 1 else else
21、語(yǔ)句組語(yǔ)句組2 2 “if” “if”和和“else”else”是關(guān)鍵字。當(dāng)表達(dá)式結(jié)果為是關(guān)鍵字。當(dāng)表達(dá)式結(jié)果為“真真”(即(即不等不等于于0 0)時(shí),執(zhí)行語(yǔ)句組)時(shí),執(zhí)行語(yǔ)句組1 1,表達(dá)式結(jié)果為,表達(dá)式結(jié)果為“假假”(即等于(即等于0 0)時(shí),)時(shí),執(zhí)行語(yǔ)句組執(zhí)行語(yǔ)句組2 2。在語(yǔ)句組。在語(yǔ)句組1 1和語(yǔ)句組和語(yǔ)句組2 2中只能選擇執(zhí)行一組,而中只能選擇執(zhí)行一組,而后執(zhí)行整個(gè)后執(zhí)行整個(gè)ifif語(yǔ)句后面的語(yǔ)句。語(yǔ)句后面的語(yǔ)句。 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(3) C語(yǔ)言中允許程序中的if語(yǔ)句不帶else部分。省略else的if語(yǔ)句一般形式如下: if(表達(dá)式) 語(yǔ)
22、句組 此if語(yǔ)句的執(zhí)行過(guò)程: 當(dāng)表達(dá)式結(jié)果為“真”時(shí),執(zhí)行語(yǔ)句組,表達(dá)式結(jié)果為“假”時(shí),不處理。 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)2.2學(xué)會(huì)使用邏輯運(yùn)算符 處理問(wèn)題時(shí)經(jīng)常需要同時(shí)判斷多個(gè)條件。例如,在某學(xué)生數(shù)學(xué)和英語(yǔ)成績(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)4 4歸納分析:歸納分析: 程序中的“w=50 & w0且w0 & w0 & w=50 w=50 w=55) / /* * 內(nèi)嵌內(nèi)嵌ifif語(yǔ)句開始語(yǔ)句開始 * */ /printf(“Okn);printf(“Okn);elseelseprintf(Non);/printf(Non)
25、;/* * 內(nèi)嵌內(nèi)嵌ifif語(yǔ)句結(jié)束語(yǔ)句結(jié)束 * */ / elseelseprintf(Data over!n);/printf(Data over!n);/* * 外嵌外嵌ifif語(yǔ)句結(jié)束語(yǔ)句結(jié)束 * */ / 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)4歸納分析:(1)本程序在一個(gè)if語(yǔ)句中包含了另一個(gè)if語(yǔ)句。在if語(yǔ)句的語(yǔ)句組1或語(yǔ)句組2中又包含另一個(gè)分支結(jié)構(gòu)的if語(yǔ)句稱為嵌套的if語(yǔ)句。(2)本程序中出現(xiàn)了兩次else。 C語(yǔ)法規(guī)定,在if語(yǔ)句中,若多次出現(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程
27、序設(shè)計(jì)2.42.4學(xué)會(huì)使用學(xué)會(huì)使用if-else ifif-else if形式的嵌套形式的嵌套ifif語(yǔ)句語(yǔ)句 【實(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)2.5 switch語(yǔ)句 在日常生活中經(jīng)常遇到菜單選擇操作,例如,用ATM自動(dòng)取款機(jī)取錢時(shí),從菜單中可以選擇語(yǔ)種、取款額;用自動(dòng)服務(wù)系統(tǒng)給手機(jī)充值時(shí),可以選擇查余額還是充值,對(duì)本機(jī)充值還是對(duì)其他號(hào)碼充值等。這些問(wèn)題一般使用switch語(yǔ)句解決。 總之,這些問(wèn)題都是多分支情況。第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)
34、3 3歸納分析:歸納分析:switchswitch語(yǔ)句的一般形式為:語(yǔ)句的一般形式為:switch(switch(表達(dá)式表達(dá)式) ) case case 表達(dá)式表達(dá)式1: 1: 語(yǔ)句組語(yǔ)句組1 break;1 break; case case 表達(dá)式表達(dá)式2: 2: 語(yǔ)句組語(yǔ)句組2 break;2 break; case case 表達(dá)式表達(dá)式n: n: 語(yǔ)句組語(yǔ)句組n break;n break; default: default: 語(yǔ)句組語(yǔ)句組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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)2.6 2.6 條件運(yùn)算符及其表達(dá)式條件運(yùn)算符及其表達(dá)式 C C語(yǔ)言中條件運(yùn)算符由語(yǔ)言中條件運(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)課堂討論:誰(shuí)做的好事?課堂討論:誰(shuí)做的好事?忻州師院有四位同學(xué)中的一位做了好事,不留名
37、,表?yè)P(yáng)信來(lái)忻州師院有四位同學(xué)中的一位做了好事,不留名,表?yè)P(yáng)信來(lái)了之后,校長(zhǎng)問(wèn)這四位是誰(shuí)做的好事。了之后,校長(zhǎng)問(wèn)這四位是誰(shuí)做的好事。 A說(shuō):不是我。說(shuō):不是我。 B說(shuō):說(shuō):是是C。 C說(shuō):是說(shuō):是D。 D說(shuō):說(shuō):C胡說(shuō)。胡說(shuō)。 已知三個(gè)人說(shuō)的是真話,已知三個(gè)人說(shuō)的是真話,一個(gè)人說(shuō)的是假話。現(xiàn)在要根據(jù)這些信息,找出做了好事的一個(gè)人說(shuō)的是假話?,F(xiàn)在要根據(jù)這些信息,找出做了好事的人。畫出人。畫出N-S流程圖并寫出程序。流程圖并寫出程序。第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)顯然,不是顯然,不是AA做的好事(四個(gè)關(guān)系表達(dá)式值的和為做的好事(四個(gè)關(guān)系表達(dá)式值的和為1 1)第二講第二講 分
38、支結(jié)構(gòu)分支結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)顯然,不是顯然,不是BB所為(四個(gè)關(guān)系表達(dá)式值的和為所為(四個(gè)關(guān)系表達(dá)式值的和為2 2)第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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)體。 語(yǔ)言提供了三種循環(huán)語(yǔ)言提供了三種循環(huán)語(yǔ)句,可以組成各種不同形式的循環(huán)結(jié)構(gòu)語(yǔ)句,可以組成各種不同形式的循環(huán)結(jié)構(gòu), ,它們是它們是: : 語(yǔ)句語(yǔ)句 語(yǔ)句語(yǔ)句 語(yǔ)句語(yǔ)句第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)3.1 3.1 簡(jiǎn)單循環(huán)簡(jiǎn)單循環(huán)【實(shí)例】古典問(wèn)題:有一對(duì)兔子,從出生后第【實(shí)例】古典問(wèn)題:有一對(duì)兔子,從出生后第3 3個(gè)月起每個(gè)月都個(gè)月起每個(gè)月都生一對(duì)兔
40、子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)每個(gè)月的兔子總數(shù)為多少?假如兔子都不死,問(wèn)每個(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)2.程序源代碼:方法一:for循環(huán)語(yǔ)句#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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)方法二:while循環(huán)語(yǔ)句#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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)方法三:do-while循環(huán)語(yǔ)句#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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)3.3.歸納分析歸納分析(1 1)forfor語(yǔ)句格式:語(yǔ)句格式: for ( for ( 表達(dá)式表達(dá)式1 ; 1 ; 表達(dá)式表達(dá)式2 ; 2 ; 表達(dá)式表達(dá)式3 ) 3 ) 語(yǔ)句語(yǔ)句 即:即: for (for (循環(huán)變量賦初值循環(huán)變量賦初值 , , 循環(huán)結(jié)束條件循環(huán)結(jié)束條件 , , 循環(huán)變量增值循環(huán)變量增值 ) ) 語(yǔ)句語(yǔ)句 第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)ForFor語(yǔ)句執(zhí)行過(guò)
45、程語(yǔ)句執(zhí)行過(guò)程表達(dá)式1 表達(dá)式2 表達(dá)式3 語(yǔ) 句 YN第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(2) while(2) while語(yǔ)句的一般形式為:語(yǔ)句的一般形式為: while(while(表達(dá)式表達(dá)式) ) 語(yǔ)句;語(yǔ)句; 其中表達(dá)式是循環(huán)條件,語(yǔ)句為循環(huán)體。其中表達(dá)式
48、是循環(huán)條件,語(yǔ)句為循環(huán)體。whilewhile語(yǔ)句的語(yǔ)義是:語(yǔ)句的語(yǔ)義是: 計(jì)算表達(dá)式的值,當(dāng)值為真計(jì)算表達(dá)式的值,當(dāng)值為真( (非非0)0)時(shí),執(zhí)行循環(huán)體語(yǔ)句。時(shí),執(zhí)行循環(huán)體語(yǔ)句。第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)使用使用whilewhile語(yǔ)句應(yīng)注意以下幾點(diǎn):語(yǔ)句應(yīng)注意以下幾點(diǎn):1.while1.while語(yǔ)句中的表達(dá)式一般是關(guān)系表達(dá)或邏輯表達(dá)式,只語(yǔ)句中的表達(dá)式一般是關(guān)系表達(dá)或邏輯表達(dá)式,只要表達(dá)式的值為真要表達(dá)式的值為真( (非非0)0)即可繼續(xù)循環(huán)。即可繼續(xù)循環(huán)。2.2.循環(huán)體如包括有一個(gè)以上的語(yǔ)句,則必須用循環(huán)體如包括有一個(gè)以上的語(yǔ)句,則必須用括起來(lái),括起來(lái),
49、 組成復(fù)合語(yǔ)句。組成復(fù)合語(yǔ)句。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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(3) do-while(3) do-while語(yǔ)句的一般形式為:語(yǔ)句的一般形式為: dodo語(yǔ)句;語(yǔ)句; while(while(表達(dá)式表達(dá)式) ); 其中語(yǔ)句是循環(huán)體,表達(dá)式是循環(huán)條件。其中語(yǔ)句是循環(huán)體,表達(dá)式是循環(huán)條件。do-whiledo-while語(yǔ)句的語(yǔ)義是:語(yǔ)句的語(yǔ)義是:先執(zhí)行循環(huán)體語(yǔ)句一次,先執(zhí)行循環(huán)體語(yǔ)句一次, 再判別表達(dá)式的值,若為真
50、再判別表達(dá)式的值,若為真( (非非0)0)則繼續(xù)循環(huán),否則終止循環(huán)。則繼續(xù)循環(huán),否則終止循環(huán)。do-whiledo-while語(yǔ)句和語(yǔ)句和whilewhile語(yǔ)句的區(qū)別在于語(yǔ)句的區(qū)別在于do-whiledo-while是先執(zhí)行后是先執(zhí)行后判斷,因此判斷,因此do-whiledo-while至少要執(zhí)行一次至少要執(zhí)行一次循環(huán)體。而循環(huán)體。而whilewhile是先是先判斷后執(zhí)行,如果條件不滿足,則一次循環(huán)體語(yǔ)句也不執(zhí)判斷后執(zhí)行,如果條件不滿足,則一次循環(huán)體語(yǔ)句也不執(zhí)行。行。第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(4)(4)循環(huán)體語(yǔ)句可使用breakbreak 和continuec
51、ontinue語(yǔ)句breakbreak:可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體(提前結(jié)束循環(huán))continuecontinue:用于跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著重新執(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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)過(guò)多少米?第次落地時(shí),共經(jīng)過(guò)多少米?第1010次反彈多高?次反彈多高?求求1+2!+3!+.+20!1+2!+3!+.+20!的和的和1.1.猴子吃桃問(wèn)題:猴子第一天摘下若
54、干個(gè)桃子,當(dāng)即吃了一猴子吃桃問(wèn)題:猴子第一天摘下若干個(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)3.23.2循環(huán)的嵌套使用循環(huán)的嵌套使用【實(shí)例】【實(shí)例】 搬磚問(wèn)題。搬磚問(wèn)題。3636塊磚,塊磚,3636人搬,男
55、搬人搬,男搬4 4,女搬,女搬3 3,兩,兩個(gè)小孩抬一磚,要求一次全搬完,問(wèn)男、女、小孩各若干?個(gè)小孩抬一磚,要求一次全搬完,問(wèn)男、女、小孩各若干?1.1.分析分析: : 列方程列方程, ,得出問(wèn)題條件得出問(wèn)題條件: : 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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(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,則說(shuō)明分解質(zhì)因數(shù)的過(guò)程已經(jīng)結(jié),則說(shuō)明分解質(zhì)因數(shù)的過(guò)程已經(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語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)課堂討論:課堂討論:五位跳水高手將參加十米高臺(tái)跳水決賽,有好事者讓五位跳水高手將參加十米高臺(tái)跳水決賽,有好事者讓五個(gè)人據(jù)實(shí)力預(yù)測(cè)比賽結(jié)果。五個(gè)人據(jù)實(shí)力預(yù)測(cè)比賽結(jié)果。 A A選手說(shuō):選手說(shuō):B B第二,我第三;第二,我第三;B B選手說(shuō):我第二,選手說(shuō):我第二,E E第四;第四;C C選手說(shuō):我第一,選手說(shuō):我第一,D D第二;第二;D D選手說(shuō):選手說(shuō):C C最后,我第三;最后,我第三;E E選手說(shuō):我第四,選手說(shuō):我第四,A A第一;第一; 決賽成績(jī)公布之后,每位選手的預(yù)測(cè)都只說(shuō)對(duì)了一半,決賽成績(jī)公布之后,每位選手的預(yù)測(cè)都只說(shuō)對(duì)了一半,即一對(duì)一錯(cuò),請(qǐng)編程解出比賽的實(shí)際名次。即一對(duì)一錯(cuò),請(qǐng)編程解出比賽的實(shí)際名次。第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 質(zhì)量控制計(jì)劃
- 2025年旅游景區(qū)管理服務(wù)項(xiàng)目合作計(jì)劃書
- 重磅!2025年中國(guó)儲(chǔ)熱行業(yè)發(fā)展前景及市場(chǎng)空間預(yù)測(cè)報(bào)告(智研咨詢)
- 2021青島版小學(xué)科學(xué)三年級(jí)下冊(cè)教案(精修版)
- 廣東省惠州市2024-2025學(xué)年高一上學(xué)期期末考試語(yǔ)文試題 含解析
- 2025年節(jié)能、高效果蔬保鮮裝置項(xiàng)目發(fā)展計(jì)劃
- 高效率辦公解決方案實(shí)踐手冊(cè)
- 農(nóng)具租賃合同
- 肖像權(quán)使用許可協(xié)議
- 農(nóng)業(yè)行業(yè)物聯(lián)網(wǎng)技術(shù)在種植管理中的應(yīng)用方案
- 行政法-9行政確認(rèn)
- 人教版(2024新版)一年級(jí)上冊(cè)數(shù)學(xué)第一單元《數(shù)學(xué)游戲》單元整體教學(xué)設(shè)計(jì)
- 防洪防汛安全知識(shí)教育課件
- 一年級(jí)科學(xué)石頭
- 部編人教版八年級(jí)語(yǔ)文下冊(cè)全冊(cè)課件
- 2024電動(dòng)汽車用鋰離子動(dòng)力電池包和系統(tǒng)電性能試驗(yàn)方法
- DZT 0447-2023 巖溶塌陷調(diào)查規(guī)范(1:50000)
- 新起點(diǎn)英語(yǔ)二年級(jí)下冊(cè)全冊(cè)教案
- 《紅星照耀中國(guó)》整本書閱讀教學(xué)設(shè)計(jì)-統(tǒng)編版語(yǔ)文八年級(jí)上冊(cè)
- 【幼兒園戶外體育活動(dòng)材料投放的現(xiàn)狀調(diào)查報(bào)告(定量論文)8700字】
- 洗煤廠安全規(guī)程培訓(xùn)
評(píng)論
0/150
提交評(píng)論