華東理工大學C程序設計(2014)_第1頁
華東理工大學C程序設計(2014)_第2頁
華東理工大學C程序設計(2014)_第3頁
華東理工大學C程序設計(2014)_第4頁
華東理工大學C程序設計(2014)_第5頁
已閱讀5頁,還剩418頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、2關于本課程的學習關于本課程的學習l 為什么要學本課程為什么要學本課程l 怎么來學習本課程怎么來學習本課程3關于本課程的學習關于本課程的學習l 為什么要學程序設計?為什么要學程序設計?4關于本課程的學習關于本課程的學習為什么要學為什么要學C C?l C C不實用?不實用?l C C落后了?落后了?l C C難學?難學?5關于本課程的學習關于本課程的學習l 怎么來學習本課程?怎么來學習本課程?6C程序設計程序設計第一章第一章C語言概述語言概述第二章第二章數據類型及基本運算數據類型及基本運算第三章第三章順序結構程序設計順序結構程序設計第四章第四章選擇結構程序設計選擇結構程序設計第五章第五章循環結構

2、程序設計循環結構程序設計第六章第六章數組數組第七章第七章函數函數第八章第八章指針指針第九章第九章結構與其他自定義類型結構與其他自定義類型第十章第十章文件文件7第一章第一章 C語言概述語言概述l 概述概述l C程序簡介程序簡介8概述概述l 程序設計與高級語言程序設計與高級語言l C語言的產生與發展語言的產生與發展l C語言的特點語言的特點9程序設計與高級語言程序設計與高級語言l 機器指令機器指令l 指令系統指令系統l 機器語言機器語言l 機器程序機器程序10程序設計與高級語言程序設計與高級語言l 匯編指令匯編指令l 匯編語言匯編語言l 匯編語言源程序匯編語言源程序l 匯編程序匯編程序例例11程序

3、設計與高級語言程序設計與高級語言l 程序設計語言程序設計語言l 低級語言和高級語言低級語言和高級語言l 高級語言源程序、編高級語言源程序、編譯程序譯程序l 集成環境集成環境例:例:TC、VC等等12C語言的產生與發展語言的產生與發展l C語言發明于語言發明于1972年年l C+發明于發明于1980年年13C語言的特點語言的特點l 語言描述簡潔、靈活、高效語言描述簡潔、靈活、高效l 有豐富的數據類型和運算符有豐富的數據類型和運算符l 提供了功能齊全的函數庫提供了功能齊全的函數庫l 具有結構化程序設計風格具有結構化程序設計風格l 具有匯編語言特征具有匯編語言特征l 具有良好的通用性和程序的可移埴性

4、具有良好的通用性和程序的可移埴性14C程序簡介程序簡介l C程序設計規則程序設計規則l C程序的編譯與運行程序的編譯與運行簡單的簡單的C C程序程序( (一一) )簡單的簡單的C C程序程序( (二二) )簡單的簡單的C C程序程序( (三三) )15C程序設計規則程序設計規則l 程序中使用到的一切數據都必須在程序中使用到的一切數據都必須在使用之前對其類型和存儲屬性加以使用之前對其類型和存儲屬性加以定義和說明定義和說明l 函數是函數是C程序的基本模塊,它應該包程序的基本模塊,它應該包括函數名、參數說明表和函數體三括函數名、參數說明表和函數體三個部分個部分16C程序設計規則程序設計規則l一行上允

5、許寫多個語句,或一句語句分一行上允許寫多個語句,或一句語句分寫在多行上,但語句結束前必須加分號寫在多行上,但語句結束前必須加分號l允許在程序中插入注釋,注釋行必須以允許在程序中插入注釋,注釋行必須以規定的符號規定的符號“/*”開頭,以符號開頭,以符號“*/”結結束束l書寫格式自由,為提高程序的可讀性,書寫格式自由,為提高程序的可讀性,可采用可采用“縮進縮進”方式書寫方式書寫17C程序的編譯與運行程序的編譯與運行l Cl C+l TCl VC18第第1章作業:章作業:l 利用利用printf函數打印自函數打印自己的姓名。己的姓名。將源文件將源文件hw1_1.c上上傳傳19第二章第二章 數據類型及

6、基本運算數據類型及基本運算l 數據的表示數據的表示l 基本數據類型及其表示基本數據類型及其表示l 算術運算符和算術表達式算術運算符和算術表達式20數據的表示數據的表示l 信息與數據的特征信息與數據的特征l 數據類型數據類型21信息與數據的特征信息與數據的特征l 信息信息l 數據數據l 數據處理數據處理22數據類型數據類型在在C語言中,數據總體上可分為語言中,數據總體上可分為l 基本類型基本類型l 構造類型構造類型l 指針類型指針類型23基本數據類型及其表示基本數據類型及其表示l 標識符、常量與變量標識符、常量與變量l 整型數據整型數據l 實型數據實型數據l 字符型數據字符型數據24標識符、常量

7、與變量標識符、常量與變量l 標識符標識符l 常量常量l 變量變量25標識符必須滿足以下定義規則:標識符必須滿足以下定義規則:l 必須由字母或下劃線開始,由字必須由字母或下劃線開始,由字母、數字和下劃線組成的長度不母、數字和下劃線組成的長度不超過超過32的字符串的字符串l 大、小寫字母表示不同意義大、小寫字母表示不同意義l 不能與不能與C關鍵字同名關鍵字同名標識符、常量與變量標識符、常量與變量有關標識符練習有關標識符練習26常量可分為:常量可分為:l 數值常量數值常量l 符號常量符號常量標識符、常量與變量標識符、常量與變量27l 符號常量符號常量l 符號常量的定義:符號常量的定義:#define

8、 l 例:例:#define PI 3.1415926#define N 50標識符、常量與變量標識符、常量與變量28l 變量變量l 規定變量在使用前必須說明規定變量在使用前必須說明l 變量的說明:變量的說明: l 例:例:int a,b,x;標識符、常量與變量標識符、常量與變量29l 在程序中,一個變量占據著一個在程序中,一個變量占據著一個實際的存儲單元,變量名實際上實際的存儲單元,變量名實際上是存儲單元的標志,存儲單元中是存儲單元的標志,存儲單元中的內容是變量的值。的內容是變量的值。l 允許在定義變量的同時對其賦初允許在定義變量的同時對其賦初值值標識符、常量與變量標識符、常量與變量30整型

9、數據整型數據int a,b;short c,d; long m=6;long n=j=8;unsigned long k;a=123;b=045;c=d=0 x3d8;k=0773L;簡單的簡單的C C程序程序( (二二) )31實型數據實型數據float a,b;double x,sum;a=29.56;b=6.8e-07;x=.33;sum=55.;錯誤的數據表示錯誤的數據表示簡單的簡單的C C程序程序( (三三) )32字符型數據字符型數據l 字符型常量字符型常量l 字符型常量中字母區分大小寫字符型常量中字母區分大小寫l 轉義字符以轉義字符以“”開頭來標記開頭來標記33字符型數據字符型數

10、據char c1,c2,c3=A;c1=98int a,b=49;c2=b; a=c1;34基本運算符和表達式基本運算符和表達式l 算術運算符和算術表達式算術運算符和算術表達式l 賦值運算符和賦值表達式賦值運算符和賦值表達式l 逗號運算符和逗號表達式逗號運算符和逗號表達式l 關系運算符和關系表達式關系運算符和關系表達式l 邏輯運算符和邏輯表達式邏輯運算符和邏輯表達式l 位運算符和位表達式位運算符和位表達式35算術運算符和算術表達式算術運算符和算術表達式l 算術運算符算術運算符簡單的簡單的C C程序程序( (四四) )36算術運算符和算術表達式算術運算符和算術表達式l 算術運算符的運算優先級算術

11、運算符的運算優先級和結合性和結合性37算術運算符和算術表達式算術運算符和算術表達式l 算術表達式算術表達式l 說明:說明:l 在算術表達式中沒有上標和下標在算術表達式中沒有上標和下標l 乘號必須用乘號必須用*表示,不能省略表示,不能省略l 括號一律使用圓括號括號一律使用圓括號38算術運算符和算術表達式算術運算符和算術表達式l 寫出下列代數式的寫出下列代數式的C表達式:表達式:l x是個三位數,寫出取其各位數的是個三位數,寫出取其各位數的表達式表達式xx212)1(loglog4xebbca101 x39算術運算符和算術表達式算術運算符和算術表達式l 自動類型轉換:自動類型轉換:main()fl

12、oat y,z=242.5; unsigned x=2; short s=4; y=10+b+5.7*x+z/a-s*12.5; printf(y=%f,y);40算術運算符和算術表達式算術運算符和算術表達式l 強制類型轉換:強制類型轉換:main()float x=4.55; printf(int)x=%d,x=%f,(int)x,x); x=8*(int)(1/2+5/(float)2);41算術運算符和算術表達式算術運算符和算術表達式例:設例:設float x,y,z;x=6/4;y=6./4;z=-6.8%4結果:結果:x的值為的值為1.0,y的值為的值為1.542算術運算符和算術表達

13、式算術運算符和算術表達式l 自增自增1、自減、自減1運算符為單目運算符運算符為單目運算符l 其有兩種運算形式:前綴形式和后綴其有兩種運算形式:前綴形式和后綴形式,功能不同形式,功能不同l 前綴形式的自增、自減前綴形式的自增、自減1運算的優運算的優先級高于算術運算符中的所有雙目運先級高于算術運算符中的所有雙目運算符算符l 其運算對象只能是變量其運算對象只能是變量(可以是實數可以是實數)43算術運算符和算術表達式算術運算符和算術表達式例:設例:設int x=5;則:則:y=+x;結果:結果:y=6,x=6y=x+;結果:結果:y=5,x=6x+;結果:結果:x=6y=x+*-x 結果:?結果:?4

14、4賦值運算符和賦值表達式賦值運算符和賦值表達式l 基本賦值運算符基本賦值運算符形式:形式:=功能:將賦值運算符右邊的表達式功能:將賦值運算符右邊的表達式的值賦給其左邊的變量。的值賦給其左邊的變量。45賦值運算符和賦值表達式賦值運算符和賦值表達式注意:注意:l 賦值號左邊只能是變量賦值號左邊只能是變量l 如果右邊表達式類型與左邊變量的如果右邊表達式類型與左邊變量的類型不一致,則先將右邊表達式的類型不一致,則先將右邊表達式的值自動轉換成與左邊變量相同的類值自動轉換成與左邊變量相同的類型,再進行賦值型,再進行賦值46賦值運算符和賦值表達式賦值運算符和賦值表達式l 復合賦值運算符復合賦值運算符形式:形

15、式:=功能:對賦值運算符左、右兩邊的功能:對賦值運算符左、右兩邊的運算對象進行指定的算術運算符運算對象進行指定的算術運算符的運算,再將運算結果賦予左邊的運算,再將運算結果賦予左邊的變量。的變量。47賦值運算符和賦值表達式賦值運算符和賦值表達式l a+=b;等價于等價于a=a+b;l a-=b; 等價于等價于a=a-b;l a*=b+1; 等價于等價于a=a*(b+1);l x+=3+x%(-3);設設x=1148賦值運算符和賦值表達式賦值運算符和賦值表達式l 賦值表達式賦值表達式l k=j=1;l int k,a=1,j=5;l a+=j+;l a=20+(j=7);l a=(j=9)+(k=

16、7);49逗號運算符和逗號表達式逗號運算符和逗號表達式l 逗號的用法有兩種:分隔符;逗號的用法有兩種:分隔符;運算符。運算符。l C允許用逗號連接表達式,雙目允許用逗號連接表達式,雙目運算符,運算優先級最低。運算符,運算優先級最低。a=2*6,a-4,a+15;50逗號運算符和逗號表達式逗號運算符和逗號表達式l 逗號表達式逗號表達式t=a;a=b;b=t;t=a,a=b,b=t;x=(5+5,10+10);x=?int j=5;a=(a=j+1,a+2,a+3);a=?51關系運算符和關系表達式關系運算符和關系表達式關系運算符關系運算符l 6種關系運算符:種關系運算符:、=、=(優先級高)、(

17、優先級高)、=、!=(優先級低)(優先級低)l 關系運算符優先級低于算術運算符,關系運算符優先級低于算術運算符,高于賦值運算符。高于賦值運算符。52關系運算符和關系表達式關系運算符和關系表達式l 關系表達式關系表達式fabs(x-y)y+xx!=y=z-2x=y=z-1若關系表達式成立,其值為非零,否則為零若關系表達式成立,其值為非零,否則為零53邏輯運算符和邏輯表達式邏輯運算符和邏輯表達式邏輯運算符邏輯運算符l 3種邏輯運算符:!、種邏輯運算符:!、&、|l 運算規則運算規則l 優先級優先級54邏輯運算符和邏輯表達式邏輯運算符和邏輯表達式l 邏輯表達式邏輯表達式例:設例:設a=1,b

18、=2,c=3(ab)&(c0)|a!a|(b=0)&(c=a)(!ab)&(c=b)&!a(a1)|(b+14)(ab)&(+c)c=?55邏輯運算符和邏輯表達式邏輯運算符和邏輯表達式注意:注意:l 代數中的不等式代數中的不等式0 x2l 15+8l 1133|2l 1&3|3位運算實例位運算實例59運算符的優先級運算符的優先級+、-、*/、%+-=,、=!=& |!& |60第第2章作業:章作業:l 完成教材中第完成教材中第2章的全部章的全部習題,答案寫在文本文件習題,答案寫在文本文件hw2.txt中上傳。中上傳。61第三章第三

19、章 順序結構程序設計順序結構程序設計l 順序結構的基本特點是構成順序結構的基本特點是構成程序的語句都是按照其出現程序的語句都是按照其出現的順序逐條執行的。的順序逐條執行的。62第三章第三章 順序結構程序設計順序結構程序設計l 語句概述語句概述l 表達式語句表達式語句l 數據的輸出數據的輸出l 數據的輸入數據的輸入l 順序結構程序設計舉例順序結構程序設計舉例63語句概述語句概述說明:說明:l 每個語句都要用分號結尾,分號每個語句都要用分號結尾,分號是語句間的分隔符是語句間的分隔符l 聲明部分的內容不是語句聲明部分的內容不是語句64基本語句基本語句l 包括表達式語句、復合語句包括表達式語句、復合語

20、句和空語句和空語句65選擇控制語句選擇控制語句l 可以根據某個條件來控制和可以根據某個條件來控制和改變程序流向。改變程序流向。66重復控制語句重復控制語句l 這類語句可以根據某種條件這類語句可以根據某種條件控制一段程序被重復執行多控制一段程序被重復執行多次。次。67轉移語句轉移語句l 這類語句可以無條件地改變這類語句可以無條件地改變程序的流向。程序的流向。68表達式語句表達式語句x=y+z;x+y;i+;printf(“%d”,x);a=b=c=2;i+=5+j;69表達式語句表達式語句注意:注意:l 表達式語句和賦值語句、賦值表達表達式語句和賦值語句、賦值表達式的關系式的關系l 賦值表達式可

21、以出現在任何表達式賦值表達式可以出現在任何表達式允許出現的地方允許出現的地方l 聲明變量時不能采用多重賦值形式聲明變量時不能采用多重賦值形式70數據的輸出數據的輸出l C語言有輸入、輸出函數,而語言有輸入、輸出函數,而沒有輸入、輸出語句。沒有輸入、輸出語句。l include命令的格式:命令的格式:#include 或或#include “stdio.h”71putchar函數函數形式:形式:putchar ();功能:在顯示器上輸出功能:在顯示器上輸出一個一個字符字符參數:可以是字符型變量、整型變量參數:可以是字符型變量、整型變量或相應的常量或相應的常量72putchar函數函數例:使用庫函

22、數例:使用庫函數putchar()輸出各種字符。輸出各種字符。main()char ch1,ch2;int i; ch1=C;ch2=h; i=105; putchar(ch1);putchar(ch2); putchar(i);putchar(n); putchar(141);putchar(n);73printf函數函數形式:形式:printf(“”,);74printf函數函數功能:功能:l 將各輸出項的值按指定的格式將各輸出項的值按指定的格式顯示在屏幕上顯示在屏幕上printfprintf函數示例函數示例75printf函數函數參數:參數:l輸出項可以是變量、常量和表達式輸出項可以是變

23、量、常量和表達式l格式控制字符串中允許包含格式編輯符和原格式控制字符串中允許包含格式編輯符和原樣輸出的字符串樣輸出的字符串l格式編輯符形式:格式編輯符形式:%l格式修飾包括:標志、類型修飾、輸出最小格式修飾包括:標志、類型修飾、輸出最小寬度和精度等寬度和精度等76printf函數函數標志:標志:l 標志字符主要有標志字符主要有-、+等。等。77printf函數函數輸出寬度:輸出寬度:l 可以用十進制數限定輸出數據可以用十進制數限定輸出數據的位數的位數78printf函數函數精度:精度:l 對于對于float或或double類型的實型類型的實型數,可以用數,可以用“m.n”的形式指定的形式指定數

24、據的輸出寬度和小數位數數據的輸出寬度和小數位數79printf函數函數類型修飾:類型修飾:l 類型修飾符有類型修飾符有h和和l兩種,兩種,l表示輸出表示輸出項是長整型、無符號長整型或雙精項是長整型、無符號長整型或雙精度實型度實型80printf函數函數特殊字符的輸出:特殊字符的輸出:l 可以用可以用“”輸出一個輸出一個“”;用用“%”輸出一個輸出一個“%”81printf函數函數注意:注意:l 格式控制字符串中的格式說明格式控制字符串中的格式說明與輸出項必須保持類型相同和與輸出項必須保持類型相同和個數一致個數一致82數據的輸入數據的輸入83getchar函數函數形式:形式:getchar ()

25、;功能:從鍵盤上讀取功能:從鍵盤上讀取一個一個字符字符參數:不帶任何參數,函數的返回值參數:不帶任何參數,函數的返回值是輸入字符的是輸入字符的ASCII碼碼84getchar函數函數main()char c; c=getchar(); printf(%c:%dn,c,c);85scanf函數函數形式:形式:scanf (“”,輸入項輸入項1,輸入項輸入項2,);86scanf函數函數功能:功能:l 按指定的格式接收由鍵盤輸入的按指定的格式接收由鍵盤輸入的數據,并存入輸入項變量所在的數據,并存入輸入項變量所在的內存單元中內存單元中87scanf函數函數參數:參數:l 格式控制字符串與格式控制字符

26、串與printf函數函數類似,包含格式編輯符和原樣類似,包含格式編輯符和原樣輸入字符輸入字符l 輸入項必須為地址引用,通常輸入項必須為地址引用,通常由由“&”后面跟變量名組成后面跟變量名組成88scanf函數函數參數參數l 格式編輯符的形式:格式編輯符的形式:%89scanf函數函數常用的格式控制常用的格式控制l格式字符:用于規定相應輸入項的輸入格式格式字符:用于規定相應輸入項的輸入格式l輸入數據寬度:輸入數據寬度:scanf函數允許用十進制整函數允許用十進制整數設定輸入數據的寬度,系統自動按此寬度數設定輸入數據的寬度,系統自動按此寬度截取所需數據截取所需數據l類型修飾符:類型修飾符為

27、類型修飾符:類型修飾符為h和和l,分別表示,分別表示輸入短整型和長整型數據(或雙精度實型)輸入短整型和長整型數據(或雙精度實型)scanfscanf函數示例函數示例90scanf函數函數注意:注意:l對于基本類型變量,對于基本類型變量,scanf函數要求在函數要求在輸入項中給出變量地址,但使用輸入項中給出變量地址,但使用s格式格式輸入字符串時除外輸入字符串時除外l輸入數據時,不允許規定精度輸入數據時,不允許規定精度l輸入數據時,數據與數據之間應使用分輸入數據時,數據與數據之間應使用分隔符隔符91scanf函數函數注意:注意:l按原樣輸入的字符在鍵入時不能遺漏,按原樣輸入的字符在鍵入時不能遺漏,

28、否則將導致數據項與對應讀入數據錯位否則將導致數據項與對應讀入數據錯位l鍵入數據的類型、寬度應該與格式控制鍵入數據的類型、寬度應該與格式控制中給定的相一致中給定的相一致92順序結構程序設計舉例順序結構程序設計舉例l 將鍵盤輸入的兩個整數相互交換并將鍵盤輸入的兩個整數相互交換并輸出交換前后的值輸出交換前后的值l 將鍵盤輸入的三位整數逆序并輸出將鍵盤輸入的三位整數逆序并輸出93第第3章作業:章作業:l 完成教材中第完成教材中第3章習題章習題3.1(1) ,答案寫在文,答案寫在文本文件中上傳。本文件中上傳。l 完成教材中第完成教材中第3章習題章習題3.4 、3.7、3.8,上,上傳源文件。傳源文件。9

29、4第四章第四章 選擇結構程序設計選擇結構程序設計l C語言提供的選擇結構語句語言提供的選擇結構語句有有if語句和語句和switch語句語句l 由這類選擇語句構成的程序由這類選擇語句構成的程序稱為選擇結構程序。稱為選擇結構程序。95第四章第四章 選擇結構程序設計選擇結構程序設計l 條件條件l if語句語句l switch語句語句l 應用舉例應用舉例96條件條件l 條件就是一個表達式,若以非條件就是一個表達式,若以非零作為表達式成立,以零作為零作為表達式成立,以零作為表達式不成立,就會得到兩種表達式不成立,就會得到兩種可能,即可能,即“真真”或或“假假”,這,這就是條件判斷。就是條件判斷。“真真”

30、與與“假假”又稱為邏輯值。又稱為邏輯值。97關系運算關系運算關系運算符關系運算符l 6種關系運算符:種關系運算符:、=、=(優先級高)、(優先級高)、=、!=(優先級低)(優先級低)l 關系運算符優先級低于算術運算符,關系運算符優先級低于算術運算符,高于賦值運算符。高于賦值運算符。98邏輯運算邏輯運算邏輯運算符邏輯運算符l 3種邏輯運算符:!、種邏輯運算符:!、&、|l 運算規則運算規則l 優先級優先級99條件運算條件運算條件運算符條件運算符l 1個條件運算符:個條件運算符:?:l 優先級優先級100條件運算條件運算l 條件表達式條件表達式形式:形式:?:101條件運算條件運算語義:語

31、義:l 先計算表達式先計算表達式1的值,若結果為非的值,若結果為非0,則以表達式,則以表達式2的值作為整個條的值作為整個條件表達式的值;若為件表達式的值;若為0,則以表達,則以表達式式3的值作為整個表達式的值。的值作為整個表達式的值。102條件運算條件運算l 例:例:(x0)?1:-1x0?1:(xy)?x:y;103條件運算條件運算說明:說明:l 條件表達式中的表達式條件表達式中的表達式2和表達式和表達式3應該有確定的值,二者通常為同類應該有確定的值,二者通常為同類型型l 表達式表達式2和表達式和表達式3中有一個表達式中有一個表達式不會被計算。不會被計算。104if語句語句l if語句是用于

32、選擇結構的控制語句是用于選擇結構的控制語句,根據給定條件進行判斷,語句,根據給定條件進行判斷,以決定所要執行的操作。以決定所要執行的操作。105單邊形式單邊形式if語句語句形式:形式:if();語義:語義:l 先計算先計算“表達式表達式”的值,若結果為非的值,若結果為非0,就執行就執行“語句語句”,否則直接執行,否則直接執行if語句語句的后續語句的后續語句106單邊形式單邊形式if語句語句注意:注意:l if是是C語言的關鍵字語言的關鍵字l “表達式表達式”允許是任何表達式,其兩允許是任何表達式,其兩側的圓括號不可少側的圓括號不可少l “語句語句”為為if的執行塊,如果其中包含的執行塊,如果其

33、中包含多個語句,必須用多個語句,必須用將其括成復合語句將其括成復合語句107雙邊形式雙邊形式if語句語句形式:形式:if();else;語義:語義:l 先計算先計算“表達式表達式”的值,若結果為的值,若結果為非非0,則執行,則執行“語句語句1”;若為;若為0,則,則執行執行“語句語句2”。108雙邊形式雙邊形式if語句語句說明:說明:l else必須與必須與if語句配對使用語句配對使用l else前面的語句必須用分號結束前面的語句必須用分號結束l 雖然條件表達式和雖然條件表達式和if語句都能構語句都能構成選擇結構,但條件表達式不能成選擇結構,但條件表達式不能取代所有的取代所有的if語句語句10

34、9if語句的嵌套語句的嵌套l 當當if語句或語句或else語句的執行塊語句的執行塊中又出現中又出現if語句時,就形成了語句時,就形成了if語句的嵌套。語句的嵌套。110if語句的嵌套語句的嵌套說明:說明:l 在多層嵌套中,在多層嵌套中,C語句規定,語句規定,else總是與前面最近的沒有配過對的總是與前面最近的沒有配過對的if配對,與程序書寫格式無關配對,與程序書寫格式無關111應用舉例應用舉例l 編寫程序,從鍵盤輸入三個數,按編寫程序,從鍵盤輸入三個數,按從小到大的順序依次輸出。從小到大的順序依次輸出。l 編寫程序,從鍵盤輸入一個成績,編寫程序,從鍵盤輸入一個成績,輸出其成績等級。輸出其成績等

35、級。112switch語句語句形式:形式:switch() case :;break; case :;break; case :;break; default: ;switchswitch語句示例語句示例113switch語句語句語義:語義:l先計算先計算switch右邊右邊“表達式表達式”的值,并將其的值,并將其逐個與逐個與case行中的行中的“常量表達式常量表達式”的值相比的值相比較,若相等,則執行該較,若相等,則執行該case行給出的語句,行給出的語句,然后跳出然后跳出switch語句;若語句;若“表達式表達式”的值不的值不等于任何等于任何case行給出的行給出的“常量表達式常量表達式”

36、的值,的值,則轉向并執行則轉向并執行default行指引的語句;若沒行指引的語句;若沒有有default行,則直接跳出行,則直接跳出switch結構,轉結構,轉去執行后續語句。去執行后續語句。114switch語句語句說明:說明:lswitch是關鍵字,其后面用是關鍵字,其后面用括起來的括起來的部分是其語句體部分是其語句體lcase也是關鍵字,其后跟的也是關鍵字,其后跟的“常量表達常量表達式式”與冒號一起構成語句標號,與冒號一起構成語句標號,case與與“常量表達式常量表達式”之間必須有空格之間必須有空格115switch語句語句說明:說明:l在同一個在同一個switch語句中,語句中,“常量

37、表達式常量表達式”的值必須唯一的值必須唯一lswitch后面的后面的“表達式表達式”可以是整型、可以是整型、字符型和枚舉型,但不能是實型,字符型和枚舉型,但不能是實型,“表表達式達式”的值與的值與“常量表達式常量表達式”的值應保的值應保持類型一致持類型一致116switch語句語句說明:說明:ldefault行可以出現在行可以出現在switch語句體的任語句體的任何位置,也可以省略何位置,也可以省略lcase標號后面跟的語句允許是多個語句,標號后面跟的語句允許是多個語句,可以不加語句括號可以不加語句括號l一個語句也可以被多個一個語句也可以被多個case行共用行共用lbreak也是關鍵字,其可以

38、中止也是關鍵字,其可以中止switch語語句繼續往下執行句繼續往下執行117應用舉例應用舉例l 編寫程序,從鍵盤輸入編寫程序,從鍵盤輸入1到到7之間之間的一個整數,要求:輸入正確則輸的一個整數,要求:輸入正確則輸出相應的星期名稱,否則輸出錯誤出相應的星期名稱,否則輸出錯誤提示。提示。118第第4章作業:章作業:l 作業上傳系統中作業上傳系統中N4.doc中的習題。中的習題。l 完成教材中第完成教材中第4章習題章習題4.2 、4.4、4.7、4.9,上傳源文件。上傳源文件。119第五章第五章 循環結構程序設計循環結構程序設計l 循環結構是結構化程序設計的三種循環結構是結構化程序設計的三種基本結構

39、之一,它與順序結構、選基本結構之一,它與順序結構、選擇結構一起,構成各種復雜的程序。擇結構一起,構成各種復雜的程序。l 在在C語言中,用于循環結構程序設計語言中,用于循環結構程序設計的語句有:的語句有:while語句、語句、do-while語語句和句和for語句。語句。120第五章第五章 循環結構程序設計循環結構程序設計l while語句語句l do-while語句語句l for語句語句l 循環結構中的轉移語句循環結構中的轉移語句l 循環結構的嵌套循環結構的嵌套l 應用舉例應用舉例121while語句語句形式:形式:while();122while語句語句語義:語義:l 先計算圓括號中表達式的

40、值,判斷先計算圓括號中表達式的值,判斷其是否為其是否為0,若為非,若為非0,表示循環條,表示循環條件滿足,執行循環體,如此重復,件滿足,執行循環體,如此重復,直至表達式的值為直至表達式的值為0,退出,退出while循循環,執行后續語句。環,執行后續語句。123while語句語句k=4;while(k2)printf(“*”);k=k-1;printf(“k=%d”,k);124while語句語句說明:說明:l while是是C關鍵字,圓括號內的關鍵字,圓括號內的“表表達式達式”可以是任意合法的表達式可以是任意合法的表達式l 循環體只包含一句語句循環體只包含一句語句l 注意注意if語句和語句和w

41、hile語句的差別語句的差別l 循環體要有使循環結束的語句循環體要有使循環結束的語句125while語句語句實例:實例:l 求正整數求正整數n的階乘的階乘l 用字符打印圖形用字符打印圖形126do-while語句語句形式:形式:do ;while();127do-while語句語句語義:語義:l 先執行循環體一次,然后判斷表先執行循環體一次,然后判斷表達式是否成立,若為非達式是否成立,若為非0,表示,表示成立,就繼續執行循環體,否則成立,就繼續執行循環體,否則結束循環,執行結束循環,執行do-while語句的語句的后續語句。后續語句。128do-while語句語句int sum=0,i=1;d

42、o sum=sum+i;i+;while(i=5);129do-while語句語句說明:說明:l do和和while是是C關鍵字,圓括號內的關鍵字,圓括號內的“表達式表達式”可以是任意合法的表達可以是任意合法的表達式式l 循環體至少被執行一次循環體至少被執行一次l 循環體只包含一句語句循環體只包含一句語句l 循環體要有使循環結束的語句循環體要有使循環結束的語句130do-while語句語句實例:實例:l求正整數求正整數n的階乘的階乘l求求 或或的值的值975369753xxxxx31x73523152313112! 41! 31! 21! 111e9171513114131for語句語句形式:

43、形式:for(;) ;等價于:等價于:;while() ; ;132for語句語句語義:語義:l先計算表達式先計算表達式1的值;的值;l再計算表達式再計算表達式2的值,并判斷其是否為的值,并判斷其是否為0,若為,若為0,則跳出循環,執行,則跳出循環,執行for語句語句的后續語句;的后續語句;l表達式表達式2的值若為非的值若為非0,則執行循環體,則執行循環體一次,再計算表達式一次,再計算表達式3的值,轉到步驟的值,轉到步驟2重復執行。重復執行。133for語句語句product=1for(i=1;i5;i+) product=product*i;134for語句語句說明:說明:l for是是C關

44、鍵字,圓括號內的三個關鍵字,圓括號內的三個“表達式表達式”可以是任意合法的表可以是任意合法的表達式達式l 循環體只包含一句語句循環體只包含一句語句l 循環體要有使循環結束的語句循環體要有使循環結束的語句135for語句語句說明:說明:l for語句中的各表達式都可以省略,語句中的各表達式都可以省略,但分號間隔符不能少但分號間隔符不能少l 若表達式若表達式2省略,則循環體中必須省略,則循環體中必須有控制循環結束的有控制循環結束的break語句,否語句,否則將造成死循環則將造成死循環l 循環體可以是空語句循環體可以是空語句136for語句語句實例:實例:l求正整數求正整數n的階乘的階乘l求求 或或

45、的值的值975369753xxxxx31x73523152313112! 41! 31! 21! 111e9171513114137循環結構中的轉移語句循環結構中的轉移語句break語句語句l 形式:形式:break;l break語句只能用在語句只能用在switch語句或語句或循環語句中,當用在循環中時,其循環語句中,當用在循環中時,其功能是終止當前的循環,轉向后續功能是終止當前的循環,轉向后續語句執行。語句執行。138循環結構中的轉移語句循環結構中的轉移語句例:例:for(x=1,y=0;x5)break; printf(“y=%dn”,y);實例:實例:判斷一個整數是否為素數判斷一個整數

46、是否為素數139循環結構中的轉移語句循環結構中的轉移語句continue語句語句l 形式:形式:continue;l 該語句只能用在循環中,其功能是該語句只能用在循環中,其功能是結束本次循環,即跳過循環體中位結束本次循環,即跳過循環體中位于于continue語句后面的語句,轉入語句后面的語句,轉入下一次循環條件的判斷與執行,并下一次循環條件的判斷與執行,并不結束循環。不結束循環。140循環結構的嵌套循環結構的嵌套l 當一個循環語句的循環體中又當一個循環語句的循環體中又出現另一個循環語句時,就構出現另一個循環語句時,就構成了循環的嵌套。成了循環的嵌套。141循環結構的嵌套循環結構的嵌套注意:注意

47、:l 內循環是外循環的循環體,外內循環是外循環的循環體,外循環每執行一遍,內循環就執循環每執行一遍,內循環就執行一周行一周142應用舉例應用舉例l 用字符打印圖形用字符打印圖形(楊輝三角形楊輝三角形)l 求解百雞問題求解百雞問題l 輸出輸出2到到200之間的所有素數之間的所有素數l 求兩個整數的最大公約數和最求兩個整數的最大公約數和最小公倍數小公倍數143第第5章作業:章作業:l 作業上傳系統中作業上傳系統中N5.doc中的習題。中的習題。l 完成教材中第完成教材中第5章習題章習題5.1 、5.9,上傳源文件。,上傳源文件。144第六章第六章 數組數組l 例:求一個班級例:求一個班級50個學生

48、的平均個學生的平均成績。成績。l 如果還要找出高于平均成績的學如果還要找出高于平均成績的學生名單,如何實現?生名單,如何實現?145第六章第六章 數組數組l C語言支持兩種構造數據類型:語言支持兩種構造數據類型:數組類型和結構類型數組類型和結構類型l 構造類型的數據可分解為多個元構造類型的數據可分解為多個元素,其中每一個元素可以是基本素,其中每一個元素可以是基本類型或又是一個構造類型。作為類型或又是一個構造類型。作為構造類型的最低層元素只能是基構造類型的最低層元素只能是基本類型本類型146第六章第六章 數組數組l 數組概念的引入數組概念的引入l 數組的說明數組的說明l 數組的引用數組的引用l

49、數組的存儲結構數組的存儲結構l 數組的賦初值數組的賦初值l 數組應用舉例數組應用舉例l 字符數組與字符串處理字符數組與字符串處理147數組概念的引入數組概念的引入l 數組是個多值變量,一個數組數組是個多值變量,一個數組變量由一組同名但不同下標的變量由一組同名但不同下標的元素構成元素構成l 用數組來存儲邏輯相關的數據用數組來存儲邏輯相關的數據實體,程序可方便地按下標組實體,程序可方便地按下標組織循環織循環148數組概念的引入數組概念的引入l 數組包含的所有元素都具有數組包含的所有元素都具有相同名字和相同的數據類型相同名字和相同的數據類型l 用數組名和元素在數組中的用數組名和元素在數組中的序號可唯

50、一地確定某個數組序號可唯一地確定某個數組元素元素l 多維數組多維數組149數組的說明數組的說明形式:形式: 例:例:int a5,b45;float x4;150數組的說明數組的說明l 數組說明的作用是為數組預留數組說明的作用是為數組預留空間空間l 數據類型為數組的數據類型為數組的“基類型基類型”,整數整數表達式定義了數組中所含表達式定義了數組中所含元素的個數,元素的個數,運算符的個數運算符的個數決定了數組的維數。決定了數組的維數。151數組的說明數組的說明注意:注意:l 在在C語言中,數組元素的下標起語言中,數組元素的下標起始值為始值為0而不是而不是1l 下標運算符中的整數表達式代表下標運算

51、符中的整數表達式代表數組每一維的長度數組每一維的長度l 下標運算符中不允許使用變量定下標運算符中不允許使用變量定義數組長度,允許包含常量和義數組長度,允許包含常量和sizeof表達式表達式152數組的說明數組的說明#define N 50int a3+2;char cN;float dsizeof(double);double fsizeof(a);153數組的引用數組的引用形式:形式:其中:其中:“下標下標1”、“下標下標2”等為整等為整型表達式,代表了該元素在內存中型表達式,代表了該元素在內存中的排列位置。的排列位置。154數組的引用數組的引用說明:說明:l 引用下標變量時,所給出的下標引

52、用下標變量時,所給出的下標個數必須與所定義的數組維數相個數必須與所定義的數組維數相一致,而且每一個下標表達式的一致,而且每一個下標表達式的值不得超界值不得超界l 凡是數組基類型變量能使用的運凡是數組基類型變量能使用的運算,數組元素也能使用算,數組元素也能使用155一維數組遍歷一維數組遍歷for(i=0;in;i+)ai156二維數組遍歷二維數組遍歷for(i=0;in;i+) for(j=0;jm;j+) aij 157數組的賦初值數組的賦初值形式:形式: =;158數組的賦初值數組的賦初值float x4=-1.0,0.0,2.7,5.2E-8;int y32=0,1,2,3,4,5;int

53、 z32=0,1,2,3,4,5;char s6=H,e,l,l,o;或:或:char s6=“hello”;char s5=“hello”;char s4=“hello”;159數組的賦初值數組的賦初值注意:注意:l 對數組賦初值時,若初值表中常數對數組賦初值時,若初值表中常數個數少于數組元素的個數,這表示個數少于數組元素的個數,這表示僅對數組中排列靠前的元素賦初值,僅對數組中排列靠前的元素賦初值,后面元素的值自動賦后面元素的值自動賦0;若初值表;若初值表中給定的初值多于下標變量的個數,中給定的初值多于下標變量的個數,將出現編譯錯誤將出現編譯錯誤160數組的賦初值數組的賦初值注意:注意:l

54、C語言允許使用一維數組賦初值的語言允許使用一維數組賦初值的方法對多維數組賦初值方法對多維數組賦初值l C語言允許在數組定義時不指定維語言允許在數組定義時不指定維的長度(只能是第一維),由初值的長度(只能是第一維),由初值表中初值的個數來間接決定長度表中初值的個數來間接決定長度161數組的賦初值數組的賦初值float x=-1.0,0.0,2.7,5.2E-8;int y2=0,1,2,3,4,5;int z2=0,1,2,3,4,5;char s=“hello”162數組應用舉例數組應用舉例l 閱讀程序寫出結果:閱讀程序寫出結果:l 冒泡排序(選擇排序)冒泡排序(選擇排序)l 打印楊輝三角形打

55、印楊輝三角形數組應用數組應用163數組的存儲結構數組的存儲結構l 一維數組的存儲結構一維數組的存儲結構l 二維數組的存儲結構二維數組的存儲結構164數組的存儲結構數組的存儲結構l 數組第一個元素的存儲數組第一個元素的存儲地址就是整個數組的存地址就是整個數組的存儲首地址,該地址放在儲首地址,該地址放在數組名中數組名中l 一維數組的存儲結構一維數組的存儲結構165數組的存儲結構數組的存儲結構l 二維數組的存儲結構為二維數組的存儲結構為“按按行線性展開,順序存放行線性展開,順序存放”,即按:即按:a00,a01,a02,a10,a11,a12,l 二維數組的存儲結構二維數組的存儲結構166數組的存儲

56、結構數組的存儲結構l 比較兩組程序段:比較兩組程序段:for i=0 to 3 for j=0 to 4 aij=i*10+j和:和:for j=0 to 4 for i=0 to 3 aij=i*10+j167字符數組與字符串處理字符數組與字符串處理l 在在C語言中,沒有標準的字符語言中,沒有標準的字符串定義類型,字符串被當作字串定義類型,字符串被當作字符數組來處理。符數組來處理。168字符數組的定義字符數組的定義形式:形式:char 169字符數組的定義字符數組的定義說明說明l 字符數組中的元素只能存放一字符數組中的元素只能存放一個字符型數據個字符型數據l 與普通數組一樣,字符數組也與普通

57、數組一樣,字符數組也可以在定義時賦初值可以在定義時賦初值170字符數組的定義字符數組的定義char string100,cblock2020;string0=T;cblock25=h;char chr6=C,h,i,n,a;char line1100=“Shanghai”;或或char line1100=”Shanghai”;line1=“Shanghai”;171字符串的結束標記字符串的結束標記l 為了便于識別一個字符串的為了便于識別一個字符串的結尾,結尾,C語言約定,字符串語言約定,字符串的末尾以轉義字符的末尾以轉義字符0作為作為結束標記。結束標記。172字符串的輸入與輸出字符串的輸入與輸

58、出使用使用scanf和和printf函數輸入與輸出函數輸入與輸出main()char str80; scnaf(“%s”,str); printf(“%s”,str);173字符串的輸入與輸出字符串的輸入與輸出注意:注意:l用用%s格式輸入輸出字符串時,輸出格式輸入輸出字符串時,輸出項應該為項應該為字符數組名字符數組名,不能是數組,不能是數組元素名元素名l數組名是個不占實際內存的數組名是個不占實際內存的地址常地址常量量,它代表整個字符數組的存儲首,它代表整個字符數組的存儲首地址,本身已經是地址,不能再對地址,本身已經是地址,不能再對它加地址運算符它加地址運算符“&”174字符串的輸入與

59、輸出字符串的輸入與輸出注意:注意:l%s格式輸入字符串時,遇空格字符、格式輸入字符串時,遇空格字符、Tab鍵和回車符將自動結束輸入鍵和回車符將自動結束輸入l%s格式輸出字符串,遇格式輸出字符串,遇0就結束輸就結束輸出出l若輸入字符串長度超過字符數組所定義若輸入字符串長度超過字符數組所定義的長度時,將造成數組下標越界,但系的長度時,將造成數組下標越界,但系統對此不報錯統對此不報錯175字符串的輸入與輸出字符串的輸入與輸出使用使用gets和和puts函數輸入與輸出:函數輸入與輸出:gets函數調用形式:函數調用形式:gets();其中,其中,str_adr為字符數組名或字為字符數組名或字符指針名,

60、代表輸入字符串的存儲符指針名,代表輸入字符串的存儲起始地址。起始地址。176字符串的輸入與輸出字符串的輸入與輸出功能:功能:l 接受由鍵盤輸入的字符串(包接受由鍵盤輸入的字符串(包括空格符),并將它原樣存儲括空格符),并將它原樣存儲到由到由str_adr所指向的內存段所指向的內存段中,系統并不保存字符串末尾中,系統并不保存字符串末尾的換行符,而是自動將的換行符,而是自動將0作作為字符串的內容存放在串尾。為字符串的內容存放在串尾。177字符串的輸入與輸出字符串的輸入與輸出使用使用gets和和puts函數輸入與輸出:函數輸入與輸出:puts函數調用形式:函數調用形式:puts();其中,其中,str_adr為字符數組名或字為字符數組名或字符指針名,代表輸出字符串的存儲符指針名,代表輸

溫馨提示

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

評論

0/150

提交評論