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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

8、C+ 6.0開發(fā)環(huán)境3. 創(chuàng)建、編輯源程序文件圖1-7 “新建”對話框中的“文件”選項卡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運行程序圖1-10 運行程序的輸出窗口1.3 C程序的開發(fā)1.3.3 工程設(shè)置圖1-11 程序設(shè)置1.3 C程序的開發(fā)1.3.3 工程設(shè)置圖1-12 組建時排除文件的“工程設(shè)置”1.4 程序設(shè)計基礎(chǔ)1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

44、.1案例2-1:利用星號字符“*”輸出矩形【問題描述】本例使用星號字符“*”輸出矩形,這里讓每條邊都輸出4個“*”號,使其相等,運行程序,結(jié)果如圖2-13所示。圖2-13 輸出矩形2.5 情景應(yīng)用案例拓展2.6.1案例2-1:利用星號字符“*”輸出矩形【算法設(shè)計】使用字符變量,將字符“*”賦給這個變量,然后利用空格的轉(zhuǎn)義字符“40”在第2、3行中間輸出一個空格。參考代碼如下:#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:計算a+=a*=a/=a-5【問題描述】運用復(fù)合運算符,計算表達式a+=a*=a/=a-5的值,設(shè)a的值為8, 運行結(jié)果如圖2-14所示。圖2-13 輸出矩形2.5 情景應(yīng)用案例拓展2.6.3案例2-3:十進制與二進制數(shù)的轉(zhuǎn)換【問題描述】二進制數(shù)轉(zhuǎn)換為十進制數(shù)很容易,只要把每個1轉(zhuǎn)換成十進制數(shù),然后相加即可。例如,(010111)2 = 0X25+1X24+0X23+1

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

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

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

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

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

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

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

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

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

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

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

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

58、說實話。這樣,可列出下列條件表達式:甲說:“乙沒有偷,是丁偷的?!?B+D=1乙說:“我沒有偷,是丙偷的?!?B+C=1丙說:“甲沒有偷,是乙偷的?!?A+B=1丁說:“我沒有偷?!?A+B+C+D=1案例4 誰是盜賊【算法設(shè)計】(1) 定義四個變量A、B、C、D分別代表四個人,變量的值為1代表是竊賊;(2) 根據(jù)對話,列出判斷條件表達式:b+d = 1 & b+c=1 & a+b=1 & a+b+c+d=1 (*)(3) 從小明的答案:b=1;a=c=d=0 表達式(*)的值是否為真?如果表達式(*)的值為真,則判斷正確,否則小明的判斷錯誤。案例4 誰是盜賊【算法設(shè)計】參考代碼如下:#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(小明的判斷錯誤,盜竊者不是乙n);案例4 誰是盜賊【知識準備】誰是盜賊的算法要點:首先把問題進行數(shù)值化處理,根據(jù)對話列出條件表達式,最后用C語言選擇結(jié)構(gòu),計算表達式的值, 驗證小明給出的判斷。本案例涉及到C語言的條件表達式,以及選擇結(jié)構(gòu)。日常生活中,經(jīng)常需要判斷某一個“條件”是否成立,并根據(jù)條件作出選

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論