C語(yǔ)言程序設(shè)計(jì)案例教程-完整版ppt全套教學(xué)教程(最新)_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)案例教程-完整版ppt全套教學(xué)教程(最新)_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)案例教程-完整版ppt全套教學(xué)教程(最新)_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)案例教程-完整版ppt全套教學(xué)教程(最新)_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)案例教程-完整版ppt全套教學(xué)教程(最新)_第5頁(yè)
已閱讀5頁(yè),還剩322頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、學(xué)習(xí)目標(biāo)案例目標(biāo) 了解本課程的知識(shí)目標(biāo)和能力目標(biāo) 了解應(yīng)用程序的開發(fā)環(huán)境和開發(fā)過(guò)程學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)了解C語(yǔ)言產(chǎn)生、發(fā)展和特點(diǎn)了解程序設(shè)計(jì)的基本概念掌握C程序的基本結(jié)構(gòu)和程序的上機(jī)步驟初步掌握Visual C+ 6.0開發(fā)環(huán)境開篇例程:學(xué)生成績(jī)管理系統(tǒng)圖1-1是一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng)運(yùn)行界面,是本教材的一個(gè)綜合案例作品,具有數(shù)據(jù)記錄的編輯、查找、統(tǒng)計(jì)和瀏覽等處理功能。提供數(shù)字按鍵菜單操作方式。圖1-1 圖書借閱管理系統(tǒng)開篇例程:學(xué)生成績(jī)管理系統(tǒng)1客戶需求描述通過(guò)對(duì)市場(chǎng)的調(diào)查得知,一款合格的學(xué)生管理系統(tǒng)必須具備一下特點(diǎn):(1) 能夠?qū)W(xué)生成績(jī)進(jìn)行集中管理。(2)能夠大大提高用戶的工作效率。(3

2、)能夠?qū)W(xué)生成績(jī)實(shí)現(xiàn)增、刪、改。(4)能夠按成績(jī)信息進(jìn)行排序。一個(gè)學(xué)生成績(jī)管理系統(tǒng)最重要的功能包括:學(xué)生成績(jī)的添加、刪除、查詢、修改、插入及排序,其中學(xué)生成績(jī)信息的查詢、刪除、修改、插入等都要依據(jù)輸入的學(xué)號(hào)來(lái)實(shí)現(xiàn)。開篇例程:學(xué)生成績(jī)管理系統(tǒng)2系統(tǒng)結(jié)構(gòu)設(shè)計(jì)根據(jù)上面的需求分析,得出該學(xué)生管理系統(tǒng)要實(shí)現(xiàn)的功能,有以下幾方面:(1)錄入學(xué)生成績(jī)信息。(2)實(shí)現(xiàn)刪除功能,即輸入學(xué)號(hào),刪除相應(yīng)的記錄。(3) 實(shí)現(xiàn)查找功能,即輸入學(xué)號(hào),查詢?cè)搶W(xué)生的相應(yīng)信息。(4)實(shí)現(xiàn)修改功能,即輸入學(xué)號(hào),修改相應(yīng)的記錄信息。(5)指定位置插入學(xué)生成績(jī)信息,即將新的記錄插入到指定位置。(6)實(shí)現(xiàn)學(xué)生信息的排名,即按照選定的關(guān)

3、鍵字段進(jìn)行排序。(7)數(shù)據(jù)統(tǒng)計(jì),按用戶指的條件進(jìn)行統(tǒng)計(jì)。開篇例程:學(xué)生成績(jī)管理系統(tǒng)該學(xué)生管理系統(tǒng)的結(jié)構(gòu)圖如圖1-2所示。圖1-1 圖書借閱管理系統(tǒng)開篇例程:學(xué)生成績(jī)管理系統(tǒng)【實(shí)施方案】作者致力于且堅(jiān)信一個(gè)目標(biāo):期待您學(xué)完本教材全部?jī)?nèi)容后,就掌握了程序設(shè)計(jì)的基本技能,具備開發(fā)這類較簡(jiǎn)單的系統(tǒng)應(yīng)用軟件能力。為此,本教材就以此為任務(wù)驅(qū)動(dòng),伴隨系統(tǒng)的設(shè)計(jì)、開發(fā)、優(yōu)化到最后完善,學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)方法。方案設(shè)計(jì)如下:(1) 前6章,各章設(shè)計(jì)獨(dú)立的案例,旨在學(xué)習(xí)、掌握C程序設(shè)計(jì)語(yǔ)法規(guī)則。(2) 第7章,按照模塊化程序設(shè)計(jì)方法,完成系統(tǒng)結(jié)構(gòu)和人機(jī)交互界面的設(shè)計(jì)。(3) 第8章,進(jìn)行數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及主要功能函數(shù)

4、的實(shí)現(xiàn);從而學(xué)習(xí)結(jié)構(gòu)體相關(guān)內(nèi)容。(4) 第9章,利用指針優(yōu)化各功能模塊(5) 第10章,作為收官篇,利用文件完善系統(tǒng)的數(shù)據(jù)存取。值得注意的是:不必過(guò)多考慮所開發(fā)的系統(tǒng)之實(shí)用性,我們的目標(biāo)是:用項(xiàng)目驅(qū)動(dòng)方法,學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì),用情景來(lái)實(shí)現(xiàn)知識(shí)構(gòu)建。開篇例程:學(xué)生成績(jī)管理系統(tǒng)【知識(shí)準(zhǔn)備】要完成學(xué)生成績(jī)管理系統(tǒng)開發(fā),必須學(xué)完本教材全部?jī)?nèi)容,熟悉C語(yǔ)言的語(yǔ)法規(guī)則,掌握C程序設(shè)計(jì)的基本技能和結(jié)構(gòu)化程序設(shè)計(jì)方法。1.1 C語(yǔ)言概述1.1.1 C語(yǔ)言的產(chǎn)生和發(fā)展C語(yǔ)言是美國(guó)BELL實(shí)驗(yàn)的Dennis Ritchie在B語(yǔ)言的基礎(chǔ)上開發(fā)出來(lái)的,1972年在一臺(tái)DEC PDP-11計(jì)算機(jī)上實(shí)現(xiàn)了最初的C語(yǔ)言。

5、當(dāng)時(shí)設(shè)計(jì)C語(yǔ)言是為了編寫UNIX操作系統(tǒng),UNIX操作系統(tǒng)90%的代碼是由C語(yǔ)言編寫,10%的代碼由匯編語(yǔ)言編寫。隨著UNIX操作系統(tǒng)的廣泛使用,C語(yǔ)言被人們認(rèn)識(shí)和接受。C語(yǔ)言在各種計(jì)算機(jī)上快速推廣導(dǎo)致出現(xiàn)了許多C語(yǔ)言版本。這些版本雖然類似,但通常不兼容。顯然,人們需要一個(gè)與開發(fā)平臺(tái)和機(jī)器無(wú)關(guān)的標(biāo)準(zhǔn)的C語(yǔ)言版本。1.1 C語(yǔ)言概述1.1.2 C語(yǔ)言的特點(diǎn)1.高效性2.靈活性3.功能豐富4.表達(dá)力強(qiáng)5.移植性好1.2 C語(yǔ)言程序1.2.1 簡(jiǎn)單的C程序【例1.1】 在計(jì)算機(jī)屏幕上輸出一行文本信息“Good Morning!”。#include /*編譯預(yù)處理命令*/main() /*從主函數(shù)ma

6、in()開始執(zhí)行*/ printf(Good Morning!); /*輸出Good Morning!*/ /*主函數(shù)main()結(jié)束*/運(yùn)行結(jié)果如下: Good Morning!1.2 C語(yǔ)言程序1.2.2 C程序的結(jié)構(gòu)1程序所謂“程序”,就是做某一件事情的步驟。現(xiàn)實(shí)生活中,我們每個(gè)人都在無(wú)意識(shí)的情況下編寫著不同的“程序”。計(jì)算機(jī)的“程序”是人們編寫的計(jì)算機(jī)代碼的指令集合。計(jì)算機(jī)本身不會(huì)做任何操作,它所有的操作,都是按照人們?cè)O(shè)計(jì)的計(jì)算機(jī)“程序”語(yǔ)句的執(zhí)行順序來(lái)完成的。不同的計(jì)算機(jī)語(yǔ)言有不同的語(yǔ)法規(guī)則和語(yǔ)法結(jié)構(gòu)。下面,我們講述一下C語(yǔ)言的程序結(jié)構(gòu)。2. C程序的結(jié)構(gòu)一般來(lái)說(shuō),一個(gè)C程序的基本結(jié)

7、構(gòu)包含了聲明、主函數(shù)和函數(shù)定義三大部分。1.3 C程序的開發(fā)1.3.1 C程序的開發(fā)過(guò)程圖1-3 C程序編輯、編譯、連接和執(zhí)行1.3 C程序的開發(fā)1.3.2 Visual C+ 6.0開發(fā)環(huán)境1. 啟動(dòng)Visual C+ 6.0圖1-4 Visual C+ 6.0界面1.3 C程序的開發(fā)1.3.2 Visual C+ 6.0開發(fā)環(huán)境2. 創(chuàng)建工程圖1-5 “新建”對(duì)話框中的“工程”選項(xiàng)卡1.3 C程序的開發(fā)1.3.2 Visual C+ 6.0開發(fā)環(huán)境2. 創(chuàng)建工程圖1-6 “Win32 Console Application-步驟1共1步”對(duì)話框1.3 C程序的開發(fā)1.3.2 Visual

8、C+ 6.0開發(fā)環(huán)境3. 創(chuàng)建、編輯源程序文件圖1-7 “新建”對(duì)話框中的“文件”選項(xiàng)卡1.3 C程序的開發(fā)1.3.2 Visual C+ 6.0開發(fā)環(huán)境3. 創(chuàng)建、編輯源程序文件圖1-8 Visual C+ 6.0窗口1.3 C程序的開發(fā)1.3.2 Visual C+ 6.0開發(fā)環(huán)境4. 編譯、連接圖1-9 編譯、連接的輸出窗口1.3 C程序的開發(fā)1.3.2 Visual C+ 6.0開發(fā)環(huán)境5運(yùn)行程序圖1-10 運(yùn)行程序的輸出窗口1.3 C程序的開發(fā)1.3.3 工程設(shè)置圖1-11 程序設(shè)置1.3 C程序的開發(fā)1.3.3 工程設(shè)置圖1-12 組建時(shí)排除文件的“工程設(shè)置”1.4 程序設(shè)計(jì)基礎(chǔ)1

9、.4.1 基本概念1. 程序與算法人們做任何事情都有一定的方法和程序。如開會(huì)的議程、老師上課的教案、春節(jié)聯(lián)歡晚會(huì)節(jié)目單等都是程序?!俺绦颉敝饾u被專業(yè)化,它通常特指:為讓計(jì)算機(jī)完成特定任務(wù)(如解決某一算題或控制某一過(guò)程)而設(shè)計(jì)的指令序列。從程序設(shè)計(jì)的角度來(lái)看,每個(gè)問(wèn)題都涉及兩個(gè)方面的內(nèi)容:數(shù)據(jù)和操作。換言之,一個(gè)程序應(yīng)包括以下兩方面的內(nèi)容:(1) 對(duì)數(shù)據(jù)的描述,即數(shù)據(jù)結(jié)構(gòu)(data structure)。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式。(2) 對(duì)數(shù)據(jù)處理的描述,即算法(algorithm)。算法是為解決一個(gè)問(wèn)題而采取的方法和步驟。1.4 程序設(shè)計(jì)基礎(chǔ)1.4.1 基本概念2數(shù)據(jù)結(jié)構(gòu)計(jì)算機(jī)

10、處理的對(duì)象是數(shù)據(jù),數(shù)據(jù)是描述客觀事物的數(shù)、字符以及計(jì)算機(jī)能夠接受和處理的信息符號(hào)的總稱。數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)的類型和數(shù)據(jù)的組織形式。數(shù)據(jù)類型體現(xiàn)的數(shù)據(jù)的取值范圍和合法的運(yùn)算,數(shù)據(jù)的組織形式體現(xiàn)了相關(guān)數(shù)據(jù)之間的關(guān)系。數(shù)據(jù)結(jié)構(gòu)與算法有著密切的關(guān)系,只有明確了問(wèn)題的算法,才能更好地構(gòu)造數(shù)據(jù)結(jié)構(gòu);但選擇好的算法,常常依賴于好的數(shù)據(jù)結(jié)構(gòu)。事實(shí)上,程序就是在數(shù)據(jù)的某些特定的表示方式和結(jié)構(gòu)的基礎(chǔ)上對(duì)抽象算法的具體描述。因此,編寫一個(gè)程序的關(guān)鍵就是合理地組織數(shù)據(jù)和設(shè)計(jì)好的算法。1.4 程序設(shè)計(jì)基礎(chǔ)1.4.2 算法的特性(1)有窮性(2)確定性3.功能豐富4.表達(dá)力強(qiáng)5.移植性好1.4 程序設(shè)計(jì)基礎(chǔ)1.4.3 算法

11、的描述算法的表示方法很多,常見(jiàn)的有自然語(yǔ)言、傳統(tǒng)流程圖、N-S圖、偽代碼、PAD圖等。1用自然語(yǔ)言描述自然語(yǔ)言就是人們?nèi)粘J褂玫恼Z(yǔ)言,可以是中文、英文等。用自然語(yǔ)言表示的算法通俗易懂,但一般篇幅較冗長(zhǎng),表達(dá)上往往不易準(zhǔn)確,容易引起理解上的“歧義性”。所以,除了很簡(jiǎn)單的問(wèn)題外,一般不使用這種描述。1.4 程序設(shè)計(jì)基礎(chǔ)1.4.3 算法的描述2用流程圖描述1.4 程序設(shè)計(jì)基礎(chǔ)1.4.3 算法的描述4用偽代碼描述偽代碼是一種介于自然語(yǔ)言和計(jì)算機(jī)語(yǔ)言之間的文字和符號(hào),用來(lái)描述算法。偽代碼的表現(xiàn)形式比較自由靈活,沒(méi)有嚴(yán)謹(jǐn)?shù)恼Z(yǔ)法格式。5用計(jì)算機(jī)語(yǔ)言描述我們的任務(wù)是用計(jì)算機(jī)解題,也就是用計(jì)算機(jī)實(shí)現(xiàn)算法。計(jì)算機(jī)

12、是無(wú)法識(shí)別流程圖和偽代碼的。只有用計(jì)算機(jī)語(yǔ)言編寫的程序,經(jīng)編譯成目標(biāo)程序后,才能被計(jì)算機(jī)執(zhí)行。因此,用任何方法描述的算法,還得要將它轉(zhuǎn)化成計(jì)算機(jī)語(yǔ)言程序。1.4 程序設(shè)計(jì)基礎(chǔ)1.4.4 程序設(shè)計(jì)方法1. 程序設(shè)計(jì)的一般步驟程序設(shè)計(jì)一般步驟如下:(1) 分析問(wèn)題,確定解題方案(2) 確定算法(3) 編寫程序(4) 調(diào)試運(yùn)行程序(5) 建立文檔資料1.4 程序設(shè)計(jì)基礎(chǔ)1.4.4 程序設(shè)計(jì)方法2. 結(jié)構(gòu)化程序設(shè)計(jì)方法所謂結(jié)構(gòu)化的程序設(shè)計(jì)方法就是“按照一組能夠提高程序的易讀性和易維護(hù)性的規(guī)則進(jìn)行程序設(shè)計(jì)的方法”。其要點(diǎn)如下:(1) 程序的質(zhì)量標(biāo)準(zhǔn)是“清晰第一,效率第二”。(2) 程序的設(shè)計(jì)采用“自頂向

13、下,逐步求精,模塊化設(shè)計(jì),結(jié)構(gòu)化編程”的方法。(3) 程序的結(jié)構(gòu)僅由順序、分支、循環(huán)三種基本結(jié)構(gòu)的組合、嵌套而成,且滿足:(4) 程序的書寫必須按一定的規(guī)范和格式進(jìn)行。(5) 程序的設(shè)計(jì)風(fēng)格要以好的可讀性為標(biāo)準(zhǔn),以使用程序的用戶為核心,外觀美觀、結(jié)構(gòu)流暢、語(yǔ)句簡(jiǎn)潔。1.5 情景應(yīng)用訓(xùn)練項(xiàng)目1.5.1 項(xiàng)目1:VC+ 6.0開發(fā)工具的使用 【訓(xùn)練目的】1熟悉Visual C+ 6.0環(huán)境。2掌握創(chuàng)建工程、添加C源程序的方法。3熟悉C程序編輯、編譯、連接和運(yùn)行的過(guò)程。4通過(guò)運(yùn)行簡(jiǎn)單的C程序,初步了解C源程序的結(jié)構(gòu)。1.5 情景應(yīng)用訓(xùn)練項(xiàng)目1.5.1 項(xiàng)目1:VC+ 6.0開發(fā)工具的使用 【操作步驟

14、】1啟動(dòng)Visual C+ 6.0, 并創(chuàng)建工程test.2. 在test工程中添加一個(gè)temp1.c文件,并保存在D:MYC路徑下。3在temp1.c程序中,編輯如下程序:#include main() int a,b,c; a = 29; b = 30; c = a - b; printf(%dn,c);4編譯、連接并運(yùn)行,觀察運(yùn)行結(jié)果。1.5 情景應(yīng)用訓(xùn)練項(xiàng)目1.5.2 項(xiàng)目2: 多程序文件的工程設(shè)置 【訓(xùn)練目的】1熟悉工程的打開和關(guān)閉。2熟悉工程設(shè)置方法?!静僮鞑襟E】1啟動(dòng)Visual C+ 6.0,打開項(xiàng)目1中創(chuàng)建的工程test。2在test工程中,再創(chuàng)建添加一個(gè)temp2.c文件。

15、3在temp2.c文件中,模仿例1.1程序,編寫輸出“Good Night!”的程序代碼。4進(jìn)行工程設(shè)置,分別對(duì)本工程中的每個(gè)C程序進(jìn)行編譯、連接和運(yùn)行。學(xué)習(xí)目標(biāo)案例目標(biāo) 理解和掌握C語(yǔ)言的基本數(shù)據(jù)類型 掌握變量三個(gè)要素:名稱、類型和值學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)掌握C語(yǔ)言的基本字符、標(biāo)識(shí)符和關(guān)鍵字了解C語(yǔ)言的編程規(guī)范理解和掌握數(shù)據(jù)類型、常量與變量理解和掌握運(yùn)算符與表達(dá)式案例2 飲料交換問(wèn)題【問(wèn)題描述】小明、景天和婷婷三人常在一起玩游戲。有一天,小明帶來(lái)一杯雪碧,而婷婷帶來(lái)一杯可樂(lè)。景天看了看他兩的飲料,突然問(wèn)道:你兩把飲料對(duì)換,但各自的杯不變,該怎么辦?聰明的小明想了想,便立即給出了答案:準(zhǔn)備同樣大小的

16、第三個(gè)杯子,把雪碧倒入第三個(gè)杯子,可樂(lè)倒入盛雪碧的杯子,然后將第三個(gè)杯子中的雪碧倒入盛可樂(lè)的杯子。請(qǐng)你編程,用C語(yǔ)言來(lái)描述小明對(duì)“兩杯飲料交換問(wèn)題”的求解。案例2 飲料交換問(wèn)題【問(wèn)題分析】小明和婷婷兩人交換飲料,可用兩變量值交換的數(shù)學(xué)模型描述:定義變量a,b表示兩個(gè)杯子,杯中的飲料就是變量中存儲(chǔ)的數(shù)值。不失一般性,不同的容器用不同的變量表示,容器中的不同物資代表不同數(shù)據(jù)。這涉及到C語(yǔ)言數(shù)據(jù)類型、變量的定義和引用。案例2 飲料交換問(wèn)題【算法設(shè)計(jì)】把小明和婷婷的杯子分別有a和b表示,雪碧和可樂(lè)定義為變量a和b中存儲(chǔ)的數(shù)值。借助于一個(gè)空杯子,用變量c表示,兩杯飲料的交換算法如下:(1) 將a杯中的雪

17、碧倒入c杯子中;(2) 將b杯中的可樂(lè)倒入a杯子中;(3) 將c杯中的雪碧倒入b杯子中;案例2 飲料交換問(wèn)題參考代碼如下:#include void main()int a,b,c;a = 1; /*小明杯中注入可樂(lè)*/b = 2; /*婷婷杯中注入雪碧*/c = a; /*將小明杯中的可樂(lè)注入空杯中*/a = b; /*將婷婷杯中的雪碧注入小明杯中*/b = c; /*將C杯中的可樂(lè)注入小明杯中*/printf(a=%d,b=%dn,a,b);案例2 飲料交換問(wèn)題【知識(shí)準(zhǔn)備】數(shù)據(jù),是C程序的處理對(duì)象。數(shù)據(jù)在處理時(shí)需要先存入計(jì)算機(jī)的內(nèi)存中,不同類型的數(shù)據(jù)在內(nèi)存中的存放形式是不同的。兩杯飲料交換

18、問(wèn)題,數(shù)值化后,將涉及到C語(yǔ)言數(shù)據(jù)類型、變量定義等相關(guān)知識(shí)。要完成上面的任務(wù),必須要能理解C語(yǔ)言的標(biāo)識(shí)符、關(guān)鍵字、變量、數(shù)據(jù)類型、運(yùn)算符和表達(dá)式等知識(shí)點(diǎn)。2.1 字符集、標(biāo)識(shí)符和關(guān)鍵字2.1.1 字符集字符集是構(gòu)成C語(yǔ)言的基本元素。用C語(yǔ)言編寫程序時(shí),所寫的語(yǔ)句是由字符集中的字符構(gòu)成。C語(yǔ)言的字符集由下列字符構(gòu)成:(1) 數(shù)字字符:09;(2) 大小寫英文字母:az,AZ;(3) 特殊字符: ! # % & * _(下劃線) - + = / | . , : ; ? “ ( ) (4) 空白字符:空格符、換行符、制表符等??瞻鬃址诔绦蛑衅鸱指羝渌煞值淖饔?,在程序中空白字符通常不會(huì)影響程序的意

19、義。寫程序時(shí),通常利用空白字符的這種性質(zhì),把程序內(nèi)容排列成適當(dāng)?shù)母袷?,以增?qiáng)程序的可讀性。2.1 字符集、標(biāo)識(shí)符和關(guān)鍵字2.1.2 關(guān)鍵字(保留字)在C語(yǔ)言中,有32個(gè)關(guān)鍵字,如表2-1所示。他們是由系統(tǒng)預(yù)先定義的專用詞,它們有特別的含義。如int用來(lái)定義整數(shù)類型。在今后的學(xué)習(xí)中將會(huì)逐步接觸到這些關(guān)鍵字的具體使用方法。表2-1 C語(yǔ)言關(guān)鍵字2.1 字符集、標(biāo)識(shí)符和關(guān)鍵字2.1.3 標(biāo)識(shí)符在編程過(guò)程中,用來(lái)標(biāo)識(shí)變量名、符號(hào)常量、數(shù)組名、函數(shù)名、文件名等的有效字符序列稱為“標(biāo)識(shí)符”(identifier)。通俗地講,標(biāo)識(shí)符就是名字。C語(yǔ)言對(duì)標(biāo)識(shí)符有如下規(guī)定:(1) 標(biāo)識(shí)符只能由字母(az,AZ)、

20、數(shù)字(09)和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。(2) 不能使用C語(yǔ)言的關(guān)鍵字(或稱保留字)作為標(biāo)識(shí)符。2.1 字符集、標(biāo)識(shí)符和關(guān)鍵字2.1.4 C語(yǔ)言的編程規(guī)范1. 匈牙利命名法在標(biāo)識(shí)符的命名法中最常見(jiàn)的就是匈牙利命名法,即標(biāo)識(shí)符的名字由兩部分組成,前面一部分即前綴表示類型,后面一部分用于表示意義,采用首字母大寫的英文單詞或縮寫。比如一個(gè)存儲(chǔ)和數(shù)的變量,可以取名為iSum,其只i表示該變量是整數(shù),Sum表示該變量是用來(lái)計(jì)算和數(shù)的。表2-2 變量命名規(guī)則約定2.1 字符集、標(biāo)識(shí)符和關(guān)鍵字2.1.4 C語(yǔ)言的編程規(guī)范2. 注釋的合理使用C語(yǔ)言的注釋是以“/*”開始,以“*/”結(jié)

21、束。在這之間的所有內(nèi)容編譯程序認(rèn)為是注釋信息,編譯時(shí)跳過(guò)它們。注釋通常用于以下幾種情況:版本版權(quán)聲明、函數(shù)接口說(shuō)明和重要代碼行或者段落說(shuō)明。注釋是提高可讀性的重要手段,用于幫助別人理解代碼,在使用時(shí)可遵循以下原則:(1) 注釋是對(duì)代碼的解釋,并不是文檔。注釋不可喧賓奪主,注釋花樣也要少。(2) 如果代碼本身就很清楚,就沒(méi)必要加注釋。(3) 注釋應(yīng)當(dāng)準(zhǔn)確、易懂,防止出現(xiàn)二義性。(4) 注釋的位置要與描述的代碼相鄰,可放在代碼上面或者右側(cè),不要放在代碼的下面。2.1 字符集、標(biāo)識(shí)符和關(guān)鍵字2.1.4 C語(yǔ)言的編程規(guī)范3. 程序中的“ ”要對(duì)齊程序的分界符“”和“”應(yīng)占據(jù)一行并且位于同一列,同時(shí)與引

22、用它們的語(yǔ)句左對(duì)齊。(2)“”之內(nèi)的代碼塊在“”右側(cè)空4個(gè)格處左對(duì)齊。(3) 如果出現(xiàn)嵌套“”的情況,則使用縮進(jìn)對(duì)齊的形式。2.1 字符集、標(biāo)識(shí)符和關(guān)鍵字2.1.4 C語(yǔ)言的編程規(guī)范4. 合理使用空格使代碼更規(guī)范(1) 關(guān)鍵字之后要留一個(gè)空格。象const、case等關(guān)鍵字之后要保留一個(gè)空格,否則編譯器無(wú)法辯析它是關(guān)鍵字。對(duì)if、for、while等關(guān)鍵字之后應(yīng)該留一個(gè)空格,然后再跟小括號(hào)“(”,以突出顯示關(guān)鍵字。(2) 在函數(shù)名之后不要留空格,要緊跟“(”,以顯示與關(guān)鍵字的區(qū)別。(3) “(”后向緊跟,“)”、“,”、“;”前向緊跟,緊跟處不留空格。(4) “,”之后要留空格,如果“;”不是

23、一行的結(jié)束,則最后要留空格。2.1 字符集、標(biāo)識(shí)符和關(guān)鍵字2.1.4 C語(yǔ)言的編程規(guī)范4. 合理使用空格使代碼更規(guī)范(5) 賦值運(yùn)算符、關(guān)系運(yùn)算符、算術(shù)運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符,如“=”、“+=”、“=”、“=”、“+”、“-”、“*”、“/”、“%”、“&”、“|”、“”等操作符,同樣前后不加空格。5換行使代碼更清晰代碼行最大長(zhǎng)度應(yīng)該控制在70-80個(gè)字符。長(zhǎng)的表達(dá)式要在低優(yōu)先級(jí)操作符處折分成新行,操作符放在新行的前面,用于突出顯示操作符。折分出來(lái)的新行要適當(dāng)縮進(jìn),使代碼版式整齊,可讀性強(qiáng)。2.2 C語(yǔ)言的數(shù)據(jù)類型2.2.1 C語(yǔ)言的數(shù)據(jù)類型分類2.2 C語(yǔ)言的數(shù)據(jù)類型2.2.2 整型數(shù)

24、據(jù)1整型的類別在C語(yǔ)言中,整型數(shù)據(jù)分為基本整型、短整型、長(zhǎng)整型3大類。其中每一類又分為無(wú)符號(hào)和有符號(hào)2種情況,如表2-3所示。表2-3 整型分類表2.2 C語(yǔ)言的數(shù)據(jù)類型2.2.2 整型數(shù)據(jù)2 整型數(shù)據(jù)在內(nèi)存中的的存儲(chǔ)形式整型數(shù)據(jù)是以二進(jìn)制數(shù)補(bǔ)碼的形式存儲(chǔ)的。對(duì)有符號(hào)數(shù)據(jù),則存儲(chǔ)單元的最高位為符號(hào)位,1表示負(fù)數(shù),0 表示正數(shù)。對(duì)無(wú)符號(hào)數(shù)據(jù),則沒(méi)有符號(hào)位,所有的存儲(chǔ)單元均為數(shù)據(jù)位。以短整型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié)(16位)為例,來(lái)說(shuō)明有符號(hào)數(shù)據(jù)和無(wú)符號(hào)數(shù)據(jù)在內(nèi)存中占用存儲(chǔ)單元的區(qū)別,如圖所示。2.2 C語(yǔ)言的數(shù)據(jù)類型2.2.2 整型數(shù)據(jù)3求補(bǔ)碼的方法在計(jì)算機(jī)中,整數(shù)有原碼、反碼和補(bǔ)碼3種表示方法。

25、(1) 一個(gè)正數(shù)的反碼和補(bǔ)碼與原碼相同 (2) 負(fù)數(shù)的原碼就是把符號(hào)位數(shù)值化 (3) 負(fù)數(shù)的反碼,其原碼的符號(hào)位不變,其它位按位取反 (4) 負(fù)數(shù)的補(bǔ)碼是反碼末位(最右端位)加1。2.2 C語(yǔ)言的數(shù)據(jù)類型2.2.3 實(shí)型數(shù)據(jù)1實(shí)型數(shù)據(jù)的類別實(shí)型也稱之為浮點(diǎn)型。在C語(yǔ)言中,實(shí)型數(shù)據(jù)分為單精度(float)、雙精度(double)和長(zhǎng)雙精度(long double)三種。實(shí)型數(shù)均為有符號(hào)數(shù)據(jù),沒(méi)有無(wú)符號(hào)實(shí)型數(shù),如表2-4所示。表2-4 實(shí)型數(shù)據(jù)的分類2.2 C語(yǔ)言的數(shù)據(jù)類型2.2.3 實(shí)型數(shù)據(jù)2. 實(shí)型數(shù)據(jù)的存儲(chǔ)形式實(shí)型數(shù)據(jù)在內(nèi)存中是以指數(shù)形式存放的。系統(tǒng)把一個(gè)實(shí)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別

26、存放。其中,指數(shù)部分采用規(guī)范化的指數(shù)形式。一個(gè)實(shí)型數(shù)據(jù)3.14159=+0.314159X101在內(nèi)存中的存放形式如圖2-5所示。圖2-5 實(shí)型數(shù)據(jù)的存儲(chǔ)形式2.2 C語(yǔ)言的數(shù)據(jù)類型2.2.4 字符型數(shù)據(jù)字符型數(shù)據(jù)分字符型和無(wú)符號(hào)字符型2種,如表2-5所示。圖2-5 實(shí)型數(shù)據(jù)的存儲(chǔ)形式2.3 常量與變量2.3.1 常 量常量可分為不同類型,常用的有:整型常量、實(shí)型常量、字符常量、字符串常量和符號(hào)常量。1. 整型常量整型常量由一個(gè)或多個(gè)數(shù)字組成,可以有正、負(fù)號(hào),但不能有小數(shù)點(diǎn)。整型常量有三種表示方法:十進(jìn)制常量沒(méi)有前綴,所含數(shù)字09。八進(jìn)制常量有前綴0(零),所含數(shù)字07。(3)十六進(jìn)制常量有前

27、綴0 x或0X,所含數(shù)字09、AF或af。2.3 常量與變量2.3.1 常 量2. 實(shí)型常量實(shí)型常量,就是我們通常所說(shuō)的實(shí)數(shù),又稱浮點(diǎn)數(shù),它們?cè)谟?jì)算機(jī)中是近似表示的。C語(yǔ)言中的實(shí)數(shù)只有十進(jìn)制表示,有以下兩種書寫形式:(1) 十進(jìn)制形式由正負(fù)號(hào)、整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分組成。例如:123.9、-20.234、0.1234、0.0等都是正確的書寫形式。(2) 指數(shù)形式也稱科學(xué)表示形式,由正負(fù)號(hào)、整數(shù)部分、小數(shù)點(diǎn)、小數(shù)部分和字母E或e后面帶正負(fù)號(hào)的整數(shù)組成。2.3 常量與變量2.3.1 常 量3. 字符常量字符型常量是用一對(duì)單引號(hào)(即撇號(hào))括起來(lái)的單個(gè)字符,在內(nèi)存中占一個(gè)字節(jié)。例如:a,b,1,$

28、,A、# /正確的字符常量 AB、AB、a /錯(cuò)誤的字符常量 一個(gè)字符常量的值是該字符對(duì)應(yīng)的ASCII碼值(參見(jiàn)附錄A)。例如,字符常量a z 對(duì)應(yīng)的ASCII編碼值是97123;字符常量09 對(duì)應(yīng)的ASCII編碼值是4857。顯然0與數(shù)字0是不同的。 C語(yǔ)言中還允許一種特殊形式的字符常量,即以反斜線“”開頭的字符序列,稱為轉(zhuǎn)義字符。例如,printf() 函數(shù)中的 n ,代表?yè)Q行,而不是字符n 。2.3 常量與變量2.3.1 常 量4. 字符串常量字符串常量是用雙引號(hào)括起來(lái)的字符序列。比如:CHINA, , teacher and student , 12345.456 , a等都是字符串常

29、量。字符串常量一般用一個(gè)字符數(shù)組(參見(jiàn)第6章)來(lái)存儲(chǔ),每個(gè)字符占一個(gè)字節(jié),存放其對(duì)應(yīng)的ASCII碼。字符串常量在內(nèi)存中存儲(chǔ)時(shí),系統(tǒng)自動(dòng)加上串尾標(biāo)志0 。每個(gè)字符串常量在內(nèi)存中占用的存儲(chǔ)單元數(shù)目應(yīng)為該字符串長(zhǎng)度(字符個(gè)數(shù))加1。2.3 常量與變量2.3.1 常 量5符號(hào)常量用一個(gè)特定的符號(hào)來(lái)代替一個(gè)常量或一個(gè)較為復(fù)雜的字符串,這個(gè)符號(hào)稱為符號(hào)常量。它通常由預(yù)處理命令#define來(lái)定義。符號(hào)常量一般用大寫字母表示,以便與其他標(biāo)識(shí)符區(qū)別。符號(hào)常量的一般定義形式:#define 符號(hào)常量標(biāo)識(shí)符 常量值(或字符串)2.3 常量與變量2.3.2 變 量變量是指在程序運(yùn)行過(guò)程中,其值可以改變的量。使用變量

30、前必須先定義(聲明),變量是用來(lái)保存常量的。變量有三個(gè)要素:名稱、類型和值。1 變量的名字變量名字是一個(gè)標(biāo)識(shí)符,所以要符合標(biāo)識(shí)符的命名規(guī)則。例如:a, _abc,AREA,x1,x2 /合法的變量名4ac,#g,a+1,fn!a,a$ /不合法的變量名2.3 常量與變量2.3.2 變 量2變量的定義變量在使用之前必須先定義,要聲明自己的數(shù)據(jù)類型、存儲(chǔ)類型。變量定義的一般格式為:數(shù)據(jù)類型 變量名1,變量名2,,變量n;例如:int iSum, iLength, x, y; /定義了4個(gè)整型變量iSum,iLength,x,ychar ch; /定義了一個(gè)字符型變量chfloat fSum, fW

31、idth; /定義了2實(shí)型(單精度)變量fSum, fWidthdouble u,v; /定義了2實(shí)型(雙精度)變量u,v2.3 常量與變量2.3.2 變 量3變量的初始化C語(yǔ)言允許在定義變量的同時(shí)使變量初始化。如:int a = 2; /定義a為整型變量,初值為2char b = A; /定義b為字符型變量,初值為Afloat x = 2.1234F; /定義x為實(shí)型變量,初值為2.1234F也可對(duì)被定義的變量的部分變量進(jìn)行初始化。如int u,v = 10,w; /定義u,v,w為整型變量,v的初值為102.4 運(yùn)算符與表達(dá)式2.4.1 C語(yǔ)言運(yùn)算符常用的C語(yǔ)言的運(yùn)算符有以下幾類:(1)

32、算術(shù)運(yùn)算符: * (2) 關(guān)系運(yùn)算符: = = = !=(3) 邏輯運(yùn)算符: ! & |(4) 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:()(5) 自增、自減運(yùn)算符: (6) 賦值運(yùn)算符: =(7) 條件運(yùn)算符: ? :(8) 逗號(hào)運(yùn)算符: ,2.4 運(yùn)算符與表達(dá)式2.4.1 C語(yǔ)言運(yùn)算符常用的C語(yǔ)言的運(yùn)算符有以下幾類:(9) 指針運(yùn)算符: * &(10) 求字節(jié)數(shù)運(yùn)算符:sizeof(11) 位運(yùn)算符: | &(12) 分量運(yùn)算符: (13) 下標(biāo)運(yùn)算符: 2.4 運(yùn)算符與表達(dá)式2.4.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式C語(yǔ)言的算術(shù)運(yùn)算符包括基本算術(shù)運(yùn)算符、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符和自增、自減運(yùn)算符。1. 基本算術(shù)運(yùn)算符 C

33、語(yǔ)言提供如下幾種基本算術(shù)運(yùn)算符。 + :加法運(yùn)算符。如2+3,a+b。 - :減法運(yùn)算符。如2-3,a-b。 * :乘法運(yùn)算符。如2*3,a*b。 / :除法運(yùn)算符。如2/3,a/b。 % :取余運(yùn)算符。如10%2,a%b。其中,加、減、乘、除運(yùn)算符,與數(shù)學(xué)中的運(yùn)算相同。2.4 運(yùn)算符與表達(dá)式2.4.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式C語(yǔ)言的算術(shù)運(yùn)算符包括基本算術(shù)運(yùn)算符、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符和自增、自減運(yùn)算符。2. 自增(+)與自減(-)運(yùn)算符 + :自增運(yùn)算符。如a+,+b。 - :自減運(yùn)算符。如a-,-b。自增、自減運(yùn)算符是單目運(yùn)算符,即對(duì)一個(gè)運(yùn)算對(duì)象施加運(yùn)算,運(yùn)算結(jié)果仍賦予該對(duì)象。參加運(yùn)算的對(duì)象必

34、須是變量。自增或自減的作用就是,使變量的值自己增1或減1。這兩個(gè)運(yùn)算符有兩種用法,一種是在變量之前,稱為前置;另一種是在變量之后,稱為后置。2.4 運(yùn)算符與表達(dá)式2.4.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式C語(yǔ)言的算術(shù)運(yùn)算符包括基本算術(shù)運(yùn)算符、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符和自增、自減運(yùn)算符。3. 算術(shù)表達(dá)式用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來(lái)的式子,稱為算術(shù)表達(dá)式。運(yùn)算對(duì)象可以是常量、變量、函數(shù)等。例如:2 * (a + 4)/18 - 2.98 + A /*正確,合法的C算術(shù)表達(dá)式*/sin(x) + cos(x)/2,(int)a + 4 + (-z) /*正確,合法的C算術(shù)表達(dá)式*/sin30

35、0 + y e9 /*錯(cuò)誤,不是合法的C算術(shù)表達(dá)式*/9 + |x| /*錯(cuò)誤,不是合法的C算術(shù)表達(dá)式*/3a + 5 /*錯(cuò)誤,不是合法的C算術(shù)表達(dá)式*/2.4 運(yùn)算符與表達(dá)式2.4.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式C語(yǔ)言的算術(shù)運(yùn)算符包括基本算術(shù)運(yùn)算符、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符和自增、自減運(yùn)算符。4. 算術(shù)運(yùn)算符的優(yōu)先級(jí)和結(jié)合方向C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合方向,在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)別高低次序執(zhí)行,再按運(yùn)算符的結(jié)合方向結(jié)合(相同優(yōu)先級(jí)時(shí))。例如先乘除后加減。(1) 基本算術(shù)運(yùn)算符(+,-,*,/,% )中,%、*、/ 的優(yōu)先級(jí)高于+ 、- ,結(jié)合方向?yàn)椤白宰笾劣摇保ㄗ蠼Y(jié)合性)。例如:

36、a + b * c 2 等價(jià)于:(a + (b * c))- 2。(2) 自增、自減和強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(+、- -、()的的優(yōu)先級(jí)別相同,均高于基本算術(shù)運(yùn)算符(+,-,*,/,%),是單目運(yùn)算符,結(jié)合方向是“自右至左”(右結(jié)合性)。2.4 運(yùn)算符與表達(dá)式2.4.3 數(shù)據(jù)間的混合運(yùn)算與類型轉(zhuǎn)換C 語(yǔ)言中,不同的基本數(shù)據(jù)類型的數(shù)據(jù)可以進(jìn)行混合運(yùn)算。在進(jìn)行混合運(yùn)算時(shí),先轉(zhuǎn)換為同一類型,然后再進(jìn)行運(yùn)算。不同類型的數(shù)據(jù)的轉(zhuǎn)換有兩種方式:自動(dòng)類型轉(zhuǎn)換(隱式轉(zhuǎn)換)和強(qiáng)制轉(zhuǎn)換(顯式轉(zhuǎn)換)。1. 自動(dòng)類型轉(zhuǎn)換(隱式轉(zhuǎn)換)C語(yǔ)言允許在整數(shù)、單精度浮點(diǎn)型數(shù)據(jù)之間進(jìn)行混合運(yùn)算。在進(jìn)行混合運(yùn)算時(shí),首先將不同類型的數(shù)據(jù)

37、由低向高轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。轉(zhuǎn)換規(guī)則如圖2-10所示,其中,向左的橫向箭頭和向上的縱向箭頭,表示當(dāng)運(yùn)算對(duì)象類型不同時(shí)的轉(zhuǎn)換方向。2.4 運(yùn)算符與表達(dá)式2.4.3 數(shù)據(jù)間的混合運(yùn)算與類型轉(zhuǎn)換2. 強(qiáng)制類型轉(zhuǎn)換(顯示轉(zhuǎn)換)在C語(yǔ)言中,常常要把一些表達(dá)式的類型轉(zhuǎn)換成所需的類型。強(qiáng)制類型轉(zhuǎn)換的一般格式為:(強(qiáng)制轉(zhuǎn)換的類型名)(表達(dá)式)功能:把表達(dá)式強(qiáng)制轉(zhuǎn)換為指定的類型。例如:(int)(a) 或 (int)a /*將a強(qiáng)制轉(zhuǎn)換成整型*/(double)(x + y) /*將x+y強(qiáng)制轉(zhuǎn)換成double 型*/(float)(45 % 8) /*將45%8的值強(qiáng)制轉(zhuǎn)換成float型*/2.4

38、運(yùn)算符與表達(dá)式2.4.4 位運(yùn)算和位運(yùn)算符所謂位運(yùn)算,是指對(duì)一個(gè)數(shù)據(jù)的某些二進(jìn)制位進(jìn)行的運(yùn)算。每個(gè)二進(jìn)制位只能存放1位二進(jìn)制數(shù)“0”或者“1”。通常把組成一個(gè)數(shù)據(jù)的最右邊的二進(jìn)制位稱做第0位,從右到左以此稱為第1位,第2位最左邊一位稱做最高位,如圖2-12所示。圖2-12 位(bit)的排列順序示意圖2.4 運(yùn)算符與表達(dá)式2.4.4 位運(yùn)算和位運(yùn)算符1 按位與運(yùn)算符“&”“按位與”是指兩個(gè)運(yùn)算對(duì)象按對(duì)應(yīng)二進(jìn)制位進(jìn)行“邏輯與”運(yùn)算,即當(dāng)且僅當(dāng)參加運(yùn)算的兩個(gè)對(duì)象的對(duì)應(yīng)二進(jìn)制位都為1時(shí),結(jié)果的對(duì)應(yīng)二進(jìn)制位為1,否則為0。即0&0 = 0; 0&1 = 0; 1&0 = 0; 1&1 = 1;2. 按

39、位或運(yùn)算符“|”“按位或”運(yùn)算是指兩個(gè)運(yùn)算對(duì)象按對(duì)應(yīng)二進(jìn)制位進(jìn)行“邏輯或”運(yùn)算,即:當(dāng)參加運(yùn)算的兩個(gè)對(duì)象的對(duì)應(yīng)二進(jìn)制位有一個(gè)為“1”時(shí),結(jié)果的對(duì)應(yīng)二進(jìn)制位為“1”。0|0 = 0; 0|1 = 1; 1|0 = 1; 1|1 = 1;2.4 運(yùn)算符與表達(dá)式2.4.4 位運(yùn)算和位運(yùn)算符3. 按位異或運(yùn)算符“”“按位異或”運(yùn)算是指兩個(gè)運(yùn)算對(duì)象按對(duì)應(yīng)二進(jìn)制位進(jìn)行“邏輯異或”運(yùn)算,即當(dāng)參加運(yùn)算的兩個(gè)對(duì)象的相應(yīng)二進(jìn)制位一個(gè)為“0”,另一個(gè)為“1”時(shí),結(jié)果的對(duì)應(yīng)二進(jìn)制位為1,如下所表示: 00 = 0; 01 = 1; 10 = 1; 11 = 0;4. 按位取反運(yùn)算符“”“按位取反”運(yùn)算為單目運(yùn)算,它將

40、運(yùn)算對(duì)象的各位取反。即將1變0,0變1,例如024是對(duì)八進(jìn)制數(shù)24(即二進(jìn)制數(shù)00010100)按位求反。 即八進(jìn)制數(shù)353。2.4 運(yùn)算符與表達(dá)式2.4.4 位運(yùn)算和位運(yùn)算符5. 左移運(yùn)算符“”左移運(yùn)算符“”的使用方式為: 運(yùn)算對(duì)象”右移運(yùn)算符“”的使用方法為:運(yùn)算對(duì)象右移位數(shù)右移運(yùn)算符將運(yùn)算對(duì)象的每個(gè)二進(jìn)制位同時(shí)向右移動(dòng)指定的位數(shù),從右邊移出的低位部分被丟棄。對(duì)無(wú)符號(hào)數(shù),左邊空出的高位補(bǔ)0;對(duì)有符號(hào)數(shù),正數(shù)的高位部分補(bǔ)0,負(fù)數(shù)高位部分補(bǔ)0還是1跟計(jì)算機(jī)系統(tǒng)有關(guān)。移入0的稱為“邏輯右移”,移入1的稱為“算術(shù)右移”。2.4 運(yùn)算符與表達(dá)式7 位復(fù)合賦值運(yùn)算符類似于算術(shù)運(yùn)算的復(fù)合運(yùn)算符,位運(yùn)算符

41、和賦值運(yùn)算符也可以構(gòu)成“復(fù)合賦值運(yùn)算符”。如表2-9所示。表2-9 復(fù)合賦值運(yùn)算符及意義2.4 運(yùn)算符與表達(dá)式2.4.5 賦值運(yùn)算符和賦值表達(dá)式所謂賦值,是指將一個(gè)數(shù)據(jù)存儲(chǔ)到某個(gè)變量對(duì)應(yīng)的內(nèi)存存儲(chǔ)單元的過(guò)程。賦值運(yùn)算符有兩種類型:基本賦值運(yùn)算符和復(fù)合賦值運(yùn)算符。1. 基本賦值運(yùn)算符在C語(yǔ)言中,等號(hào)“=”被作為是一種運(yùn)算符,稱為賦值運(yùn)算符。一般形式: = ;功能: 將右邊表達(dá)式的值賦給左邊的變量。例如:a = 3; /* 將右邊數(shù)據(jù)3值賦給左邊的變量a */x = a + 5; /* 將右邊表達(dá)式(a+5)的值8賦給左邊的變量x*/2.4 運(yùn)算符與表達(dá)式2.4.5 賦值運(yùn)算符和賦值表達(dá)式所謂賦值

42、,是指將一個(gè)數(shù)據(jù)存儲(chǔ)到某個(gè)變量對(duì)應(yīng)的內(nèi)存存儲(chǔ)單元的過(guò)程。賦值運(yùn)算符有兩種類型:基本賦值運(yùn)算符和復(fù)合賦值運(yùn)算符。2. 復(fù)合賦值運(yùn)算符在賦值運(yùn)算符的前面加上一個(gè)其它運(yùn)算符后就構(gòu)成復(fù)合賦值運(yùn)算符。一般形式: = ;等價(jià)于: = ;2.4 運(yùn)算符與表達(dá)式2.4.5 賦值運(yùn)算符和賦值表達(dá)式所謂賦值,是指將一個(gè)數(shù)據(jù)存儲(chǔ)到某個(gè)變量對(duì)應(yīng)的內(nèi)存存儲(chǔ)單元的過(guò)程。賦值運(yùn)算符有兩種類型:基本賦值運(yùn)算符和復(fù)合賦值運(yùn)算符。3. 賦值表達(dá)式由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱為賦值表達(dá)式。一般形式: 例如, a = 2 是一個(gè)賦值表達(dá)式。對(duì)賦值表達(dá)式求解的過(guò)程是:將賦值運(yùn)算符右側(cè)的“表達(dá)式”的值賦給左側(cè)的變量

43、,而賦值表達(dá)式的值就是被賦值的變量的值。如 a = 2 這個(gè)賦值表達(dá)式的值就是變量a的值2。2.4 運(yùn)算符與表達(dá)式2.4.6 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)運(yùn)算符為“,”。用逗號(hào)運(yùn)算符把若干個(gè)表達(dá)式連接起來(lái)的式子稱為逗號(hào)表達(dá)式,其一般形式為:表達(dá)式1,表達(dá)式2,表達(dá)式n例如:3+2,4+6x+3,y+z,s-1等都是在做逗號(hào)運(yùn)算。(1) 求解過(guò)程:從左到右的順序逐個(gè)求解表達(dá)式1,表達(dá)式2,表達(dá)式n,最后一個(gè)表達(dá)式(表達(dá)式n)的值就是整個(gè)逗號(hào)表達(dá)式的值。例如,表達(dá)式3+2,4+6的值是10。(2) 優(yōu)先級(jí):逗號(hào)運(yùn)算符在所有運(yùn)算符中的優(yōu)先級(jí)別最低,且具有從左至右的結(jié)合性。2.5 情景應(yīng)用案例拓展2.6

44、.1案例2-1:利用星號(hào)字符“*”輸出矩形【問(wèn)題描述】本例使用星號(hào)字符“*”輸出矩形,這里讓每條邊都輸出4個(gè)“*”號(hào),使其相等,運(yùn)行程序,結(jié)果如圖2-13所示。圖2-13 輸出矩形2.5 情景應(yīng)用案例拓展2.6.1案例2-1:利用星號(hào)字符“*”輸出矩形【算法設(shè)計(jì)】使用字符變量,將字符“*”賦給這個(gè)變量,然后利用空格的轉(zhuǎn)義字符“40”在第2、3行中間輸出一個(gè)空格。參考代碼如下:#include void main() char a; /*定義字符變量*/ a = *; /*給變量賦值*/ printf(%c%c%c%cn,a,a,a,a); /*輸出變量*/ printf(%c4040%cn,a

45、,a); /*輸出變量和轉(zhuǎn)義字符*/ printf(%c4040%cn,a,a); /*輸出變量和轉(zhuǎn)義字符*/ printf(%c%c%c%cn,a,a,a,a); /*輸出變量*/2.5 情景應(yīng)用案例拓展2.6.2案例2-2:計(jì)算a+=a*=a/=a-5【問(wèn)題描述】運(yùn)用復(fù)合運(yùn)算符,計(jì)算表達(dá)式a+=a*=a/=a-5的值,設(shè)a的值為8, 運(yùn)行結(jié)果如圖2-14所示。圖2-13 輸出矩形2.5 情景應(yīng)用案例拓展2.6.3案例2-3:十進(jìn)制與二進(jìn)制數(shù)的轉(zhuǎn)換【問(wèn)題描述】二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)很容易,只要把每個(gè)1轉(zhuǎn)換成十進(jìn)制數(shù),然后相加即可。例如,(010111)2 = 0X25+1X24+0X23+1

46、X22+1X21+1X20 = 0 + 16 + 0 + 4 + 2 + 1 = 23下面主要討論:十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。學(xué)習(xí)目標(biāo)案例目標(biāo) 了解C語(yǔ)言的基本語(yǔ)句 掌握格式化輸入和輸出函數(shù)。 理解順序結(jié)構(gòu)的程序設(shè)計(jì)方法學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)了解C語(yǔ)言的三種基本結(jié)構(gòu)了解C語(yǔ)言的基本語(yǔ)句掌握格式化輸入/輸出函數(shù)掌握字符輸入/輸出函數(shù)案例3 算術(shù)計(jì)算器【問(wèn)題描述】在日常生活中,人們經(jīng)常用到計(jì)算器。Windows操作系統(tǒng)提供了一個(gè)圖形界面的計(jì)算器供用戶使用。本案例將用C語(yǔ)言開發(fā)一個(gè)簡(jiǎn)單的字符界面的算術(shù)計(jì)算器,當(dāng)用戶輸入兩個(gè)數(shù)以后,可以計(jì)算這兩個(gè)數(shù)的和、差、積、商。程序運(yùn)行效果如圖3-1所示。圖3-1 算術(shù)計(jì)

47、算器案例3 算術(shù)計(jì)算器【問(wèn)題分析】根據(jù)問(wèn)題描述,程序必須讀入兩個(gè)待計(jì)算的數(shù)據(jù),然后計(jì)算并輸出4個(gè)結(jié)果,所以需要6個(gè)變量來(lái)存儲(chǔ)這些數(shù)值。為保證程序能夠處理帶小數(shù)點(diǎn)的數(shù)值,并提供足夠的精度,變量的數(shù)據(jù)類型選用float類型。即:float x,y; /2個(gè)用來(lái)存儲(chǔ)運(yùn)算數(shù)的變量float sum,sub,mult,div; /4個(gè)用來(lái)存儲(chǔ)計(jì)算結(jié)果的變量:和、差、積、商程序使用scanf()、printf()來(lái)完成數(shù)據(jù)的輸入和輸出。案例3 算術(shù)計(jì)算器【算法設(shè)計(jì)】(1) 提示用戶輸入兩個(gè)待計(jì)算的兩個(gè)數(shù)(2) 通過(guò)輸入語(yǔ)句得到待計(jì)算的數(shù)據(jù)(3) 分別計(jì)算兩數(shù)的和、差、積和商(4) 輸出運(yùn)算結(jié)果:和、差、積

48、、商3.1 結(jié)構(gòu)化程序設(shè)計(jì)的基本概念3.1.1 三種基本結(jié)構(gòu)C語(yǔ)言是結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,結(jié)構(gòu)化程序設(shè)計(jì)的思想是,用順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)等三種基本結(jié)構(gòu)來(lái)構(gòu)造程序;限制使用無(wú)條件轉(zhuǎn)移語(yǔ)句(goto語(yǔ)句)。結(jié)構(gòu)化程序設(shè)計(jì)可采用結(jié)構(gòu)化流程圖。圖3-2 三種基本控制結(jié)構(gòu)3.1 結(jié)構(gòu)化程序設(shè)計(jì)的基本概念3.1.2 C語(yǔ)句的基本語(yǔ)句1. 函數(shù)調(diào)用語(yǔ)句由一個(gè)函數(shù)調(diào)用加一個(gè)分號(hào)“;”構(gòu)成的語(yǔ)句,其一般形式為: 函數(shù)名(實(shí)際參數(shù)表);例如:printf(this is a book); /調(diào)用庫(kù)函數(shù)輸出字符串“this is a book”3.1 結(jié)構(gòu)化程序設(shè)計(jì)的基本概念3.1.2 C語(yǔ)句的基本語(yǔ)句2表達(dá)

49、式語(yǔ)句由表達(dá)式加一個(gè)分號(hào)“;”就構(gòu)成了一個(gè)表達(dá)式語(yǔ)句。例如:sum = a + b; /賦值語(yǔ)句i+; /自加運(yùn)算表達(dá)式語(yǔ)句x=1,y=2; /逗號(hào)表達(dá)式語(yǔ)句3.1 結(jié)構(gòu)化程序設(shè)計(jì)的基本概念3.1.2 C語(yǔ)句的基本語(yǔ)句3控制語(yǔ)句控制語(yǔ)句用于控制程序流程,以實(shí)現(xiàn)程序的各種結(jié)構(gòu)方式,共九種,即if語(yǔ)句 (條件語(yǔ)句)switch語(yǔ)句 (多分支選擇語(yǔ)句)while語(yǔ)句 (循環(huán)語(yǔ)句)do-while語(yǔ)句 (循環(huán)語(yǔ)句)for語(yǔ)句 (循環(huán)語(yǔ)句)break語(yǔ)句 (終止執(zhí)行循環(huán)語(yǔ)句或switch 語(yǔ)句)continue語(yǔ)句 (結(jié)束本次循環(huán)語(yǔ)句)goto語(yǔ)句 (轉(zhuǎn)向語(yǔ)句)return語(yǔ)句 (從函數(shù)返回語(yǔ)句)3.1

50、 結(jié)構(gòu)化程序設(shè)計(jì)的基本概念3.1.2 C語(yǔ)句的基本語(yǔ)句4復(fù)合語(yǔ)句由“”和“”把一些變量說(shuō)明和語(yǔ)句組合在一起,稱之為復(fù)合語(yǔ)句,又稱語(yǔ)句塊(Block)。例如: int a = 0,b = 1,sum; sum = a + b; printf(%d,sum);5空語(yǔ)句只有一個(gè)分號(hào)“;”組成的語(yǔ)句??照Z(yǔ)句表示什么也不做,必要時(shí)再補(bǔ)充完善。3.2 順序結(jié)構(gòu)的基本語(yǔ)句3.2.1 賦值語(yǔ)句賦值語(yǔ)句是由賦值表達(dá)式再加上一個(gè)分號(hào)“;”構(gòu)成的表達(dá)式語(yǔ)句,其一般形式為: 變量 = 表達(dá)式;例如:y = 4; /將整數(shù)4賦給變量y x = y * 5 + 2; /將表達(dá)式y(tǒng) * 5 + 2的值賦給變量x 3.2 順

51、序結(jié)構(gòu)的基本語(yǔ)句3.2.2 格式輸出函數(shù)printf()C語(yǔ)言沒(méi)有提供輸入和輸出語(yǔ)句,數(shù)據(jù)的輸入和輸出是通過(guò)函數(shù)調(diào)用來(lái)實(shí)現(xiàn)的。在C語(yǔ)言的標(biāo)準(zhǔn)函數(shù)庫(kù)中,提供了一些用于輸入和輸出的函數(shù),如printf()函數(shù)和scanf()函數(shù)等。1printf()函數(shù)的一般形式格式:printf(格式控制,輸出列表);功能:按指定的格式,把指定的任意類型的數(shù)據(jù)顯示在屏幕上。3.2 順序結(jié)構(gòu)的基本語(yǔ)句3.2.2 格式輸出函數(shù)printf()2. 格式說(shuō)明符格式說(shuō)明符,用%開頭后跟有一個(gè)字母,它規(guī)定了輸出形式。如上面的%d,它規(guī)定了輸出項(xiàng)a以整數(shù)形式輸出,而%c,規(guī)定了輸出項(xiàng)ch以字符形式輸出。(1) 輸出整型、長(zhǎng)

52、整型、無(wú)符號(hào)整型數(shù)據(jù)格式控制符%md中的m是一正整數(shù),為指定的輸出字段的寬度,負(fù)號(hào)表示左對(duì)齊,缺省為右對(duì)齊;%ld中的l表示輸出數(shù)據(jù)為長(zhǎng)整型數(shù)據(jù)。(2) 輸出字符和字符串格式控制符%m.ns中的m、n是正整數(shù),m為指定的輸出字段的寬度,n是從字符串中截取字符的個(gè)數(shù),負(fù)號(hào)表示左對(duì)齊,缺省為右對(duì)齊。3.2 順序結(jié)構(gòu)的基本語(yǔ)句3.2.2 格式輸出函數(shù)printf()2. 格式說(shuō)明符(3) 輸出實(shí)型數(shù)據(jù)格式控制符%m.nf中的m、n是正整數(shù),m為指定的輸出字段的寬度,n是小數(shù)的位數(shù),負(fù)號(hào)表示左對(duì)齊,缺省為右對(duì)齊。(4) 轉(zhuǎn)義字符的輸出轉(zhuǎn)義字符就是以“”開頭的字符序列。例如,語(yǔ)句printf(n hel

53、lo world);中的n就是轉(zhuǎn)義字符,其作用是在輸出時(shí)產(chǎn)生一個(gè)“換行”操作?!皀”換行符還可以插入到所需要的地方,來(lái)控制屏幕輸出格式。3.2 順序結(jié)構(gòu)的基本語(yǔ)句3.2.3 格式輸入函數(shù)scanf()1. scanf()函數(shù)的一般形式格式:scanf(格式控制,變量地址列表);功能:從指定的輸入設(shè)備(默認(rèn)為鍵盤),按指定的格式讀入數(shù)據(jù),并將讀入的數(shù)據(jù)賦給變量地址列表中的相應(yīng)變量。說(shuō)明(1)“格式控制”的含義同printf()函數(shù);(2)“變量地址列表”是以逗號(hào)相隔的變量,且必須帶地址符&,不能是常量,也不能是表達(dá)式。3.2 順序結(jié)構(gòu)的基本語(yǔ)句3.2.3 格式輸入函數(shù)scanf()2格式說(shuō)明符s

54、canf()函數(shù)中的格式說(shuō)明符的使用與printf()函數(shù)類似,必須用%開頭后面跟一個(gè)字母(也可以在其中間增加附加字符),它規(guī)定了輸入項(xiàng)對(duì)應(yīng)的輸入數(shù)據(jù)格式。同樣格式說(shuō)明符要在個(gè)數(shù)和類型上與輸入項(xiàng)相匹配。3.2 順序結(jié)構(gòu)的基本語(yǔ)句3.2.4 字符輸出函數(shù)putchar()格式:putchar(ch);功能:通過(guò)標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出一個(gè)字符。說(shuō)明(1) ch可以是字符常量、字符變量或整型變量,當(dāng)ch是字符型數(shù)據(jù)時(shí),輸出的是字符本身;當(dāng)ch是整型數(shù)據(jù)時(shí),輸出的是整型數(shù)據(jù)的ASCII碼對(duì)應(yīng)的字符。(2) ch也可以是轉(zhuǎn)義字符,以控制一個(gè)動(dòng)作。例如:putchar(B); /輸出字符Bputcha

55、r(65); /輸出ASCII碼值65對(duì)應(yīng)的字符,即字符Aputchar(n); /換行3.2 順序結(jié)構(gòu)的基本語(yǔ)句3.2.5 字符輸入函數(shù)getchar() 格式:getchar();功能:從鍵盤上接收輸入的一個(gè)字符。返回一個(gè)整數(shù),即輸入字符的ASCII碼值。3.3 情景應(yīng)用案例拓展3.3.1案例3-1:字符的魔法變幻 【問(wèn)題描述】 小寫字符剎間變成大寫字符,你信嗎? 在C語(yǔ)言中是區(qū)分大小寫的,利用ASCII碼中大寫字符和小寫字符之間的差值是32的特性,可實(shí)現(xiàn)大小寫字符間的互相轉(zhuǎn)換。3.3 情景應(yīng)用案例拓展3.3.2案例3-2:求各位數(shù)字 【問(wèn)題描述】任意輸入一個(gè)3位整數(shù),求它的個(gè)位、十位和百

56、位數(shù)字,并反向輸出這個(gè)3位數(shù)。3.3.4案例3-3:紙幣兌換 【問(wèn)題描述】發(fā)工資2368元,用票面100元、50元、20元、10元、5元和1元的紙幣,問(wèn)最少多少?gòu)垼繉W(xué)習(xí)目標(biāo)案例目標(biāo) 熟悉條件表達(dá)式的構(gòu)成和運(yùn)算規(guī)則 掌握邏輯推理與判斷問(wèn)題的數(shù)值化求解方法 熟悉使用if語(yǔ)句進(jìn)行選擇結(jié)構(gòu)程序設(shè)計(jì)學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo) 掌握關(guān)系運(yùn)算和邏輯運(yùn)算的運(yùn)算規(guī)則 掌握if語(yǔ)句的3種基本形式,及if語(yǔ)句的嵌套方法 掌握switch語(yǔ)句的使用方法 能夠使用if語(yǔ)句和switch語(yǔ)句,進(jìn)行選擇結(jié)構(gòu)程序設(shè)計(jì)案例4 誰(shuí)是盜賊【問(wèn)題描述】公安人員審問(wèn)四名盜賊嫌疑犯。已知,這四名人當(dāng)中僅有一名是盜賊,還知道這四個(gè)人中每人要么是誠(chéng)實(shí)

57、的,要么是說(shuō)謊的。在回答公安人員的問(wèn)題中:甲說(shuō):“乙沒(méi)有偷,是丁偷的?!币艺f(shuō):“我沒(méi)有偷,是丙偷的。”丙說(shuō):“甲沒(méi)有偷,是乙偷的?!倍≌f(shuō):“我沒(méi)有偷?!备鶕?jù)這四人的答話,小明想了想,用筆在紙上畫了畫,5分鐘后作出答案:是乙偷的。請(qǐng)問(wèn):小明是怎么知道的,他的判斷正確嗎?案例4 誰(shuí)是盜賊【問(wèn)題分析】假設(shè)用變量A、B、C、D分別代表四個(gè)人,變量的值為1代表該人是盜賊,為0就不是盜賊。由題目已知:四人中僅一人是盜賊,且這四人中每個(gè)人要么說(shuō)真話,要么說(shuō)假話,而由于甲、乙、丙三人都說(shuō)了兩句話:“X沒(méi)有偷,Y偷了”,故不論該人是否說(shuō)謊,他提到的兩人之中必有一人是小偷。故在列條件表達(dá)式時(shí),可以不關(guān)心誰(shuí)說(shuō)謊,誰(shuí)

58、說(shuō)實(shí)話。這樣,可列出下列條件表達(dá)式:甲說(shuō):“乙沒(méi)有偷,是丁偷的。” B+D=1乙說(shuō):“我沒(méi)有偷,是丙偷的?!?B+C=1丙說(shuō):“甲沒(méi)有偷,是乙偷的。” A+B=1丁說(shuō):“我沒(méi)有偷。” A+B+C+D=1案例4 誰(shuí)是盜賊【算法設(shè)計(jì)】(1) 定義四個(gè)變量A、B、C、D分別代表四個(gè)人,變量的值為1代表是竊賊;(2) 根據(jù)對(duì)話,列出判斷條件表達(dá)式:b+d = 1 & b+c=1 & a+b=1 & a+b+c+d=1 (*)(3) 從小明的答案:b=1;a=c=d=0 表達(dá)式(*)的值是否為真?如果表達(dá)式(*)的值為真,則判斷正確,否則小明的判斷錯(cuò)誤。案例4 誰(shuí)是盜賊【算法設(shè)計(jì)】參考代碼如下:#inc

59、lude void main() int a,b,c,d; b = 1;/*盜賊者是乙*/ a = c = d = 0;/*盜賊者不是甲、丙、丁*/ if(b+d=1 & b+c=1 & a+b=1 & a+b+c+d=1) printf(小明的判斷正確,盜竊者是乙n); else printf(小明的判斷錯(cuò)誤,盜竊者不是乙n);案例4 誰(shuí)是盜賊【知識(shí)準(zhǔn)備】誰(shuí)是盜賊的算法要點(diǎn):首先把問(wèn)題進(jìn)行數(shù)值化處理,根據(jù)對(duì)話列出條件表達(dá)式,最后用C語(yǔ)言選擇結(jié)構(gòu),計(jì)算表達(dá)式的值, 驗(yàn)證小明給出的判斷。本案例涉及到C語(yǔ)言的條件表達(dá)式,以及選擇結(jié)構(gòu)。日常生活中,經(jīng)常需要判斷某一個(gè)“條件”是否成立,并根據(jù)條件作出選

60、擇。要完成上面的任務(wù),必須熟悉條件表達(dá)式的構(gòu)成和運(yùn)算規(guī)則,掌握邏輯推理與判斷問(wèn)題的數(shù)值化處理方法,熟悉使用if語(yǔ)句進(jìn)行選擇結(jié)構(gòu)程序設(shè)計(jì)。4.1 條件判斷表達(dá)式4.1.1關(guān)系表達(dá)式1關(guān)系運(yùn)算符關(guān)系運(yùn)算是指對(duì)兩個(gè)運(yùn)算量之間大小的比較,關(guān)系運(yùn)算的結(jié)果為邏輯值或稱“布爾”(boolean)值,其值只有兩種可能“真”或“假”。C語(yǔ)言中提供6種關(guān)系運(yùn)算符,如表4-1所示。表4-1 關(guān)系運(yùn)算符4.1 條件判斷表達(dá)式4.1.1關(guān)系表達(dá)式2關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子稱為關(guān)系表達(dá)式。其一般形式為:例如,下面的關(guān)系表達(dá)式都是合法的。a+b5,a b+2, a != b+14.1 條件判斷表達(dá)式

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論