C語言教程基礎篇【全免費】_第1頁
C語言教程基礎篇【全免費】_第2頁
C語言教程基礎篇【全免費】_第3頁
C語言教程基礎篇【全免費】_第4頁
C語言教程基礎篇【全免費】_第5頁
已閱讀5頁,還剩180頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

4、標準輸入輸出函數(shù) /作為頭文件包擴到用戶源文件中作為頭文件包擴到用戶源文件中 #include /#include /預編譯命令預編譯命令, ,將系統(tǒng)提供的數(shù)學函數(shù)將系統(tǒng)提供的數(shù)學函數(shù) /作為頭文件包擴到用戶源文件中作為頭文件包擴到用戶源文件中 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);

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

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

7、相應的存儲單元地址,假設為為1000。 語句語句 b=30.0b=30.0; 是將值是將值30.030.0存放在地址存放在地址為為1000的的存儲單元存儲單元。第一講第一講 簡單的簡單的C C程序設計程序設計C語言程序設計語言程序設計5.5.對變量的賦值對變量的賦值 賦值符號賦值符號“=” b = 30.0;/ 讀作將表達式的值讀作將表達式的值30.0賦給變量賦給變量b a=sin(b*3.14159/180); / 讀作將表達式(正弦函數(shù))的值賦給變量讀作將表達式(正弦函數(shù))的值賦給變量a 第一講第一講 簡單的簡單的C C程序設計程序設計C語言程序設計語言程序設計6.6.變量賦值特點變量賦值

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

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

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

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

12、f(“a=%fnb: printf(“a=%fnb=%d”,a,b);=%d”,a,b);輸出結(jié)果為:輸出結(jié)果為: a=85.560000a=85.560000 b=100 b=100 域?qū)捄途扔驅(qū)捄途壤豪簆rintfprintf(”%5.3f”%5.3f”,a a);第一講第一講 簡單的簡單的C C程序設計程序設計C語言程序設計語言程序設計8. 數(shù)學函數(shù)數(shù)學函數(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 xf

13、abs(x) xfmod(x,y) 整除整除x/y的余數(shù)的余數(shù)floor(x) 求不大于求不大于x的最大整數(shù)的最大整數(shù)pow(x, y) xysqrt(x) x1/2第一講第一講 簡單的簡單的C C程序設計程序設計C語言程序設計語言程序設計9. 算術(shù)運算符算術(shù)運算符 加加 減減 *乘乘 / 除除 % 模(取余數(shù))模(取余數(shù))第一講第一講 簡單的簡單的C C程序設計程序設計C語言程序設計語言程序設計1.3 1.3 作業(yè)作業(yè)第一講第一講 簡單的簡單的C C程序設計程序設計C語言程序設計語言程序設計 我們在日常生活中經(jīng)常需要處理具有兩個分支的問題,例我們在日常生活中經(jīng)常需要處理具有兩個分支的問題,例

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

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

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

17、實例的N-S流程圖如圖所示輸入a的值a=6顯示“Right!” 顯示“Great!” 顯示“Wrong!” 顯示“Sorry! ” 第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設計語言程序設計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é)束 */第二講

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

19、連接起來的表達式稱為關系表達式。關系運算的判斷結(jié)果只有表達式。關系運算的判斷結(jié)果只有“真真”或或“假假”兩種可兩種可能,關系成立時為能,關系成立時為“真真”,不成立時為,不成立時為“假假”。關系表達式的值只能是關系表達式的值只能是1 1或或0 0,當關系運算的判斷結(jié)果為,當關系運算的判斷結(jié)果為“真真”時,關系表達式的值為時,關系表達式的值為 1 1,否則,關系表達式的值為,否則,關系表達式的值為0 0。例。例如,當如,當a a的值為的值為6 6時,關系表達式時,關系表達式“a=6”a=6”的值為的值為1 1,當,當a a的的值為值為5 5時,關系表達式時,關系表達式“a=6”a=6”的值為的值

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

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

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

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

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

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

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

27、序設計語言程序設計2.42.4學會使用學會使用if-else ifif-else if形式的嵌套形式的嵌套ifif語句語句 【實例】編寫程序,求下面分段函數(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語言程序設計語言程序設計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語言程序設計語言程

28、序設計2 2程序代碼:程序代碼:#include stdio.h#include main()main() float x=0,y=0;float x=0,y=0;printf(Inputprintf(Input x:); 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 printf(x=%f

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

30、運算。如選擇了加法,則進行求和運算。Please choose Please choose + : addition+ : addition- : subtraction- : subtraction* * : multiplication : multiplication/ : division/ : division第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設計語言程序設計1 1程序代碼:程序代碼:#include stdio.h#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;ch

31、ar sym=0;printf(Pleaseprintf(Please choosen); choosen);printfprintf(+ : additionn);(+ : additionn);printfprintf(- : subtractionn);(- : subtractionn);printfprintf(* * : multiplicationn); : multiplicationn);printfprintf(/ : divisionn);(/ : divisionn);sym=getcharsym=getchar();();printf(%f%c%fprintf(%f%

32、c%f=,a,sym,b); =,a,sym,b); / /* * 顯示算式顯示算式 * */ /第二講第二講 分支結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設計語言程序設計switch(sym) switch(sym) / /* * 計算算式計算算式 * */ / 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;

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

34、結(jié)構(gòu)分支結(jié)構(gòu)C語言程序設計語言程序設計3 3歸納分析歸納分析:switchswitch語句的一般形式為:語句的一般形式為:switch(switch(表達式表達式) ) case case 表達式表達式1: 1: 語句組語句組1 break;1 break; case case 表達式表達式2: 2: 語句組語句組2 break;2 break; case case 表達式表達式n: n: 語句組語句組n break;n break; default: default: 語句組語句組n+1 break;n+1 break; 其中其中switchswitch、casecase、defaultde

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

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

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

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

39、構(gòu)是程序中一種很重要的結(jié)構(gòu)。其特點是,是, 在給定條件成立時,反復執(zhí)行某程序段,直到在給定條件成立時,反復執(zhí)行某程序段,直到條件不成立為止。條件不成立為止。 給定的條件稱為循環(huán)條件,反復給定的條件稱為循環(huán)條件,反復執(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語言程序設計語言程序設計3.1 3.1 簡單循環(huán)簡單循環(huán)【實例】古典問題:有一對兔子,從出生后第【實例】古典問題:有一對兔子,從出生后第3 3

40、個月起每個月都個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少?假如兔子都不死,問每個月的兔子總數(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項項第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設計語言程序設計i=20a1=1;a2=1; i=3an

41、=a1+a2輸出ani=i+1;a1=a2;a2=an;YendbeginN第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設計語言程序設計該題目的該題目的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語言程序設計語言程序設計2.程序源代碼:方法一:for循環(huán)語句#include stdio.h#include stdio.hmain( )main( ) long a1,a2,an;long a1,a2,an; intint i; i; a1=a2=1;a1=a2=1; for(i=3;i=20;i+

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

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

44、%d=%ld”,i,an); =%ld”,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語言程序設計語言程序設計3.3.歸納分析歸納分析(1 1)forfor語句格式:語句格式: for ( for ( 表達式表達式1 ; 1 ; 表達式表達式2 ; 2 ; 表達式表達式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語言

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

46、r ( i=1 for ( i=1;i=50 i=50 ;) ) sum=sum+2 sum=sum+2* *i; i+;i; i+;d) d) 省略表達式省略表達式1 , 1 , 省略表達式省略表達式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語言程序設計語言程序設計表達式表達式1 1,表達式,表達式3 3可以是:可以是: a) a) 簡單的表達式簡單的表達式 b)b)逗號表達式逗號表達式表達式表達式2 2 一般是關系表達式或邏輯表達式一般是關系表達式或

47、邏輯表達式例:例:for ( sum=0 for ( 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語言程序設計語言程序設計(2) while(2) while語句的一般形式為:語句的一般形式為: while(while(表達式表達式) ) 語句;語句; 其

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

49、括有一個以上的語句,則必須用括起來,括起來, 組成復合語句。組成復合語句。3.3.應注意循環(huán)條件的選擇以避免死循環(huán)應注意循環(huán)條件的選擇以避免死循環(huán), ,一般需要在循環(huán)體一般需要在循環(huán)體中動態(tài)改變循環(huán)條件的值。中動態(tài)改變循環(huán)條件的值。第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設計語言程序設計(3) do-while(3) do-while語句的一般形式為:語句的一般形式為: dodo語句;語句; while(while(表達式表達式) ); 其中語句是循環(huán)體,表達式是循環(huán)條件。其中語句是循環(huán)體,表達式是循環(huán)條件。do-whiledo-while語句的語義是:語句的語義是:先執(zhí)行循環(huán)體語句一次,先執(zhí)

50、行循環(huán)體語句一次, 再判別表達式的值,若為真再判別表達式的值,若為真( (非非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語言程序設計語言程序設計(4)(4)循環(huán)體語句可使

51、用breakbreak 和continuecontinue語句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(%dprintf(%d ,n); ,n); 第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設計語言程序設計練習:練習:1.1.有一分數(shù)序列:有一分數(shù)序列:2/12

52、/1,3/23/2,5/35/3,8/58/5,13/813/8,21/13.21/13.求出這個數(shù)列的前求出這個數(shù)列的前2020項之和。項之和。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.任意輸入兩個數(shù),求這兩個數(shù)的最大公約數(shù)。任意輸入兩個數(shù),求這兩個數(shù)的最大公約數(shù)。5.5.從鍵盤輸入一個數(shù)判斷其是否為素數(shù)。從鍵盤輸入一個數(shù)判斷其是否為素數(shù)。第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設計語言程序設計作業(yè):作業(yè):1.1.求求s=a+

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

54、2!+3!+.+20!的和的和4.4.猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個。第二天早上又將剩下的桃子半,還不癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第下的一半零一個。到第1010天早上想再吃時,見只剩下一個天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少?桃子了。求第一天共摘了多少?第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設計語言程序設計3.23.2循環(huán)的嵌套使用循環(huán)的嵌套使用【實例

55、【實例】 搬磚問題。搬磚問題。3636塊磚,塊磚,3636人搬,男搬人搬,男搬4 4,女搬,女搬3 3,兩,兩個小孩抬一磚,要求一次全搬完,問男、女、小孩各若干?個小孩抬一磚,要求一次全搬完,問男、女、小孩各若干?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的

56、組合的組合第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設計語言程序設計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語言程序設計語言程序設計2.2.程序程序mainmain()()intint m,w,c; 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)continu

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

58、該數(shù)本身。例如:本身。例如:153153是一個是一個“水仙花數(shù)水仙花數(shù)”,因為,因為153=1153=1的三次方的三次方5 5的三次方的三次方3 3的三次方。的三次方。第三講第三講 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)C語言程序設計語言程序設計作業(yè):作業(yè):1.1.將一個正整數(shù)分解質(zhì)因數(shù)。例如:輸入將一個正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,90,打印出打印出90=290=2* *3 3* *3 3* *5 5。程序分析:對程序分析:對n n進行分解質(zhì)因數(shù),應先找到一個最小的質(zhì)數(shù)進行分解質(zhì)因數(shù),應先找到一個最小的質(zhì)數(shù)k k,然,然后按下述步驟完成:后按下述步驟完成: (1)(1)如果這個質(zhì)數(shù)恰等于如果這個質(zhì)數(shù)恰等于n

59、n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié),則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印出即可。束,打印出即可。(2)(2)如果如果nknk,但,但n n能被能被k k整除,則應打印出整除,則應打印出k k的值,并用的值,并用n n除以除以k k的商的商, ,作為新的正整數(shù)你作為新的正整數(shù)你n,n,重復執(zhí)行第一步。重復執(zhí)行第一步。(3)(3)如果如果n n不能被不能被k k整除,則用整除,則用k+1k+1作為作為k k的值的值, ,重復執(zhí)行第一步。重復執(zhí)行第一步。2.2.一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)完數(shù)”。例如例如6=16=12 23.3.編程找

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論