全媒體環(huán)境下學(xué)習(xí)C語言程序設(shè)計(jì)_第1頁
全媒體環(huán)境下學(xué)習(xí)C語言程序設(shè)計(jì)_第2頁
全媒體環(huán)境下學(xué)習(xí)C語言程序設(shè)計(jì)_第3頁
全媒體環(huán)境下學(xué)習(xí)C語言程序設(shè)計(jì)_第4頁
全媒體環(huán)境下學(xué)習(xí)C語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩648頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第1章 C語言程序設(shè)計(jì)基礎(chǔ)知識(shí)目標(biāo) 了解C語言的產(chǎn)生、發(fā)展和特點(diǎn)熟悉C語言程序的結(jié)構(gòu)和上機(jī)步驟了解程序的算法了解C程序的結(jié)構(gòu),能進(jìn)行簡單C程序的編寫。學(xué)會(huì)繪制流程圖。能用算法思想分析程序設(shè)計(jì)問題。能力目標(biāo) C語言的產(chǎn)生與發(fā)展 C語言的特點(diǎn) C語言程序的結(jié)構(gòu) C語言程序的上機(jī)步驟 程序算法基礎(chǔ)第一節(jié) C語言的產(chǎn)生與發(fā)展C語言是一門通用的、模塊化、程序化的編程語言,被廣泛應(yīng)用于操作系統(tǒng)和應(yīng)用軟件的開發(fā)。C語言是1972年由美國的Dennis Ritchi和Brain Kernighan等人設(shè)計(jì)發(fā)明的,并首次在UNIX操作系統(tǒng)的 DEC PDP-11 計(jì)算機(jī)上使用。C語言是一種用途廣泛、功能強(qiáng)大、使

2、用靈活的過程性編程語言,既可用于編寫應(yīng)用程序,又能用于編寫系統(tǒng)軟件。第二節(jié) C語言的特點(diǎn)語言簡潔,使用方便靈活可移植性好表達(dá)能力強(qiáng)表達(dá)方式靈活可進(jìn)行結(jié)構(gòu)化程序設(shè)計(jì)可以直接操作計(jì)算機(jī)硬件生成的目標(biāo)代碼質(zhì)量高第三節(jié) C語言程序的結(jié)構(gòu) 用C語言編寫的源程序,簡稱C程序。C程序是一種函數(shù)結(jié)構(gòu),一般由一個(gè)或若干個(gè)函數(shù)組成,其中必有一個(gè)名為main的函數(shù),稱為主函數(shù),所有的C程序都是從main函數(shù)開始執(zhí)行,并且在main結(jié)束。題目描述例1.1 要求在屏幕上輸出以下一行信息。Hello,world!程序代碼 /* 這是我們的第一個(gè)C語言程序 它的功能是輸出一個(gè)字符串“ Hello,world!” */ #i

3、nclude / 編譯預(yù)處理指令 int main() / 定義主函數(shù) / 函數(shù)開始標(biāo)記printf(“Hello,world!n”); / 輸出指定的一行信息return 0; / 函數(shù)執(zhí)行完畢時(shí)返回函數(shù)值0 / 函數(shù)結(jié)束標(biāo)記運(yùn)行結(jié)果Hello,world!程序注解:本程序的功能是在屏幕上顯示一行字符串“Hello,world!”。#include是編譯預(yù)處理命令,放在源程序的最前面,用于引入系統(tǒng)庫函數(shù)。main是函數(shù)的名字,表示“主函數(shù)”,這是C程序執(zhí)行的入口,main前面的int表示此函數(shù)的類型是int類型(整型)。在執(zhí)行主函數(shù)后會(huì)得到一個(gè)函數(shù)值,其值為整型。大括號(hào)對(duì)“ ”和“ ”是函數(shù)

4、體的界定符,在大括號(hào)里面的內(nèi)容稱為函數(shù)體,每個(gè)函數(shù)的函數(shù)體都必須用大括號(hào)括起來。printf(“Hello,world!n”);是一個(gè)輸出語句,用于將雙引號(hào)中的內(nèi)容輸出。printf()為C語言的標(biāo)準(zhǔn)輸出函數(shù)?!眓“是C語言的一個(gè)轉(zhuǎn)義字符,功能是輸出一個(gè)換行。每個(gè)語句后面都有一個(gè)分號(hào)“;”,這是C語言語句結(jié)束的標(biāo)記。return 0;的作用是當(dāng)main函數(shù)執(zhí)行結(jié)束前將整數(shù)0作為函數(shù)值,返回到調(diào)用函數(shù)處。程序開始用/*和*/包圍的部分以及每行后面用“/”開始的內(nèi)容是注釋語句,用于對(duì)程序代碼進(jìn)行必要的說明,便于其他人閱讀程序,在程序編譯運(yùn)行時(shí),這些內(nèi)容是不起作用的。練習(xí)1.1 在屏幕上輸出以下信息

5、。*This is my first C program.*一個(gè)好的、有使用價(jià)值的C程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性。C語言允許有兩種注釋方式:以/開始的單行注釋。此種注釋的范圍從/開始,以換行符結(jié)束。單行注釋不能跨行,如果注釋內(nèi)容一行內(nèi)寫不下,可以用多個(gè)單行注釋。單行注釋可以單獨(dú)占一行,也可以出現(xiàn)在一行中其他內(nèi)容的右側(cè)。以/*開始,以*/結(jié)束的塊式注釋。這種注釋可以包含多行內(nèi)容。它可以單獨(dú)占一行,也可以包含多行。編譯系統(tǒng)在發(fā)現(xiàn)一個(gè)/*后,會(huì)開始找注釋結(jié)束符*/,把二者間的內(nèi)容作為注釋。題目描述例1.2 求兩個(gè)整數(shù)之和。程序代碼#include / 編譯預(yù)處理指令int main(

6、) / 定義主函數(shù) / 函數(shù)開始 int num1,num2,sum; / 定義三個(gè)整型變量 num1=12; / 給整型變量num1賦值 num2=34; / 給整型變量num2賦值 sum=num1+num2; / 將兩個(gè)整型變量num1和num2的和賦值給sum printf(“sum is %d.n”,sum); / 輸出結(jié)果return 0; / 使函數(shù)返回值為0 / 函數(shù)結(jié)束運(yùn)行結(jié)果sum is 46.程序注解本程序的作用是求兩個(gè)整數(shù)的和,并將結(jié)果輸出。int num1,num2,sum;是變量聲明語句,定義num1、num2和sum為整型(int)變量。C程序的變量在使用前必須先

7、進(jìn)行聲明。num1=12;是一個(gè)賦值語句,用于將常量12賦值給變量num1??梢詫⒊A抠x值給變量,也可以將變量賦值給變量,如sum=num1+num2;就是將變量num1和num2的和值賦值給變量sum。printf(“sum is %d.n”,sum);用于格式化輸出變量sum的值,下一章將詳細(xì)介紹printf輸出語句的格式。其中%d稱為格式控制符,此處表示用“十進(jìn)制整數(shù)”形式輸出變量sum的值。C程序的書寫格式自由,一行內(nèi)可以寫一條或多條語句,一條語句也可以寫在多個(gè)行上。但每條語句必須以一個(gè)分號(hào)結(jié)尾。練習(xí)1.2 編寫一個(gè)C語言程序,求兩個(gè)整數(shù)的乘積。通過例1.1、例1.2兩個(gè)案例,可以歸納

8、出C程序的一般形式如下:預(yù)處理指令序列int main() 變量定義語句序列 執(zhí)行語句序列其中:預(yù)處理指令序列:用于書寫編譯預(yù)處理指令,放在源程序的最前面,不加分號(hào)。變量定義語句序列:用于聲明程序中用到的各種變量,C程序的變量遵循“先聲明,后使用”的原則。執(zhí)行語句序列:程序的執(zhí)行部分,由若干語句組成,完成對(duì)數(shù)據(jù)的運(yùn)算等各種功能。在C程序中,預(yù)處理指令、變量定義語句、執(zhí)行語句這3部分內(nèi)容的先后順序不可調(diào)換,程序在執(zhí)行時(shí)也按照這個(gè)順序依次執(zhí)行。第四節(jié) C語言程序的上機(jī)步驟一個(gè)C語言源程序編寫好后到最終編譯和運(yùn)行程序,一般要經(jīng)過以下4個(gè)步驟。1. 編輯源程序。2. 編譯源程序,生成目標(biāo)程序。3. 對(duì)

9、目標(biāo)程序進(jìn)行連接處理。4. 運(yùn)行可執(zhí)行程序,得到運(yùn)行結(jié)果。不正確有源程序fun.c目標(biāo)程序fun.obj庫函數(shù)和其他目標(biāo)程序可執(zhí)行目標(biāo)程序fun.exe無正確編輯編譯有錯(cuò)?連接執(zhí)行結(jié)果 正確?開始結(jié)束C程序執(zhí)行流程圖編譯環(huán)境的準(zhǔn)備 為了編譯、連接和運(yùn)行C程序,必須要有相應(yīng)的編譯系統(tǒng)。常用的源程序編譯開發(fā)工具包括:Turbo C、Visual C+、C-Free等。 C-Free 5.0編譯環(huán)境的使用C-Free是一款C/C+集成開發(fā)環(huán)境(IDE)。目前有兩個(gè)版本,收費(fèi)的C-Free 5.0 專業(yè)版和免費(fèi)的C-Free 4.0 標(biāo)準(zhǔn)版。C-Free中集成了C/C+代碼解析器,能夠?qū)崟r(shí)解析代碼,并

10、且在編寫的過程中給出智能的提示。啟動(dòng)C-Free 5.0系統(tǒng)在windows操作系統(tǒng)的開始菜單中找到C-Free 5.0圖標(biāo),單擊啟動(dòng),進(jìn)入集成開發(fā)環(huán)境。2. 編輯源程序選擇菜單中的“文件|新建”命令(或者按快捷鍵Ctrl+N),或者在圖1-2中的默認(rèn)啟動(dòng)對(duì)話框中單擊“新建空白文件”按鈕,則系統(tǒng)將自動(dòng)創(chuàng)建一個(gè)默認(rèn)名字為“未命名1.cpp”的文件,擴(kuò)展名“.cpp”是C+文件的擴(kuò)展名,因?yàn)镃-Free是一款C/C+集成開發(fā)環(huán)境(IDE),可以通過“文件|保存”命令(或按快捷鍵Ctrl+S),在右圖的保存對(duì)話框中,將文件保存類型選擇為“C語言文件(*.c)”,從而保存為擴(kuò)展名為“.c”的C程序文件

11、。3. 編譯并連接在人工檢查沒有語法等錯(cuò)誤之后,就可以進(jìn)行編譯和連接操作。單擊“構(gòu)建|運(yùn)行”命令(或按快捷鍵F5),也可以在工具欄中直接單擊 按鈕,進(jìn)行編譯、連接并生成可執(zhí)行文件。C-Free 5.0系統(tǒng)下方會(huì)顯示編譯、連接的過程,最后生成可執(zhí)行文件,如圖所示。4. 運(yùn)行可執(zhí)行程序如果程序不存在語法等錯(cuò)誤,最終將顯示如圖所示的運(yùn)行結(jié)果。顯示出來的運(yùn)行結(jié)果中第1行是程序輸出的信息,第2行是系統(tǒng)自動(dòng)添加的提示信息。第五節(jié) 程序算法基礎(chǔ)什么是算法 算法是一個(gè)計(jì)算的具體步驟,常用于計(jì)算、數(shù)據(jù)處理和自動(dòng)推理。廣義的講,為解決一個(gè)問題而采取的方法和步驟,就稱為“算法”。算法是解決“做什么”和“怎么做”的問

12、題。 為了有效的進(jìn)行解題,在編寫C程序時(shí),不僅需要保證算法正確,還要考慮算法的質(zhì)量,選擇合適的算法。算法的特性一個(gè)算法應(yīng)該具有以下5個(gè)重要的特征:有窮性算法的有窮性是指算法必須能在執(zhí)行有限個(gè)步驟之后終止。確定性算法的每一步驟必須有確切的定義。有效性算法中執(zhí)行的任何計(jì)算步驟都是可以被分解為基本的可執(zhí)行的操作步,即每個(gè)計(jì)算步都可以在有限時(shí)間內(nèi)完成。輸入項(xiàng)一個(gè)算法有0個(gè)或多個(gè)輸入,以刻畫運(yùn)算對(duì)象的初始情況,所謂0個(gè)輸入是指算法本身定出了初始條件。輸出項(xiàng)一個(gè)算法有一個(gè)或多個(gè)輸出,以反映對(duì)輸入數(shù)據(jù)加工后的結(jié)果。沒有輸出的算法是毫無意義的。怎樣表示算法 可以有不同的方法來表示一個(gè)算法,常用的方法有:自然語

13、言、傳統(tǒng)流程圖、結(jié)構(gòu)化流程圖、偽代碼和計(jì)算機(jī)語言等。程序設(shè)計(jì)的步驟(1)程序設(shè)計(jì)就是針對(duì)給定問題進(jìn)行設(shè)計(jì)、編寫和調(diào)試計(jì)算機(jī)程序的過程。程序設(shè)計(jì)的一般步驟如下:(1)問題分析。根據(jù)給定的任務(wù)對(duì)其進(jìn)行認(rèn)真分析,研究任務(wù)所給定的各個(gè)條件,分析最后應(yīng)達(dá)到的目標(biāo),找出解決問題的規(guī)律,選擇解題的方法。在分析的基礎(chǔ)上,將實(shí)際問題抽象化,建立相應(yīng)的數(shù)學(xué)模型。(2) 設(shè)計(jì)算法。根據(jù)建立的數(shù)學(xué)模型,設(shè)計(jì)出解題的方法和具體步驟。解題步驟一般可以用流程圖來表示。(3)編寫程序。根據(jù)得到的算法,將算法選擇合適的高級(jí)語言編寫出源程序。(4)調(diào)試運(yùn)行程序。對(duì)源程序進(jìn)行編輯、編譯和連接,得到可執(zhí)行程序。程序設(shè)計(jì)的步驟(2)(

14、5)運(yùn)行程序,分析結(jié)果。運(yùn)行可執(zhí)行程序,得到運(yùn)行結(jié)果。這里特別要注意,能得到運(yùn)行結(jié)果并不意味著程序正確,要對(duì)結(jié)果進(jìn)行分析,看它是否合理。而且不要只看到某一次結(jié)果是正確的,就認(rèn)為程序沒有問題,而要對(duì)程序進(jìn)行測(cè)試,就是設(shè)計(jì)多組測(cè)試數(shù)據(jù),檢查程序?qū)Σ煌瑪?shù)據(jù)的運(yùn)行情況,從而盡量發(fā)現(xiàn)程序中存在的漏洞,并修改程序,使之能適用于各種情況。(6)編寫程序文檔。程序是供別人使用的,正式提供給用戶使用的程序,必須向用戶提供程序說明書,即用戶文檔。內(nèi)容包括:程序名稱、程序功能、運(yùn)行環(huán)境、程序的裝入和啟動(dòng)、需要輸入的數(shù)據(jù),以及使用注意事項(xiàng)等。程序文檔是軟件的一個(gè)重要組成部分。結(jié)構(gòu)化程序設(shè)計(jì)方法 一個(gè)結(jié)構(gòu)化程序就是用計(jì)

15、算機(jī)語言表示的結(jié)構(gòu)化算法,用順序、選擇和循環(huán)3種基本結(jié)構(gòu)組成的程序必然是結(jié)構(gòu)化程序。順序、選擇和循環(huán)3種基本結(jié)構(gòu)有以下共同特點(diǎn):(1)只有一個(gè)入口。(2)只有一個(gè)出口。(3)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到。(4)結(jié)構(gòu)內(nèi)部不存在死循環(huán)(即無終止的循環(huán))。C語言是當(dāng)前學(xué)習(xí)人數(shù)最多的語言之一,因其具有許多顯著的優(yōu)點(diǎn)而得到大家的喜愛和使用。C語言代碼有其自己的結(jié)構(gòu),編寫C語言程序要遵循這一結(jié)構(gòu)。C程序代碼的編輯、編譯、連接、運(yùn)行等工作都可以借助集成化工具來完成。解決一個(gè)實(shí)際編程問題,要設(shè)計(jì)一個(gè)好的算法,可以用多種方式來描述算法,但是算法最終需要用計(jì)算機(jī)語言來實(shí)現(xiàn)。第2章 順序結(jié)構(gòu)程序設(shè)計(jì)知識(shí)目標(biāo) 熟

16、悉C語言的數(shù)據(jù)類型認(rèn)知標(biāo)識(shí)符、常量與變量熟悉數(shù)據(jù)輸入、輸出處理方法認(rèn)識(shí)各類運(yùn)算符與表達(dá)式了解順序結(jié)構(gòu)程序設(shè)計(jì)方法能夠正確使用數(shù)據(jù)類型進(jìn)行變量的定義掌握定義標(biāo)識(shí)符、變量和常量方法掌握輸入輸出函數(shù)的使用能夠熟練使用各種運(yùn)算符進(jìn)行操作能夠使用順序結(jié)構(gòu)進(jìn)行程序設(shè)計(jì)能力目標(biāo) 標(biāo)識(shí)符和關(guān)鍵字?jǐn)?shù)據(jù)類型及常量、變量數(shù)據(jù)的格式化輸出和輸入運(yùn)算符和表達(dá)式第一節(jié) 標(biāo)識(shí)符和關(guān)鍵字標(biāo)識(shí)符由字母、數(shù)字和下劃線“_”組成;一個(gè)標(biāo)識(shí)符可以以字母 (A-Z 或 a-z) 或下劃線“_”開始,后跟零個(gè)或多個(gè)字母、下劃線和數(shù)字(0-9);數(shù)字不能作為標(biāo)識(shí)符的開始字符。C語言標(biāo)識(shí)符內(nèi)不允許出現(xiàn)標(biāo)點(diǎn)字符,比如 、$ 和 %等符號(hào)。C語

17、言是區(qū)分大小寫的編程語言。標(biāo)識(shí)符關(guān)鍵字由系統(tǒng)預(yù)先定義的標(biāo)識(shí)符稱為“關(guān)鍵字”(又稱為保留字),它們都有特殊的含義,這些關(guān)鍵字不能作為用戶自定義的常量名、變量名或其他標(biāo)識(shí)符的名稱。C語言關(guān)鍵字有32個(gè)autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledoifwhilestatic表2-1 C語言的關(guān)鍵字第二節(jié) 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型在 C 語言

18、中,數(shù)據(jù)類型指的是用于聲明不同類型的變量或函數(shù)的一個(gè)廣泛的系統(tǒng)。變量的數(shù)據(jù)類型決定了變量在內(nèi)存中存儲(chǔ)所占用的空間。枚舉型(enum)C語言的數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型(void)整型字符型(char)實(shí)型整型(int)短整型(short)長整型(long)單精度型(float)雙精度型(double)數(shù)組類型結(jié)構(gòu)類型(struct)共用體型(union)C語言的數(shù)據(jù)類型1.整型類型存儲(chǔ)大小值范圍int2 或 4 字節(jié)-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647unsigned int2 或 4 字節(jié)0 到 65,535 或 0

19、到 4,294,967,295short2 字節(jié)-32,768 到 32,767unsigned short2 字節(jié)0 到 65,535long4 字節(jié)-2,147,483,648 到 2,147,483,647unsigned long4 字節(jié)0 到 4,294,967,295表2-2 整型的存儲(chǔ)大小和值范圍2.字符型類型存儲(chǔ)大小值范圍char1 字節(jié)-128 到 127 或 0 到 255unsigned char1 字節(jié)0 到 255signed char1 字節(jié)-128 到 127表2-3 字符型的存儲(chǔ)大小和值范圍3.實(shí)型表2-4 實(shí)型的存儲(chǔ)大小和值范圍類型存儲(chǔ)大小值范圍精度float

20、4 字節(jié)1.2E-38 到 3.4E+386 位小數(shù)double8 字節(jié)2.3E-308 到 1.7E+30815 位小數(shù)long double16 字節(jié)3.4E-4932 到 1.1E+493219 位小數(shù)常量常量是固定值,在程序執(zhí)行期間不會(huì)改變。常量可以是任何的基本數(shù)據(jù)類型,比如整數(shù)常量、浮點(diǎn)常量、字符常量等。常量就像是常規(guī)的變量,只不過常量的值在定義后不能進(jìn)行修改。1.整型常量整型常量可以是十進(jìn)制、八進(jìn)制或十六進(jìn)制的常量??梢酝ㄟ^前綴指定其類型:0 x 或 0X 表示十六進(jìn)制,0 表示八進(jìn)制,不帶前綴則默認(rèn)表示十進(jìn)制。2.實(shí)型常量實(shí)型常量由整數(shù)部分、小數(shù)點(diǎn)、小數(shù)部分和指數(shù)部分組成。可以使

21、用小數(shù)形式或者指數(shù)形式來表示實(shí)型常量。當(dāng)使用小數(shù)形式表示時(shí),必須包含整數(shù)部分、小數(shù)部分,或同時(shí)包含兩者。當(dāng)使用指數(shù)形式表示時(shí),必須包含小數(shù)點(diǎn)、指數(shù),或同時(shí)包含兩者。帶符號(hào)的指數(shù)是用 e 或 E 引入的。3.字符常量字符常量是括在單引號(hào)中,例如,x 可以存儲(chǔ)在char類型的簡單變量中。字符常量可以是一個(gè)普通的字符(例如 x)、一個(gè)轉(zhuǎn)義序列(例如 t),或一個(gè)通用的字符(例如 u02C0)。4.符號(hào)常量在C語言中,可以對(duì)常量進(jìn)行命名,即用一個(gè)自己定義的符號(hào)來表示一個(gè)常量值,叫做符號(hào)常量。 知識(shí)講解定義符號(hào)常量的一般形式:#define 符號(hào)常量名 符號(hào)常量值 案例分析題目描述:例2.1 圓面積的計(jì)

22、算公式為:area=*r2。已知一個(gè)圓的半徑r=3,求這個(gè)圓的面積area,其中值取3.14。程序代碼;#include#define PI 3.14 / 定義符號(hào)常量PI,代表常量值3.14void main( ) int r=3; float area; area=PI*r*r; / 使用符號(hào)常量值PI,用值3.14代入計(jì)算 printf(“該圓的面積為:%fn”,area); 運(yùn)行結(jié)果:該圓的面積為:28.260000程序注解:符號(hào)常量的定義在main()函數(shù)前完成。定義的符號(hào)常量PI,其代表常量值3.14。在程序代碼中,如果要用使用3.14這個(gè)值,可以用符號(hào)常量PI代替。%f是格式說明

23、符,表示此處輸出一個(gè)浮點(diǎn)數(shù)。符號(hào)常量的名字一般使用大寫字母表示。 編程練習(xí)練習(xí)2.1 已知圓的周長計(jì)算公式為:girth=2*r,某圓的半徑r為6,求其周長girth,值取3.1415。變量變量是指在程序執(zhí)行過程中,其值可以改變的量。變量用標(biāo)識(shí)符來表示,可以由字母、數(shù)字和下劃線三類字符組成。但必須以字母或下劃線開頭。大寫字母和小寫字母是不同的,因?yàn)镃語言是大小寫敏感的。C語言中每個(gè)變量都有特定的數(shù)據(jù)類型,不同的數(shù)據(jù)類型決定了變量存儲(chǔ)的大小和布局。變量必須先定義,后使用。 知識(shí)講解變量定義的一般格式如下:數(shù)據(jù)類型 變量名1,變量名2,變量名n; 案例分析題目描述:例2.2 現(xiàn)有某個(gè)同學(xué)的學(xué)籍信息

24、,包括整型變量學(xué)號(hào),年齡,字符型變量性別,實(shí)型變量身高,請(qǐng)輸出該同學(xué)的這些信息。程序代碼:#includevoid main( ) int num=20161001,age=19; char sex=F; float height=1.67; printf(“該同學(xué)的信息輸出如下:n”); printf(“num=%d,age=%dn”,num,age);printf(“sex=%cn”,sex);printf(“height=%fn”,height);運(yùn)行結(jié)果:該同學(xué)的信息輸出如下:num=20161001,age=19sex=Fheight=1.67程序注解:變量命名要注意變量的三要素:類

25、型,名字和當(dāng)前值。main函數(shù)是C語言程序的入口,程序運(yùn)行時(shí)從main函數(shù)的第一條語句開始執(zhí)行,直至其最后一行語句執(zhí)行完畢后結(jié)束程序。printf()是C語言中格式化的輸出函數(shù),將在后續(xù)詳細(xì)介紹。 編程練習(xí) 練習(xí)2.2 請(qǐng)根據(jù)例2.2案例形式,輸出自己的相關(guān)信息:學(xué)號(hào),年齡,性別,身高。 知識(shí)延伸標(biāo)準(zhǔn)C語言不限制變量的長度,但它受各種版本的C 語言編譯系統(tǒng)限制,同時(shí)也受到具體機(jī)器的限制。例如在某版本C語言中規(guī)定變量前八位有效,當(dāng)兩個(gè)變量前八位相同時(shí),則被認(rèn)為是同一個(gè)變量。在變量中,大小寫是有區(qū)別的。例如CLANG和Clang 是兩個(gè)不同的變量。變量雖然可由程序員隨意定義,但變量是用于標(biāo)識(shí)某個(gè)量

26、的符號(hào)。因此,命名應(yīng)盡量有相應(yīng)的意義,以便閱讀理解,做到“顧名思義”。第三節(jié) 數(shù)據(jù)的格式化輸出和輸入 C語言沒有提供輸入和輸出語句,數(shù)據(jù)的輸入和輸出是通過函數(shù)來實(shí)現(xiàn)的。在C語言的標(biāo)準(zhǔn)庫函數(shù)中,提供了一些用于輸出和輸入的函數(shù):printf()函數(shù),scanf()函數(shù),getchar()函數(shù),putchar()函數(shù)。格式化輸出函數(shù) 知識(shí)講解printf函數(shù)叫做格式輸出函數(shù),其功能是按照用戶指定的格式,把指定的數(shù)據(jù)輸出到屏幕上。printf函數(shù)的格式為:printf(“格式控制字符串”,輸出表項(xiàng));表2-6 C語言的格式字符及含義格式字符含義d , i以十進(jìn)制形式輸出有符號(hào)整數(shù)(正數(shù)不輸出符號(hào))o以

27、八進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴0)x以十六進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴0 x)u以十進(jìn)制形式輸出無符號(hào)整數(shù)f以小數(shù)形式輸出單、雙精度類型實(shí)數(shù)e以指數(shù)形式輸出單、雙精度實(shí)數(shù)c輸出單個(gè)字符s輸出字符串 案例分析題目描述例2.3 當(dāng)當(dāng)網(wǎng)上買書已經(jīng)成為大家買書的一個(gè)重要選擇,其頁面上每本書都有標(biāo)注作者、價(jià)格、出版社、出版時(shí)間、頁數(shù)等信息?,F(xiàn)有某本數(shù)據(jù)結(jié)構(gòu)書的信息為,作者:Baron Schwartz,價(jià)格85.80元,出版社:電子工業(yè)出版社,出版時(shí)間:2013年4月1日,頁數(shù):764。請(qǐng)編程輸出該書的信息。程序代碼:#includevoid main( ) int pages=764,ye

28、ar=2013,month=4,day=1; float price=85.80; printf(“數(shù)據(jù)結(jié)構(gòu)銷售信息:n”); printf(“作者:Baron Schwartz n”);printf(“價(jià)格:%.2fn”,price);printf(“出版社:電子工業(yè)出版社n”);printf(“出版時(shí)間:%d年%d月%d日n”, year,month,day);printf(“頁數(shù):%dn”,pages);運(yùn)行結(jié)果:數(shù)據(jù)結(jié)構(gòu)銷售信息:作者:Baron Schwartz價(jià)格:85.80出版社:電子工業(yè)出版社出版時(shí)間:2013年4月1日頁數(shù):764程序注解:printf函數(shù)可以直接輸出一個(gè)字符

29、串,如printf(“作者:Baron Schwartz n”);語句,其中n表示換行。語句printf(“價(jià)格:%.2fn”,price);輸出:價(jià)格:85.80。其中“價(jià)格:%.2fn”是格式控制部分,price是輸出列表。格式控制部分的%d表示以十進(jìn)制形式輸出變量price的值,輸出時(shí),%d的位置用變量price的值代進(jìn)去輸出。語句printf(“出版時(shí)間:%d年%d月%d日n”, year,month,day);將多個(gè)輸出項(xiàng)放在一條輸出語句中格式化輸出?!俺霭鏁r(shí)間:%d年%d月%d日n”是格式控制部分,包含多個(gè)格式控制符%d,這些格式控制符和后面的輸出列表變量一一對(duì)應(yīng),并且格式控制符的

30、數(shù)量和輸出列表變量數(shù)量必須相同。整型格式輸出控制符%d,字符型格式控制符%c,實(shí)型格式控制符%f是日常編程中最常用的幾種格式控制符,要熟練掌握。題目描述例2.4 字符型數(shù)據(jù)的特殊表示方法及各種輸出格式。程序代碼#includevoid main( ) char ch1=n; / 定義字符變量ch1 char ch2=x65,ch3=167; / 十六進(jìn)制和八進(jìn)制表示的字符 printf(“%c%c%cn”,ch1,ch2,ch3); /輸出三個(gè)字符變量值 printf(“%ct%ct%cn”,ch1,ch2,ch3); /每個(gè)輸出字符后跟一個(gè)制表符tprintf(“%d %d %dn”,ch1

31、,ch2,ch3); /以十進(jìn)制形式輸出字符的ASCII碼值運(yùn)行結(jié)果newnew110 101 119程序注解x65是一個(gè)十六進(jìn)制表示的字符,代表字符e,167是八進(jìn)制表示的字符,代表字符w。語句printf(“%ct%ct%cn”,ch1,ch2,ch3);中的t是一個(gè)轉(zhuǎn)義字符,表示制表符tab鍵,在輸出信息時(shí)起到分隔的作用。字符型數(shù)據(jù)可以用兩種格式輸出,一種是字符型(%c),另一種是整數(shù)格式(%d),整數(shù)格式輸出時(shí),輸出該字符對(duì)應(yīng)的ASCII碼值。 編程練習(xí) 練習(xí)2.3 已知圓柱體的底面半徑值r=10,高h(yuǎn)=3.5,利用公式計(jì)算圓柱體的體積和表面積。圓柱體的體積volume計(jì)算公式r2h,

32、圓柱體的表面積surface_area計(jì)算公式2r2+2rh,其中圓周率值取3.14。格式化輸入函數(shù) 知識(shí)講解scanf函數(shù)稱為格式輸入函數(shù),即按照格式字符串的格式,從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。scanf函數(shù)調(diào)用的一般形式為:scanf(“格式控制字符串”,輸入項(xiàng)地址列表); 案例分析題目描述 例2.5 小明同學(xué)期末考試結(jié)束后拿到了自己的成績單,請(qǐng)幫他計(jì)算一下他的總分和平均分。編一個(gè)程序輸入小明的語文、數(shù)學(xué)、物理、化學(xué)成績,計(jì)算總分和平均分并輸出。程序代碼#includevoid main( ) int chinese,math, chemistry,physics,sum; / 定義

33、整型的四門功課成績和總分變量 float average; / 定義實(shí)型的平均分變量printf(請(qǐng)依次輸入語文、數(shù)學(xué)、物理、化學(xué)成績:n);scanf(%d%d%d%d, &chinese,&math,&chemistry,&physics); /輸入四門功課成績 sum= chinese+math+ chemistry+physics; average=(float)sum/4; /對(duì)總分變量進(jìn)行強(qiáng)制類型轉(zhuǎn)換printf(sum=%dn,sum); /輸出四門功課總分printf(average=%.2fn,average); /輸出四門功課平均分運(yùn)行結(jié)果請(qǐng)依次輸入語文、數(shù)學(xué)、物理、化學(xué)成

34、績:80 92 85 96(回車)sum=353average=88.25程序注解scanf(%d%d%d%d, &chinese,&math,&chemistry,&physics);語句要求用戶從鍵盤輸入4個(gè)整型數(shù)據(jù),%d%d%d%d是格式控制部分,表示要輸入的是十進(jìn)制整型數(shù)據(jù),&chinese,&math,&chemistry,&physics是地址列表,表示輸入的4個(gè)整數(shù)依次存入這4個(gè)變量。注意,每個(gè)變量前必須加入地址運(yùn)算符“&”。從鍵盤上輸入數(shù)據(jù)時(shí),對(duì)于整型、實(shí)型變量可以用空格、Tab鍵或回車鍵作為多個(gè)輸入值的分隔符。average=(float)sum/4; 語句表示在計(jì)算平均值a

35、verage時(shí),先用強(qiáng)制轉(zhuǎn)換運(yùn)算符()對(duì)總分變量sum強(qiáng)制轉(zhuǎn)換成單精度浮點(diǎn)數(shù),即括號(hào)中指定的數(shù)據(jù)類型。思考一下,為什么要這樣做呢?強(qiáng)制類型轉(zhuǎn)換運(yùn)算符在本章后續(xù)會(huì)具體講解。 編程練習(xí) 練習(xí)2.4 在某歌唱比賽中,一共有5個(gè)評(píng)委進(jìn)行打分,打分按照百分制。編寫一個(gè)程序,從鍵盤上輸入某選手的5個(gè)得分,計(jì)算出評(píng)委給其打出的總分和平均分。 知識(shí)延伸scanf 函數(shù)中格式字符串的構(gòu)成與printf函數(shù)基本相同,但使用時(shí)有幾點(diǎn)不同。格式說明符中,可以指定數(shù)據(jù)的寬度,但不能指定數(shù)據(jù)的精度。例:floata;scanf(“%10f”,&a); /正確scanf(“%10.2f”,&a); /錯(cuò)誤輸入long類型數(shù)

36、據(jù)時(shí)必須使用格式控制符%ld,輸入double數(shù)據(jù)必須使用格式控制符%lf或%le。單個(gè)字符的輸入輸出 知識(shí)講解putchar()函數(shù)是字符輸出函數(shù),其功能是在終端(顯示器)輸出單個(gè)字符。其一般調(diào)用形式為:putchar(字符變量);getchar()函數(shù)的功能是接收用戶從鍵盤上輸入的一個(gè)字符。getchar()會(huì)以返回值的形式返回接收到的字符。其一般調(diào)用形式為:getchar(); 案例分析題目描述 例2.6 從鍵盤輸入兩個(gè)大寫字母,并將其轉(zhuǎn)換成小寫字母后輸出。程序代碼#includevoid main( ) char ch1,ch2; / 定義一個(gè)字符型變量chprintf(please

37、input two capitals:n);ch1=getchar(); /用getchar()函數(shù)從鍵盤接收一個(gè)字符并賦值給ch1 ch2= getchar(); /用getchar()函數(shù)從鍵盤接收一個(gè)字符并賦值給ch2ch1=ch1+32; /將大寫字母ch1轉(zhuǎn)換成小寫字母ch2=ch2+32; /將大寫字母ch1轉(zhuǎn)換成小寫字母 putchar(ch1); /用putchar()函數(shù)輸出ch1的值putchar(ch2); /用putchar()函數(shù)輸出ch2的值 putchar(n); /用putchar()函數(shù)輸出一個(gè)回車運(yùn)行結(jié)果please input a capital:ABab

38、程序注解ch1=getchar();和ch2= getchar();語句表示從鍵盤接收輸入字符放到ch1和ch2中。ch1=ch1+32;和ch2=ch2+32;語句表示將大寫字母轉(zhuǎn)換成小寫字母。思考:為什么通過將大寫字母加上32就可以變成小寫字母?putchar(ch1);和putchar(ch2);表示輸出ch1和ch2兩個(gè)字母,putchar(n);表示輸出一個(gè)回車換行。思考:在運(yùn)行結(jié)果中,為什么輸入的兩個(gè)字母AB不需要用空格等分隔符隔開? 編程練習(xí) 練習(xí)2.5 編一程序,從鍵盤輸入一個(gè)小寫字母字符,輸出其對(duì)應(yīng)的大寫字母。知識(shí)延伸用getchar()讀入時(shí),如果不按回車符,所有輸入會(huì)放入

39、緩沖區(qū),而不會(huì)被讀入。最后按下的回車符,雖是用來告訴系統(tǒng)輸入已結(jié)束,但同時(shí)也會(huì)作為一個(gè)字符放入緩沖區(qū)。本例中,如果輸入12,則它們將被當(dāng)做兩個(gè)字符1和2(注意,不是數(shù)字1、2)輸入,而不作為一個(gè)整數(shù)12來看待。putchar()輸出指定字符,不會(huì)在輸出后自動(dòng)換行。getchar可以讀入任意字符。運(yùn)算符用于執(zhí)行程序代碼運(yùn)算,會(huì)針對(duì)一個(gè)或以上操作數(shù)項(xiàng)目來進(jìn)行運(yùn)算。例如:2+3,其操作數(shù)是2和3,而運(yùn)算符則是“+”。C語言把除了控制語句和輸入輸出以外的幾乎所有的基本操作都作為運(yùn)算符處理。C的運(yùn)算符有以下幾類:1. 算術(shù)運(yùn)算符:+ - * / %2. 賦值運(yùn)算符:=及擴(kuò)展賦值運(yùn)算符3. 逗號(hào)運(yùn)算符:,

40、4. 邏輯運(yùn)算符:! & |5. 關(guān)系運(yùn)算符: = =6. 條件運(yùn)算符:?:7. 位運(yùn)算符: | &8. 指針運(yùn)算符:* &9. 求字節(jié)數(shù)運(yùn)算符:sizeof10. 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:(類型)11. 分量運(yùn)算符:. -12. 下標(biāo)運(yùn)算符: 13. 其他:如函數(shù)調(diào)用運(yùn)算符:()算術(shù)運(yùn)算符和算術(shù)表達(dá)式1.基本的算術(shù)運(yùn)算符 知識(shí)講解運(yùn)算符描述實(shí)例+把兩個(gè)操作數(shù)相加A + B 將得到 30-從第一個(gè)操作數(shù)中減去第二個(gè)操作數(shù)A - B 將得到 -10*把兩個(gè)操作數(shù)相乘A * B 將得到 200/分子除以分母B / A 將得到 2%取模運(yùn)算符,整除后的余數(shù)B % A 將得到 0表2-7 算術(shù)運(yùn)算符 案例

41、分析題目描述 例2.7 現(xiàn)有兩個(gè)變量a,b,給其賦值,計(jì)算它們的和、差、積、商和余數(shù)。程序代碼 #include int main() int a = 21; int b = 10; int c ; c = a + b; printf(a + b的結(jié)果是:%dn, c ); c = a - b; printf(a - b的結(jié)果是:%dn, c ); c = a * b; printf(a * b的結(jié)果是:%dn, c ); c = a / b; printf(a / b的結(jié)果是:%dn, c ); c = a % b; printf(a % b的結(jié)果是:%dn, c ); 運(yùn)行結(jié)果a + b的

42、結(jié)果是:21a - b的結(jié)果是:11a * b的結(jié)果是:210a / b的結(jié)果是:2a % b的結(jié)果是:1程序注解在C語言中,兩個(gè)整數(shù)做除法運(yùn)算時(shí),不管能否除盡,運(yùn)算結(jié)果都是整數(shù)。如上例中21/10結(jié)果是2,而不是2.1。取模%運(yùn)算符的兩個(gè)操作數(shù)必須是整數(shù)。 編程練習(xí)練習(xí)2.6 從鍵盤輸入一個(gè)3位數(shù)的整數(shù),求該整數(shù)個(gè)位、十位、百位上的數(shù)的和。2.強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 知識(shí)講解強(qiáng)制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn)的。其一般形式為: (類型說明符) (表達(dá)式) 其功能是把“表達(dá)式”的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成“類型說明符”所表示的數(shù)據(jù)類型。例如: (float) a 把變量a強(qiáng)制轉(zhuǎn)換為實(shí)型,(int)(x+

43、y) 把x+y的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換為整型。 案例分析題目描述例2.8 從鍵盤輸入2個(gè)正整數(shù),計(jì)算并輸出這2個(gè)數(shù)的平均數(shù)。程序代碼#includevoid main()int num1,num2;float avg;scanf(“%d%d”,&num1,&num2);avg=(float)(num1+num2)/2;printf(avg=%.2fn,avg);運(yùn)行結(jié)果8 5avg=6.5程序注解前面分析過,在C語言中,兩個(gè)整數(shù)相除,結(jié)果仍然為整數(shù)。因此,本題中為了保證運(yùn)算結(jié)果正確,將兩個(gè)數(shù)的和強(qiáng)制轉(zhuǎn)換成浮點(diǎn)型:(float)(num1+num2),這樣就能保留運(yùn)算結(jié)果的小數(shù),得到6.5的運(yùn)算結(jié)果。

44、如果不進(jìn)行強(qiáng)制類型轉(zhuǎn)換,則結(jié)果錯(cuò)誤。強(qiáng)制類型轉(zhuǎn)換時(shí),類型說明符和表達(dá)式都必須加括號(hào)(單個(gè)變量可以不加括號(hào)),如把(int)(x+y)寫成(int)x+y,則表示把x轉(zhuǎn)換成int型之后再與y相加,與(int)(x+y)的結(jié)果是不一樣的。無論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對(duì)變量的數(shù)據(jù)長度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時(shí)對(duì)該變量定義的數(shù)據(jù)類型。本題中,執(zhí)行了(float)(num1+num2)后,num1和num2的數(shù)據(jù)類型仍然是整型。 編程練習(xí) 練習(xí)2.7 已知球的體積計(jì)算公式為:v=4/3r3,其中r是半徑,v是球的體積,是圓周率,值取3.14。先從鍵盤輸入一個(gè)球的半徑值

45、r,計(jì)算其體積v。3.自增(+)、自減(-)運(yùn)算符 知識(shí)講解自增(+)、自減(-)運(yùn)算符是單目運(yùn)算符,即只對(duì)一個(gè)操作數(shù)進(jìn)行操作,運(yùn)算后的結(jié)果仍賦予該操作數(shù)。因此,參與自增、自減的對(duì)象必須是變量,常量和表達(dá)式是不能做這兩種運(yùn)算的。如9+、(a+b)+之類的表達(dá)式都是錯(cuò)誤的。運(yùn)算符描述實(shí)例等價(jià)于+把操作數(shù)在原來基礎(chǔ)上加1a + 后將使a的值變?yōu)?1a+等價(jià)于a=a+1-把操作數(shù)在原來基礎(chǔ)上減1a - - 后將使a的值變?yōu)?a-等價(jià)于a=a-1表2-8 算術(shù)運(yùn)算符 案例分析題目描述 例2.9 運(yùn)行下面的程序,觀察其運(yùn)行結(jié)果,并分析說明原因。程序代碼#include int main() int c;

46、 int a = 10; /a賦值為10 c = a+; printf(先賦值后運(yùn)算:n); printf(Example1: c 的值是 %dn, c ); printf(Example1: a 的值是 %dn, a ); a = 10; /a重新賦值為10 c = a - -; printf(Example2: c 的值是 %dn, c ); printf(Example2: a 的值是 %dn, a ); printf(先運(yùn)算后賦值:n); a = 10; /a重新賦值為10 c = +a; printf(Example3:c 的值是 %dn, c ); printf(Example3:

47、a 的值是 %dn, a ); a = 10; /a重新賦值為10 c = -a; printf(Example4:c 的值是 %dn, c ); printf(Example4:a 的值是 %dn, a ); return 0;運(yùn)行結(jié)果先賦值后運(yùn)算:Example1: c 的值是 10Example1: a 的值是 11Example2: c 的值是 10Example2: a 的值是 9先運(yùn)算后賦值:Example3:c 的值是 11Example3:a 的值是 11Example4:c 的值是 9Example4:a 的值是 9程序注解自增和自減運(yùn)算符的符號(hào)作為操作數(shù)的前綴和后綴,對(duì)于運(yùn)

48、算的結(jié)果是不一樣的。對(duì)于前綴運(yùn)算符,先執(zhí)行自增或自減運(yùn)算,再計(jì)算表達(dá)式的值,而后綴運(yùn)算符,則先計(jì)算表達(dá)式的值,再執(zhí)行自增或自減運(yùn)算。自增(+)和自減(-)運(yùn)算符只能運(yùn)用于簡單變量,常量和表達(dá)式是不能做這兩種運(yùn)算的,如5-、(x+y)+都是不正確的。 編程練習(xí) 練習(xí)2.8 假設(shè)num,sum均為整數(shù),且num=sum=7,經(jīng)過sum=num+,sum+,+num運(yùn)算后,sum和num的值分別是多少?4.算術(shù)表達(dá)式表達(dá)式是由運(yùn)算符和操作數(shù)組合構(gòu)成的。最簡單的表達(dá)式即一個(gè)單獨(dú)的操作數(shù),以此作為基礎(chǔ)可以建立復(fù)雜的表達(dá)式,比如:3+2、a=(2+b/3)/5、x=i+、m=2*5。操作數(shù)可以是常量,也可

49、以是變量,亦可以是他們的組合。一些表達(dá)式是多個(gè)較小的表達(dá)式組合而成,這些小的表達(dá)式稱為子表達(dá)式。用算術(shù)運(yùn)算符和括號(hào)將操作數(shù)連接起來的符合C語法規(guī)則的式子,稱為C語言的算術(shù)表達(dá)式。算術(shù)表達(dá)式的操作對(duì)象可以是常量、變量、函數(shù)等。如:b-、x1+x2、5*y等。5.算術(shù)運(yùn)算符的優(yōu)先級(jí)和結(jié)合方向在一個(gè)表達(dá)式中可能包含多個(gè)由不同運(yùn)算符連接起來的、具有不同數(shù)據(jù)類型的數(shù)據(jù)對(duì)象;由于表達(dá)式有多種運(yùn)算,不同的運(yùn)算順序可能得出不同結(jié)果,因此,當(dāng)表達(dá)式中含多種運(yùn)算時(shí),必須按一定順序進(jìn)行結(jié)合,才能保證運(yùn)算的合理性和結(jié)果的正確性、唯一性。運(yùn)算符結(jié)合性優(yōu)先級(jí)+ -從右到左高低* / %從左到右+ -從左到右表2-9 算術(shù)

50、運(yùn)算符結(jié)合性與優(yōu)先級(jí)賦值運(yùn)算符和賦值表達(dá)式 知識(shí)講解1.賦值運(yùn)算符簡單賦值運(yùn)算符符號(hào)為“=”。由“=”連接的式子稱為賦值表達(dá)式。其一般形式為: =2.復(fù)合賦值運(yùn)算符在賦值運(yùn)算符前面加上一個(gè)其他的運(yùn)算符后,就構(gòu)成了復(fù)合賦值運(yùn)算符。其一般格式為:=運(yùn)算符例子等價(jià)于運(yùn)算符例子等價(jià)于+=x+=3x=x+3/=x/=3x=x/3-=x-=3x=x-3%=x%=3x=x%3*=x*=3x=x*3表2-10 常見的復(fù)合賦值運(yùn)算符3.賦值表達(dá)式由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來的式子稱為賦值表達(dá)式,它的一般形式為:對(duì)賦值表達(dá)式求解的過程是將“賦值運(yùn)算符”右側(cè)的“表達(dá)式”的值賦給左側(cè)的變量,而“表達(dá)式”

51、的值就是被賦值的變量的值。 案例分析題目描述 例2.10 觀察下面的代碼,了解賦值運(yùn)算符的使用。程序代碼#include void main() int a = 21; int c ; c = a; printf(=運(yùn)算符實(shí)例,c 的值為: %dn, c ); c += a; printf(+=運(yùn)算符實(shí)例,c 的值為:%dn, c ); c -= a; printf(-=運(yùn)算符實(shí)例,c 的值為:%dn, c ); c *= a; printf(*=運(yùn)算符實(shí)例,c 的值為:%dn, c ); c /= a; printf(/=運(yùn)算符實(shí)例,c 的值為: %dn, c ); c = 200; c %

52、= a; printf(%=運(yùn)算符實(shí)例,c 的值為:%dn, c );運(yùn)行結(jié)果=運(yùn)算符實(shí)例,c 的值為: 21+=運(yùn)算符實(shí)例,c 的值為: 42-=運(yùn)算符實(shí)例,c 的值為: 21*=運(yùn)算符實(shí)例,c 的值為: 441/=運(yùn)算符實(shí)例,c 的值為: 21%=運(yùn)算符實(shí)例,c 的值為: 11程序注解賦值運(yùn)算符的結(jié)合方向是“自右向左”。若賦值運(yùn)算符兩側(cè)表達(dá)式的值類型不同,則先進(jìn)行類型轉(zhuǎn)換。 編程練習(xí) 練習(xí)2.9 若有int m=5,y=2,計(jì)算表達(dá)式y(tǒng)+=y-=m*=y后,y的值是多少?逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 知識(shí)講解1.逗號(hào)運(yùn)算符C語言中逗號(hào)“,”也是一種運(yùn)算符,稱為逗號(hào)運(yùn)算符。其功能是把兩個(gè)表達(dá)式連接

53、起來組成一個(gè)表達(dá)式,稱為逗號(hào)表達(dá)式。其一般形式為: 表達(dá)式1,表達(dá)式2,表達(dá)式3,表達(dá)式n其求值過程是依次求n個(gè)表達(dá)式的值,并以最后一個(gè)表達(dá)式,即表達(dá)式n的值作為整個(gè)逗號(hào)表達(dá)式的結(jié)果。 案例分析題目描述 例2.11 閱讀下面的程序代碼,分析其輸出結(jié)果。程序代碼#includevoid main()int a=2,b=4,c=6,x,y;x=a+b,y=x+c;printf(y=%d,x=%dn,y,x);運(yùn)行結(jié)果y=12,x=6程序注解語句x=a+b,y=x+c;先計(jì)算x=a+b,然后計(jì)算y=x+c。逗號(hào)運(yùn)算符在所有運(yùn)算符中優(yōu)先級(jí)別最低,且具有從左至右的結(jié)合性。逗號(hào)表達(dá)式中,各表達(dá)式的數(shù)據(jù)類型

54、可以不同。 編程練習(xí)練習(xí)2.10 若x和a均是int型變量,則編程計(jì)算下面兩個(gè)表達(dá)式,求出其x的值分別為多少?x=(a=4,6*2)x=a=4,6*2知識(shí)延伸逗號(hào)表達(dá)式一般形式中的表達(dá)式1和表達(dá)式2等本身也可以是逗號(hào)表達(dá)式。例如: 表達(dá)式1,(表達(dá)式2,表達(dá)式3) 形成了嵌套情形。程序中使用逗號(hào)表達(dá)式,通常是要分別求逗號(hào)表達(dá)式內(nèi)各表達(dá)式的值,并不一定要求整個(gè)逗號(hào)表達(dá)式的值。并不是在所有出現(xiàn)逗號(hào)的地方都組成逗號(hào)表達(dá)式,如在變量說明中,函數(shù)參數(shù)表中逗號(hào)只是用作各變量之間的間隔符。本章介紹了C語言程序中的基本組成元素,包括標(biāo)識(shí)符、關(guān)鍵字、數(shù)據(jù)類型、各種運(yùn)算符和表達(dá)式等。標(biāo)識(shí)符包括用戶自定義的用來表示

55、變量、函數(shù)名等的符號(hào),而關(guān)鍵字則是系統(tǒng)定義的符號(hào)。C語言有多種數(shù)據(jù)類型,這些數(shù)據(jù)類型可以表示各種數(shù)據(jù),以方便定義各種變量和常量。C語言的輸入輸出是通過函數(shù)來實(shí)現(xiàn)的。C語言還定義了各種類型的運(yùn)算符,它們可以生成各種表達(dá)式,進(jìn)行各種運(yùn)算操作。第3章 選擇結(jié)構(gòu)程序設(shè)計(jì)知識(shí)目標(biāo) 熟悉關(guān)系運(yùn)算符、邏輯運(yùn)算符和條件運(yùn)算熟悉關(guān)系表達(dá)式、邏輯表達(dá)式理解選擇結(jié)構(gòu),掌握if語句和switch語句的語法結(jié)構(gòu)和執(zhí)行特點(diǎn)理解條件表達(dá)式及其執(zhí)行特點(diǎn)能夠正確使用關(guān)系運(yùn)算符、邏輯運(yùn)算符和條件運(yùn)算符構(gòu)建關(guān)系表達(dá)式、邏輯表達(dá)式和條件表達(dá)式能夠正確使用if語句有效解決實(shí)際問題能夠正確使用switch語句有效解決實(shí)際問題能夠正確使用

56、條件表達(dá)式有效解決實(shí)際問題能力目標(biāo) 選擇結(jié)構(gòu)條件判定if語句switch語句條件運(yùn)算符與條件表達(dá)式第一節(jié) 選擇結(jié)構(gòu)條件判定1.關(guān)系運(yùn)算符 “關(guān)系運(yùn)算”就是“比較運(yùn)算”,將兩個(gè)值進(jìn)行比較,得到“真”或者“假”。比如“53”是一個(gè)關(guān)系表達(dá)式, 其中“”是一個(gè)關(guān)系運(yùn)算符,其表達(dá)式的值為“真”;而關(guān)系表達(dá)式“5(大于)、=(大于等于)、b+c 等同于 a(b+c) ab!=c 等同于 (ab)!=c d=b+2=3 等同于 d=(b+2)=3) b-1=a!=c 等同于 (b-1)=a)!=c3.1.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式2.關(guān)系表達(dá)式 用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(可以是算術(shù)表達(dá)式或關(guān)系表達(dá)式、邏輯表

57、達(dá)式、賦值表達(dá)式、字符表達(dá)式)連接起來的式子,稱為關(guān)系表達(dá)式。1比如:a+b(y2) ,!a=(b&c),(a=10)(b=1),xy。關(guān)系表達(dá)式的值為“真”或者“假”,C語言中用“1”表示真,用“0”表示假。例如:x=1,y=2,c=3,那么關(guān)系表達(dá)式xy的值為真,得值1,關(guān)系表達(dá)式(x+y)c的值為假,得值0。題目描述:例3.1閱讀下面的程序,分析三次輸出a、b、c的結(jié)果,并說明其原因。#include int main() int a,b,c; a=b=c=10; printf(a=%d,b=%d,c=%dn,a,b,c); a=b=c; printf(a=%d,b=%d,c=%dn,a

58、,b,c); a=bc=10; printf(a=%d,b=%d,c=%dn,a,b,c); return 0;程序代碼:運(yùn)行結(jié)果a=10,b=10,c=10a=1,b=10,c=10a=0,b=10,c=10程序注解:賦值運(yùn)算符“=”具有右結(jié)合性,a=b=c=10即為a=(b=(c=10),因此第一個(gè)輸出為“a=10,b=10,c=10”;關(guān)系運(yùn)算符優(yōu)先級(jí)高于賦值運(yùn)算符,a=b=c即為a=(b=c),b=c值為“真”,即為“1”,因此a=1,所以第二個(gè)輸出為“a=1,b=10,c=10”;關(guān)系運(yùn)算符優(yōu)先級(jí)高于賦值運(yùn)算符,關(guān)系運(yùn)算符的結(jié)合性為自左至右,a=bc=10即為a=(bc)=10),b

59、c得值為0,0=10得值為0,所以第三個(gè)輸出為“a=0,b=10,c=10”。練習(xí)3.1:a=1,b=20,c=10,x=ab,y=ab80)&( x90),除此之外的是(x=90), “!”是單目運(yùn)算符,右結(jié)合性,如?。▁=0)。 三個(gè)邏輯運(yùn)算符中,“!”的優(yōu)先級(jí)最高,“&”其次,“|”最低?!埃 备哂谒阈g(shù)運(yùn)算符,“&”和“|”低于關(guān)系運(yùn)算符高于賦值運(yùn)算符。 所以,(x80)&(x80& x90,(x=90)可以寫成x=90,但是!(x=0)如果寫成!x=0,就變成關(guān)系表達(dá)式(!x)=0了。3.1.2 邏輯運(yùn)算符和邏輯表達(dá)式2.邏輯表達(dá)式 用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來的式子就是邏

60、輯表達(dá)式。1邏輯表達(dá)式的值為“真”或者“假”。C語言編譯系統(tǒng)在給出邏輯運(yùn)算結(jié)果時(shí),以1表示“真”,以0表示“假”,而在判斷一個(gè)量是否為“真”時(shí),以0表示“假”,以非0表示“真”。因此,在一個(gè)表達(dá)式中如果有數(shù)值,則要分析這個(gè)數(shù)值是作為數(shù)值運(yùn)算的對(duì)象,或是關(guān)系運(yùn)算的對(duì)象,亦或是邏輯運(yùn)算的對(duì)象。 表3.1為邏輯運(yùn)算的“真值表”,當(dāng)a和b的值為不同組合時(shí),各種邏輯運(yùn)算得到的值如下表:aba&ba|b!a非0非0110非000110非001100001表3.1 邏輯運(yùn)算的真值表題目描述例3.2設(shè)x=3,y=4,z=0,求表達(dá)式x=y=z&!x+23的值,并用程序驗(yàn)證。程序代碼#include int m

溫馨提示

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