C語(yǔ)言與數(shù)據(jù)結(jié)構(gòu)課件_第1頁(yè)
C語(yǔ)言與數(shù)據(jù)結(jié)構(gòu)課件_第2頁(yè)
C語(yǔ)言與數(shù)據(jù)結(jié)構(gòu)課件_第3頁(yè)
C語(yǔ)言與數(shù)據(jù)結(jié)構(gòu)課件_第4頁(yè)
C語(yǔ)言與數(shù)據(jù)結(jié)構(gòu)課件_第5頁(yè)
已閱讀5頁(yè),還剩480頁(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章C語(yǔ)言概述本章首先介紹結(jié)構(gòu)化的程式設(shè)計(jì)的基本方法;其次介紹數(shù)據(jù)結(jié)構(gòu)與演算法在程式設(shè)計(jì)中的地位和重要性;最後介紹C語(yǔ)言的特點(diǎn)、基本結(jié)構(gòu)及調(diào)試方法。1.1結(jié)構(gòu)化的程式設(shè)計(jì)的基本方法1.2數(shù)據(jù)結(jié)構(gòu)與演算法1.3

C語(yǔ)言概述1.4

TurboCV2.0的基本操作返回目錄開(kāi)始下一章1.1結(jié)構(gòu)化的程式設(shè)計(jì)的基本方法結(jié)構(gòu)化程式設(shè)計(jì)的步驟:首先要從具體問(wèn)題中抽象出一個(gè)適當(dāng)?shù)臄?shù)學(xué)模型,然後設(shè)計(jì)一個(gè)解此數(shù)學(xué)模型的演算法(Algorithm),最後編出程式、進(jìn)行測(cè)試、調(diào)整直至得到最終解答。尋求數(shù)學(xué)模型的實(shí)質(zhì)是分析問(wèn)題,從中提取操作的對(duì)象,並找出這些操作對(duì)象之間含有的關(guān)係,然後用數(shù)學(xué)的語(yǔ)言加以描述。1.2數(shù)據(jù)結(jié)構(gòu)與演算法眾所周知,二十世紀(jì)四十年代,電子數(shù)字電腦問(wèn)世的直接原因是解決彈道學(xué)的計(jì)算問(wèn)題。早期,電子電腦的應(yīng)用範(fàn)圍,幾乎只局限於科學(xué)和工程的計(jì)算,其處理的對(duì)象是純數(shù)值性的資訊,通常,人們把這類(lèi)問(wèn)題稱(chēng)為數(shù)值計(jì)算。近三十年來(lái),電子電腦的發(fā)展異常迅猛,這不僅表現(xiàn)在電腦本身運(yùn)算速度不斷提高、資訊存儲(chǔ)量日益擴(kuò)大、價(jià)格逐步下降,更重要的是電腦廣泛地應(yīng)用於情報(bào)檢索、企業(yè)管理、系統(tǒng)工程等方面,已遠(yuǎn)遠(yuǎn)超出了科技計(jì)算的範(fàn)圍,而滲透到人類(lèi)社會(huì)活動(dòng)的一切領(lǐng)域。與此相應(yīng),電腦的處理對(duì)象也從簡(jiǎn)單的純數(shù)值性資訊發(fā)展到非數(shù)值性的和具有一定結(jié)構(gòu)的資訊。

一、基本概念和術(shù)語(yǔ)1.?dāng)?shù)據(jù)

數(shù)據(jù)是人們利用文字符號(hào)、數(shù)字符號(hào)以及其他規(guī)定的符號(hào)對(duì)現(xiàn)實(shí)世界的事物及其活動(dòng)所做的描述。在電腦科學(xué)中,數(shù)據(jù)的含義非常廣泛,我們把一切能夠輸入到電腦中並被電腦程式處理的資訊,包括文字、表格、圖象等,都稱(chēng)為數(shù)據(jù)。例如,一個(gè)個(gè)人書(shū)庫(kù)管理程式所要處理的數(shù)據(jù)可能是一張如表1-1所示的表格。表1-1個(gè)人書(shū)庫(kù)2.結(jié)點(diǎn)結(jié)點(diǎn)也叫數(shù)據(jù)元素,它是組成數(shù)據(jù)的基本單位。在程式中通常把結(jié)點(diǎn)作為一個(gè)整體進(jìn)行考慮和處理。例如,在表1-1所示的個(gè)人書(shū)庫(kù)中,為了便於處理,把其中的每一行(代表一本書(shū))作為一個(gè)基本單位來(lái)考慮,故該數(shù)據(jù)由10個(gè)結(jié)點(diǎn)構(gòu)成。一般情況下,一個(gè)結(jié)點(diǎn)中含有若干個(gè)字段(也叫資料項(xiàng)目)。例如,在表1-1所示的表格數(shù)據(jù)中,每個(gè)結(jié)點(diǎn)都有登錄號(hào)、書(shū)號(hào)、書(shū)名、作者、出版社和價(jià)格等六個(gè)字段構(gòu)成。字段是構(gòu)成數(shù)據(jù)的最小單位。3.邏輯結(jié)構(gòu)結(jié)點(diǎn)和結(jié)點(diǎn)之間的邏輯關(guān)係稱(chēng)為數(shù)據(jù)的邏輯結(jié)構(gòu)。在表1-1所示的表格數(shù)據(jù)中,各結(jié)點(diǎn)之間在邏輯上有一種線性關(guān)係,它指出了10個(gè)結(jié)點(diǎn)在表中的排列順序。根據(jù)這種線性關(guān)係,可以看出表中第一本書(shū)是什麼書(shū),第二本書(shū)是什麼書(shū),等等。4.存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)在電腦中的存儲(chǔ)表示稱(chēng)為數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。在表1-1所示的表格數(shù)據(jù)在電腦中可以有多種存儲(chǔ)表示,例如,可以表示成數(shù)組,存放在記憶體中;也可以表示成文件,存放在磁片上,等等。5.?dāng)?shù)據(jù)結(jié)構(gòu)(DataStructure)數(shù)據(jù)結(jié)構(gòu)是研究數(shù)據(jù)元素(DataElement)之間抽象化的相互關(guān)係和這種關(guān)係在電腦中的存儲(chǔ)表示(即所謂數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)),並對(duì)這種結(jié)構(gòu)定義相適應(yīng)的運(yùn)算,設(shè)計(jì)出相應(yīng)的演算法,而且確保經(jīng)過(guò)這些運(yùn)算後所得到的新結(jié)構(gòu)仍然是原來(lái)的結(jié)構(gòu)類(lèi)型。為了敘述上的方便和避免產(chǎn)生混淆,通常我們把數(shù)據(jù)的邏輯結(jié)構(gòu)統(tǒng)稱(chēng)為數(shù)據(jù)結(jié)構(gòu),把數(shù)據(jù)的物理結(jié)構(gòu)統(tǒng)稱(chēng)為存儲(chǔ)結(jié)構(gòu)(StorageStructure)。6.?dāng)?shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型是指程式設(shè)計(jì)語(yǔ)言中各變數(shù)可取的數(shù)據(jù)種類(lèi)。數(shù)據(jù)類(lèi)型是高級(jí)程式設(shè)計(jì)語(yǔ)言中的一個(gè)基本概念,它和數(shù)據(jù)結(jié)構(gòu)的概念密切相關(guān)。一方面,在程式設(shè)計(jì)語(yǔ)言中,每一個(gè)數(shù)據(jù)都屬於某種數(shù)據(jù)類(lèi)型。類(lèi)型明顯或隱含地規(guī)定了數(shù)據(jù)的取值範(fàn)圍、存儲(chǔ)方式以及允許進(jìn)行的運(yùn)算??梢哉J(rèn)為,數(shù)據(jù)類(lèi)型是在程式設(shè)計(jì)中已經(jīng)實(shí)現(xiàn)了的數(shù)據(jù)結(jié)構(gòu)。另一方面,在程式設(shè)計(jì)過(guò)程中,當(dāng)需要引入某種新的數(shù)據(jù)結(jié)構(gòu)時(shí),總是借助編程語(yǔ)言所提供的數(shù)據(jù)類(lèi)型來(lái)描述數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。

二、演算法1、演算法的概念簡(jiǎn)單地說(shuō)就是解決特定問(wèn)題的方法(關(guān)於演算法的嚴(yán)格定義,在此不作討論)。特定的問(wèn)題可以是數(shù)值的,也可以是非數(shù)值的。解決數(shù)值問(wèn)題的演算法叫做數(shù)值演算法,科學(xué)和工程計(jì)算方面的演算法都屬於數(shù)值演算法,如求解數(shù)值積分,求解線性方程組、求解代數(shù)方程、求解微分方程等。解決非數(shù)值問(wèn)題的演算法叫做非數(shù)值演算法,數(shù)據(jù)處理方面的演算法都屬於非數(shù)值演算法。例如各種排序演算法、查找演算法、插入演算法、刪除演算法、遍曆演算法等。數(shù)值演算法和非數(shù)值演算法並沒(méi)有嚴(yán)格的區(qū)別。一般說(shuō)來(lái),在數(shù)值演算法中主要進(jìn)行算術(shù)運(yùn)算,而在非數(shù)值演算法中主要進(jìn)行比較和邏輯運(yùn)算。另一方面,特定的問(wèn)題可能是遞歸的,也可能是非遞歸的,因而解決它們的演算法就有遞歸演算法和非遞歸演算法之分。從理論上講,任何遞歸演算法都可以通過(guò)迴圈,堆疊等技術(shù)轉(zhuǎn)化為非遞歸演算法。

2、

演算法的特點(diǎn)演算法是執(zhí)行特定計(jì)算的有窮過(guò)程。這個(gè)過(guò)程有5個(gè)特點(diǎn):

1.動(dòng)態(tài)有窮:當(dāng)執(zhí)行一個(gè)演算法時(shí),不論是何種情況,在經(jīng)過(guò)了有限步驟後,這個(gè)演算法一定要終止。

2.確定性:演算法中的每條指令都必須是清楚的,指令無(wú)二義性。

3.輸入:具有0個(gè)或0個(gè)以上由外界提供的量。

4.輸出:產(chǎn)生1個(gè)或多個(gè)結(jié)果。

5.可行性:每條指令都充分基本,原則上可由人僅用筆和紙?jiān)谟邢薜臅r(shí)間內(nèi)也能完成。注意:演算法和程式是有區(qū)別的,即程式未必能滿足動(dòng)態(tài)有窮。在本書(shū)中,我們只討論滿足動(dòng)態(tài)有窮的程式,因此“演算法”和“程式”是通用的。

3、

演算法的描述方法

一個(gè)演算法可以用自然語(yǔ)言、數(shù)字語(yǔ)言或流程圖等來(lái)描述,也可以用電腦高級(jí)程式語(yǔ)言來(lái)描述,如Pascal語(yǔ)言、C語(yǔ)言或偽代碼等。

1.3C語(yǔ)言概述1.C語(yǔ)言的誕生與發(fā)展(1)在C語(yǔ)言誕生以前,系統(tǒng)軟體主要是用組合語(yǔ)言編寫(xiě)的。由於組合語(yǔ)言程式依賴(lài)於電腦硬體,其可讀性和可移植性都很差;但一般的高級(jí)語(yǔ)言又難以實(shí)現(xiàn)對(duì)電腦硬體的直接操作(這正是組合語(yǔ)言的優(yōu)勢(shì)),於是人們盼望有一種兼有組合語(yǔ)言和高級(jí)語(yǔ)言特性的新語(yǔ)言。(2)C語(yǔ)言是貝爾實(shí)驗(yàn)室於70年代初研製出來(lái)的,後來(lái)又被多次改進(jìn),並出現(xiàn)了多種版本。80年代初,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI),根據(jù)C語(yǔ)言問(wèn)世以來(lái)各種版本對(duì)C語(yǔ)言的發(fā)展和擴(kuò)充,制定了ANSIC標(biāo)準(zhǔn)(1989年再次做了修訂)。(3)目前,在微機(jī)上廣泛使用的C語(yǔ)言編譯系統(tǒng)有MicrosoftC、TurboC、BorlandC等。雖然它們的基本部分都是相同的,但還是有一些差異,所以請(qǐng)大家注意自己所使用的C編譯系統(tǒng)的特點(diǎn)和規(guī)定(參閱相應(yīng)的手冊(cè))。本書(shū)選定的上機(jī)環(huán)境是TCV2.0(DOS操作系統(tǒng))。

2.C語(yǔ)言的特點(diǎn)

C語(yǔ)言同時(shí)具有組合語(yǔ)言和高級(jí)語(yǔ)言的優(yōu)勢(shì)。(1)語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。

(2)運(yùn)算符極其豐富。(3)生成的目標(biāo)代碼品質(zhì)高,程式執(zhí)行效率高。(4)可移植性好(較之組合語(yǔ)言)。(5)可以直接操縱硬體。

3.在C語(yǔ)言中,除實(shí)現(xiàn)順序、選擇和迴圈等三種基本結(jié)構(gòu)的9條控制語(yǔ)句外,輸入輸出操作均由標(biāo)準(zhǔn)庫(kù)函數(shù)(不是C語(yǔ)言的組成部分)來(lái)實(shí)現(xiàn)。所以學(xué)習(xí)C語(yǔ)言,不僅要學(xué)習(xí)這9條控制語(yǔ)句和各種運(yùn)算符,而且要學(xué)習(xí)並掌握常用標(biāo)準(zhǔn)庫(kù)函數(shù)的使用。4、C語(yǔ)言程式的結(jié)構(gòu)與書(shū)寫(xiě)規(guī)則(1)C語(yǔ)言程式的總體結(jié)構(gòu)

一個(gè)完整的C語(yǔ)言程式,是由一個(gè)main()函數(shù)(又稱(chēng)主函數(shù))和若干個(gè)其他函數(shù)結(jié)合而成的,或僅由一個(gè)main()函數(shù)構(gòu)成。[案例1.1]僅由main()函數(shù)構(gòu)成的C語(yǔ)言程式。/*案例代碼檔案名:AL1_1.C*//*功能:僅由main()函數(shù)構(gòu)成的C語(yǔ)言程式示例*/main(){printf(“ThisisaCprogram.\n”);}程式運(yùn)行結(jié)果:

ThisisaCprogram.

[案例1.2]由main()函數(shù)和1個(gè)其他函數(shù)max()構(gòu)成的C語(yǔ)言程式。/*案例代碼檔案名:AL1_2.C*//*功能:由main()函數(shù)和1個(gè)其他函數(shù)max()構(gòu)成的C語(yǔ)言程式示例*/intmax(intx,inty){return(x>y?x:y);}main(){intnum1,num2;printf(“Inputthefirstintegernumber:”);scanf(“%d”,&num1);printf(“Inputthesecondintegernumber:”);scanf(“%d”,&num2);printf(“max=%d\n”,max(num1,num2));}程式運(yùn)行情況:

Inputthefirstintegernumber:6←┘Inputthesecondintegernumber:9←┘max=9[案例1.3]改寫(xiě)[案例1.2],交換main()函數(shù)和max()函數(shù)的前後位置。根源程式略。程式運(yùn)行情況:

Inputthefirstintegernumber:6←┘Inputthesecondintegernumber:9←┘max=91.函數(shù)是C語(yǔ)言程式的基本單位。main()函數(shù)的作用,相當(dāng)於其他高級(jí)語(yǔ)言中的主程序;其他函數(shù)的作用,相當(dāng)於副程式。2.C語(yǔ)言程式總是從main()函數(shù)開(kāi)始執(zhí)行。一個(gè)C語(yǔ)言程式,總是從main()函數(shù)開(kāi)始執(zhí)行,而不論其在程式中的位置。當(dāng)主函數(shù)執(zhí)行完畢時(shí),亦即程式執(zhí)行完畢。習(xí)慣上,將主函數(shù)main()放在最前頭。4、根源程式書(shū)寫(xiě)格式(1)所有語(yǔ)句都必須以分號(hào)“;”結(jié)束,函數(shù)的最後一個(gè)語(yǔ)句也不例外。(2)程式行的書(shū)寫(xiě)格式自由,既允許1行內(nèi)寫(xiě)幾條語(yǔ)句,也允許1條語(yǔ)句分寫(xiě)在幾行上。例如,[案例1.2]的主函數(shù)main(),也可改寫(xiě)成如下所示的格式:……main(){intnum1,num2;printf(“Inputthefirstintegernumber:”);scanf(“%d”,&num1);printf(“Inputthesecondintegernumber:”);scanf(“%d”,&num2);printf(“max=%d\n”,max(num1,num2));}如果某條語(yǔ)句很長(zhǎng),一般需要將其分寫(xiě)在幾行上。(3)允許使用注釋。C語(yǔ)言的注釋格式為:/*……*/說(shuō)明:I、“/*”和“*/”必須成對(duì)使用,且“/”和“*”、以及“*”和“/”之間不能有空格,否則都出錯(cuò)。技巧:為避免遺漏必須配對(duì)使用的符號(hào),例如注釋符號(hào)、函數(shù)體的起止識(shí)別字(花括弧)、圓括號(hào)等等,在輸入時(shí),可連續(xù)輸入這些起止識(shí)別字,然後再在其中進(jìn)行插入來(lái)完成內(nèi)容的編輯。在起止識(shí)別字嵌套時(shí),以及相距較遠(yuǎn)時(shí),這樣做更有必要。

II、注釋的位置,可以單占1行,也可以跟在語(yǔ)句的後面。

III、如果1行寫(xiě)不下,可另起1行繼續(xù)寫(xiě)。

IV、注釋中允許使用漢字。在非中文操作系統(tǒng)下,看到的是一串亂碼,但不影響程式運(yùn)行。

1.4TurboCV2.0的基本操作1.運(yùn)行一個(gè)C語(yǔ)言程式的一般過(guò)程2.TC的啟動(dòng)、退出與命令菜單3.編輯並保存一個(gè)C語(yǔ)言根源程式4.編譯、連接──單個(gè)根源程式檔5.運(yùn)行與查看結(jié)果6.編輯下一個(gè)新的根源程式

1.運(yùn)行一個(gè)C語(yǔ)言程式的一般過(guò)程

Tu(píng)rboC是一個(gè)集根源程式編輯、編譯、連接、運(yùn)行與調(diào)試於一體、用菜單驅(qū)動(dòng)的集成軟體環(huán)境。運(yùn)行一個(gè)C語(yǔ)言程式的一般過(guò)程:(1)啟動(dòng)TC,進(jìn)入TC集成環(huán)境。(2)編輯(或修改)根源程式。(3)編譯。如果編譯成功,則可進(jìn)行下一步操作;否則,返回(2)修改根源程式,再重新編譯,直至編譯成功。(4)連接。如果連接成功,則可進(jìn)行下一步操作;否則,根據(jù)系統(tǒng)的錯(cuò)誤提示,進(jìn)行相應(yīng)修改,再重新連接,直至連接成功。(5)運(yùn)行。通過(guò)觀察程式運(yùn)行結(jié)果,驗(yàn)證程式的正確性。如果出現(xiàn)邏輯錯(cuò)誤,則必須返回(2)修改根源程式,再重新編譯、連接和運(yùn)行,直至程式正確。(6)退出TC集成環(huán)境,結(jié)束本次程式運(yùn)行。

2.TC的啟動(dòng)、退出與命令菜單

(1)啟動(dòng)TurboC:tc←┘[畫(huà)面演示]啟動(dòng)TurboC後,其主菜單條橫向排列在螢?zāi)豁敹?,並被啟動(dòng),其中File主項(xiàng)成為當(dāng)前項(xiàng)。主菜單的下麵,是Edit(編輯)窗口和Message(消息)窗口。兩個(gè)窗口中,頂端橫線為雙線顯示的,表示該窗口是活動(dòng)窗口。編輯窗口的頂端為狀態(tài)行,其中:.Line1Col1:顯示游標(biāo)所在的行號(hào)和列號(hào),即游標(biāo)位置。.Insert:表示編輯狀態(tài)處?kù)丁安迦搿?。?dāng)處?kù)丁案膶?xiě)”狀態(tài)時(shí),此處為空白。.d:NONAME.C:顯示當(dāng)前正在編輯的檔案名。顯示為“NONAME.C”時(shí),表示用戶尚未給檔命名。螢?zāi)坏锥耸?個(gè)功能鍵的說(shuō)明,以及NumLock鍵的狀態(tài)(顯示“NUM”時(shí),表示處?kù)丁皵?shù)字鍵”狀態(tài);空白,表示“控制鍵”狀態(tài))。

(2)命令菜單的使用

1)按下功能鍵F10,啟動(dòng)主菜單。如果主菜單已經(jīng)被啟動(dòng),則直接轉(zhuǎn)下一步。

2)用左、右方向鍵移動(dòng)光帶,定位於需要的主項(xiàng)上,然後再按回車(chē)鍵,打開(kāi)其子菜單(縱向排列)。

3)用上、下方向鍵移動(dòng)光帶,定位於需要的子項(xiàng)上,回車(chē)即可。執(zhí)行完選定的功能後,系統(tǒng)自動(dòng)關(guān)閉菜單。注意:菜單啟動(dòng)後,又不使用,可再按F10/Esc鍵關(guān)閉,返回原來(lái)狀態(tài)。

(3)退出TurboC

退出TC有兩種方法:

1)菜單法:File|Quit(先選擇File主項(xiàng),再選擇並執(zhí)行Quit子項(xiàng))

2)快捷鍵法:Alt+“X”(先按下Alt鍵並保持,再按字母鍵X,然後同時(shí)放開(kāi))

3.編輯並保存一個(gè)C語(yǔ)言根源程式

(1)啟動(dòng)主菜單,選擇並執(zhí)行File|Load項(xiàng)(快捷鍵鍵:F3)。(2)在“LoadFileName”窗口,輸入根源程式檔案名。檔案名的輸入有兩種方法:直接輸入和選擇輸入。1)直接輸入按照檔案名的組成字串,逐個(gè)字元輸入即可。如果是已經(jīng)存在的檔,系統(tǒng)就在編輯窗口顯示該檔的內(nèi)容,可供編輯、修改。如果是新檔,則給出一個(gè)空白編輯窗口,可供輸入新的根源程式。如果該檔不在當(dāng)前目錄下,則需要冠以路徑名和(或)盤(pán)符。2)選擇檔(僅適用於已經(jīng)存在的根源程式檔)①空回車(chē),打開(kāi)當(dāng)前目錄下、尾碼為.C的所有檔的檔案名窗口。②用上、下、左、右方向鍵,將光帶定位於所需的檔案名上。③按回車(chē)鍵。

(3)常用編輯操作在編輯根源程式過(guò)程中,隨時(shí)都可以按F2鍵(或File|Save),將當(dāng)前編輯的檔存盤(pán),然後繼續(xù)編輯。這是一個(gè)良好的習(xí)慣!關(guān)於線上幫助:在任何窗口(或狀態(tài))下,按F1鍵啟動(dòng)活動(dòng)窗口(或狀態(tài))的線上幫助:.下一頁(yè)──PageDown,返回上一頁(yè)──PageUp.關(guān)閉線上幫助、返回原窗口(或狀態(tài))──Esc.返回前一個(gè)線上幫助屏──Alt+F1(無(wú)論線上幫助是否被啟動(dòng)).返回線上幫助索引──F1:?jiǎn)?dòng)線上幫助後,再按F1,則返回線上幫助索引,以便查詢其他類(lèi)別線上幫助資訊。.查詢庫(kù)函數(shù)的線上幫助資訊──^F1:將游標(biāo)移到需要查詢函數(shù)名的首字元上,然後鍵入^F1,即可獲得該庫(kù)函數(shù)的線上幫助資訊。注:為簡(jiǎn)化描述,用“^”代表“Ctrl”鍵。^Fn就是Ctrl+Fn,下同。

4.編譯、連接──單個(gè)根源程式檔

選擇並執(zhí)行Compile|MakeEXEFile項(xiàng)(快捷鍵:F9),則TC將自動(dòng)完成對(duì)當(dāng)前正在編輯的根源程式檔的編譯、連接,並生成可執(zhí)行檔。如果根源程式有語(yǔ)法錯(cuò)誤,系統(tǒng)將在螢?zāi)恢醒氲摹癈ompiling”(編譯)窗口底端提示“Error:Pressanykey”(錯(cuò)誤:按任意鍵)。此時(shí),按空格鍵,螢?zāi)幌露说摹癕essage”(消息)窗口被啟動(dòng),顯示出錯(cuò)(或警告)資訊,光帶停在第一條消息上。這時(shí)“Edit”(編輯)窗口中也有一條光帶,它總是停在編譯錯(cuò)誤在源代碼中的相應(yīng)位置。注意:當(dāng)用上、下鍵移動(dòng)消息窗口中的光帶時(shí),編輯窗口中的光帶也隨之移動(dòng),始終跟蹤源代碼中的錯(cuò)誤位置!

5.運(yùn)行與查看結(jié)果

(1)運(yùn)行當(dāng)前正在編輯的根源程式檔選擇並執(zhí)行Run|Run項(xiàng)(快捷鍵:^F9),程式運(yùn)行結(jié)束後,仍返回到編輯窗口。當(dāng)你認(rèn)為自己的根源程式不會(huì)有編譯、連接錯(cuò)誤時(shí),也可直接運(yùn)行(即跳過(guò)對(duì)根源程式的編譯、連接步驟)。這時(shí),TC將一次完成從編譯、連接到運(yùn)行的全過(guò)程。(2)查看運(yùn)行結(jié)果選擇並執(zhí)行Run|UserScreen項(xiàng)(快捷鍵:Alt+F5)。查看完畢後,按任一鍵返回編輯窗口。如果發(fā)現(xiàn)邏輯錯(cuò)誤,則可在返回編輯窗口後,進(jìn)行修改;然後再重新編譯、連接、運(yùn)行,直至正確為止。2.1程式設(shè)計(jì)概述一個(gè)程式應(yīng)包括對(duì)數(shù)據(jù)的描述和對(duì)數(shù)據(jù)處理的描述。

1.對(duì)數(shù)據(jù)的描述,即數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)是電腦學(xué)科的核心課程之一。C語(yǔ)言中,系統(tǒng)提供的數(shù)據(jù)結(jié)構(gòu),是以數(shù)據(jù)類(lèi)型的形式出現(xiàn)的。

2.對(duì)數(shù)據(jù)處理的描述,即電腦演算法。演算法是為解決一個(gè)問(wèn)題而採(cǎi)取的方法和步驟,是程式的靈魂。為此,著名電腦科學(xué)家沃思(NikiklausWirth)提出一個(gè)公式:

數(shù)據(jù)結(jié)構(gòu)+演算法=程式

實(shí)際上,一個(gè)程式除了數(shù)據(jù)結(jié)構(gòu)和演算法外,還必須使用一種電腦語(yǔ)言,並採(cǎi)用結(jié)構(gòu)化方法來(lái)表示。

2.2C語(yǔ)言的數(shù)據(jù)類(lèi)型C語(yǔ)言提供的數(shù)據(jù)結(jié)構(gòu),是以數(shù)據(jù)類(lèi)型形式出現(xiàn)的。具體分類(lèi)如下:1.基本類(lèi)型分為整型、實(shí)型(又稱(chēng)浮點(diǎn)型)、字元型和枚舉型四種。2.構(gòu)造類(lèi)型分為數(shù)組類(lèi)型、結(jié)構(gòu)類(lèi)型和共用類(lèi)型三種。3.指針類(lèi)型。在第9章仲介紹。4.空類(lèi)型C語(yǔ)言中的數(shù)據(jù),有常量和變數(shù)之分,它們分別屬於上述這些類(lèi)型。本章將介紹基本類(lèi)型中的整型、實(shí)型和字元型三種數(shù)據(jù)。

2.3常量和變數(shù)2.3.1常量

1.常量的概念

在程式運(yùn)行過(guò)程中,其值不能被改變的量稱(chēng)為常量。

2.常量的分類(lèi)

(1)整型常量(2)實(shí)型常量(3)字元常量。(4)符號(hào)常量。常量的類(lèi)型,可通過(guò)書(shū)寫(xiě)形式來(lái)判別。2.3.2變數(shù)1.變數(shù)的概念在程式運(yùn)行過(guò)程中,其值可以被改變的量稱(chēng)為變數(shù)。2.變數(shù)的兩個(gè)要素(1)變數(shù)名。每個(gè)變數(shù)都必須有一個(gè)名字──變數(shù)名,變數(shù)命名遵循識(shí)別字命名規(guī)則。(2)變數(shù)值。在程式運(yùn)行過(guò)程中,變數(shù)值存儲(chǔ)在內(nèi)存中。在程式中,通過(guò)變數(shù)名來(lái)引用變數(shù)的值。3.識(shí)別字命名規(guī)則(1)有效字元:只能由字母、數(shù)字和下劃線組成,且以字母或下劃線開(kāi)頭。(2)有效長(zhǎng)度:隨系統(tǒng)而異,但至少前8?jìng)€(gè)字元有效。如果超長(zhǎng),則超長(zhǎng)部分被捨棄。例如,由於student_name和student_number的前8?jìng)€(gè)字元相同,有的系統(tǒng)認(rèn)為這兩個(gè)變數(shù),是一回事而不加區(qū)別。在TCV2.0中,變數(shù)名(識(shí)別字)的有效長(zhǎng)度為1~32個(gè)字元,缺省值為32。(3)C語(yǔ)言的關(guān)鍵字不能用作變數(shù)名。注意:C語(yǔ)言對(duì)英文字母的大小敏感,即同一字母的大小寫(xiě),被認(rèn)為是兩個(gè)不同的字元。習(xí)慣上,變數(shù)名和函數(shù)名中的英文字母用小寫(xiě),以增加可讀性。思考題:在C語(yǔ)言中,變數(shù)名total與變數(shù)名TOTAL、ToTaL、tOtAl等是同一個(gè)變數(shù)嗎?識(shí)別字命名的良好習(xí)慣──見(jiàn)名知意:所謂“見(jiàn)名知意”是指,通過(guò)變數(shù)名就知道變數(shù)值的含義。通常應(yīng)選擇能表示數(shù)據(jù)含義的英文單詞(或縮寫(xiě))作變數(shù)名,或中文拼音字頭作變數(shù)名。例如,name/xm(姓名)、sex/xb(性別)、age/nl(年齡)、salary/gz(工資)。4.變數(shù)的定義與初始化在C語(yǔ)言中,要求對(duì)所有用到的變數(shù),必須先定義、後使用;且稱(chēng)在定義變數(shù)的同時(shí)進(jìn)行賦初值的操作為變數(shù)初始化。(1)變數(shù)定義的一般格式

[存儲(chǔ)類(lèi)型]數(shù)據(jù)類(lèi)型變數(shù)名[,變數(shù)名2……];例如,floatradius,length,area;

(2)變數(shù)初始化的一般格式[存儲(chǔ)類(lèi)型]數(shù)據(jù)類(lèi)型變數(shù)名[=初值][,變數(shù)名2[=初值2]……];例如,floatradius=2.5,length,area;

2.4整型數(shù)據(jù)2.4.1整型變數(shù)

1.分類(lèi)

根據(jù)佔(zhàn)用記憶體位元組數(shù)的不同,整型變數(shù)又分為4類(lèi):(1)基本整型(類(lèi)型關(guān)鍵字為int)。(2)短整型(類(lèi)型關(guān)鍵字為short[int])。(3)長(zhǎng)整型(類(lèi)型關(guān)鍵字為long[int])。(4)無(wú)符號(hào)整型。無(wú)符號(hào)型又分為無(wú)符號(hào)基本整型(unsigned[int])、無(wú)符號(hào)短整型(unsignedshort)和無(wú)符號(hào)長(zhǎng)整型(unsignedlong)三種,只能用來(lái)存儲(chǔ)無(wú)符號(hào)整數(shù)。2.佔(zhàn)用記憶體位元組數(shù)與值域

上述各類(lèi)型整型變數(shù)佔(zhàn)用的記憶體位元組數(shù),隨系統(tǒng)而異。在16位操作系統(tǒng)中,一般用2位元組表示一個(gè)int型變數(shù),且long型(4位元組)≥int型(2位元組)≥short型(2位元組)。

顯然,不同類(lèi)型的整型變數(shù),其值域不同。佔(zhàn)用記憶體位元組數(shù)為n的(有符號(hào))整型變數(shù),其值域?yàn)椋?2n*8-1~(2n*8-1-1);無(wú)符號(hào)整型變數(shù)的值域?yàn)椋?~(2n*8-1)。

例如,PC機(jī)中的一個(gè)int型變數(shù),其值域?yàn)?22*8-1~(22*8-1-1),即-32768~32767;一個(gè)unsigned型變數(shù)的值域?yàn)椋?~(22*8-1),即0~65535。

2.4.2整型常量1.三種表示形式整型常量即整常數(shù),在C語(yǔ)言中可用三種形式表示:(1)十進(jìn)位。例如10、36。(2)八進(jìn)制(以數(shù)字0開(kāi)頭)。例如012。(3)十六進(jìn)制(以數(shù)字0+小寫(xiě)字母x開(kāi)頭)。例如0x36。2.分類(lèi)(1)基本整型。在16位機(jī)中,用2位元組存儲(chǔ),其數(shù)據(jù)範(fàn)圍與int型變數(shù)一樣。(2)長(zhǎng)整型(在數(shù)值後面加“L(l)”)。對(duì)超出基本整型值域的整型常量,可使用長(zhǎng)整型常量表示,其取值範(fàn)圍可達(dá)-231-(231-1)。例如,123l、315L等。3.類(lèi)型匹配規(guī)則類(lèi)型匹配規(guī)則為:一個(gè)整型常量,可以賦給能容納下其值的整型變數(shù)。例如,其值在-215--(215-1)的整型常量,可以賦給int型變數(shù)和longint型變數(shù);其值在-231--(231-1)的整型常量,就只能賦給longint型變數(shù)。注意:常量無(wú)unsigned型。但一個(gè)非負(fù)整型常量,只要它的值不超過(guò)相應(yīng)變數(shù)的值域(即取值範(fàn)圍),也可以賦給unsigned型變數(shù)。

2.5實(shí)型數(shù)據(jù)2.5.1實(shí)型變數(shù)

C語(yǔ)言的實(shí)型變數(shù),分為兩種:

(1)單精確度型。類(lèi)型關(guān)鍵字為float,一般占4位元組(32位)、提供7位有效數(shù)字。

(2)雙精度型。類(lèi)型關(guān)鍵字為double,一般占8?jìng)€(gè)位元組、提供15~16位有效數(shù)字。

2.5.2實(shí)型常量

1.表示形式

實(shí)型常量即實(shí)數(shù),在C語(yǔ)言中又稱(chēng)浮點(diǎn)數(shù),其值有兩種表達(dá)形式:

(1)十進(jìn)位形式。例如3.14、9.8。(2)指數(shù)形式:<尾數(shù)>E(e)<整型指數(shù)>。例如3.0E+5等。

2.關(guān)於類(lèi)型

實(shí)型常量不分float型和double型。一個(gè)實(shí)型常量,可以賦給一個(gè)實(shí)型變數(shù)(float型或double型)。

2.6字元型數(shù)據(jù)2.6.1字元常量1.字元常量的定義用一對(duì)單引號(hào)括起來(lái)的單個(gè)字元,稱(chēng)為字元常量。例如,‘A’、‘1’、‘+’等。2.轉(zhuǎn)義字元C語(yǔ)言還允許使用一種特殊形式的字元常量,就是以反斜杠“\”開(kāi)頭的轉(zhuǎn)義字元。

注意:如果反斜杠或單引號(hào)本身作為字元常量,必須使用轉(zhuǎn)義字元:‘\\’、‘\’‘。[案例2.1]用轉(zhuǎn)義字元輸出可列印字元和不可列印字元。

/*案例代碼檔案名:AL2_1.C*/

/*程式功能:用轉(zhuǎn)義字元輸出可列印字元和不可列印字元*/

main()

{printf(“\x4F\x4B\x21\n”); /*等價(jià)於printf(“OK!\n”);*/

printf(“\x15\xAB\n”);

}程式運(yùn)行結(jié)果如下:

OK!

§?

2.6.2字元變數(shù)字元變數(shù)的類(lèi)型關(guān)鍵字為char,一般佔(zhàn)用1位元組記憶體單元。1.變數(shù)值的存儲(chǔ)

字元變數(shù)用來(lái)存儲(chǔ)字元常量。將一個(gè)字元常量存儲(chǔ)到一個(gè)字元變數(shù)中,實(shí)際上是將該字元的ASCII碼值(無(wú)符號(hào)整數(shù))存儲(chǔ)到記憶體單元中。例如,charch1,ch2; /*定義兩個(gè)字元變數(shù):ch1,ch2*/ch1=’a’;ch2=’b’;/*給字元變數(shù)賦值*/2.特性字元數(shù)據(jù)在內(nèi)存中存儲(chǔ)的是字元的ASCII碼──一個(gè)無(wú)符號(hào)整數(shù),其形式與整數(shù)的存儲(chǔ)形式一樣(如圖2-4所示),所以C語(yǔ)言允許字元型數(shù)據(jù)與整型數(shù)據(jù)之間通用。(1)一個(gè)字元型數(shù)據(jù),既可以字元形式輸出,也可以整數(shù)形式輸出。

[案例2.2]字元變數(shù)的字元形式輸出和整數(shù)形式輸出。

/*案例代碼檔案名:AL2_2.C*/

/*程式功能:用字符形式和整數(shù)形式輸出字元變數(shù)*/

main()

{charch1,ch2;

ch1='a';ch2='b';printf(“ch1=%c,ch2=%c\n”,ch1,ch2);

printf(“ch1=%d,ch2=%d\n”,ch1,ch2);

}

程式運(yùn)行結(jié)果:

ch1=a,ch2=b

ch1=97,ch2=98

(2)允許對(duì)字元數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)就是對(duì)它們的ASCII碼值進(jìn)行算術(shù)運(yùn)算。

[案例2.3]字元數(shù)據(jù)的算術(shù)運(yùn)算。

/*案例代碼檔案名:AL2_3.C*/

/*程式功能:字元數(shù)據(jù)的算術(shù)運(yùn)算*/

main()

{charch1,ch2;

ch1=‘a(chǎn)’;ch2=‘B’;

/*字母的大小寫(xiě)轉(zhuǎn)換*/

printf(“ch1=%c,ch2=%c\n”,ch1-32,ch2+32);

/*用字符形式輸出一個(gè)大於256的數(shù)值*/

printf("ch1+200=%d\n",ch1+200);

printf("ch1+200=%c\n",ch1+200);

printf("ch1+256=%d\n",ch1+256);

printf("ch1+256=%c\n",ch1+256);

}程式運(yùn)行結(jié)果:ch1=A,ch2=bch1+200=297ch1+200=)ch1+256=353ch1+256=a

思考題:用字符形式輸出一個(gè)大於256的數(shù)值,會(huì)得到什麼結(jié)果?2.6.3字串常量1.字串常量的概念和字串長(zhǎng)度字串常量是用一對(duì)雙引號(hào)括起來(lái)的若干字元序列。字串中字元的個(gè)數(shù)稱(chēng)為字串長(zhǎng)度。長(zhǎng)度為0的字串(即一個(gè)字元都沒(méi)有的字串)稱(chēng)為空串,表示為“”(一對(duì)緊連的雙引號(hào))。例如,“Howdoyoudo.”、“Goodmorning.”等,都是字串常量,其長(zhǎng)度分別為14和13(空格也是一個(gè)字元)。

如果反斜杠和雙引號(hào)作為字串中的有效字元,則必須使用轉(zhuǎn)義字元。例如:(1)C:\msdos\v6.22→"C:\\msdos\\v6.22"

(2)Isay:"Goodbye!"→"Isay:\"Goodbye!\"“2.字串的存儲(chǔ)C語(yǔ)言規(guī)定:在存儲(chǔ)字串常量時(shí),由系統(tǒng)在字串的末尾自動(dòng)加一個(gè)‘\0’作為字串的結(jié)束標(biāo)誌。注意:在根源程式中書(shū)寫(xiě)字串常量時(shí),不必加結(jié)束字元‘\0’,否則畫(huà)蛇添足。

如果有一個(gè)字串為“CHINA”,則它在內(nèi)存中的實(shí)際存儲(chǔ)如下所示:最後一個(gè)字元'\0'是系統(tǒng)自動(dòng)加上的,它佔(zhàn)用6位元組而非5位元組記憶體空間。CHINA\0綜上所述,字元常量'A'與字串常量"A"是兩回事:(1)定界符不同:字元常量使用單引號(hào),而字串常量使用雙引號(hào);(2)長(zhǎng)度不同:字元常量的長(zhǎng)度固定為1,而字串常量的長(zhǎng)度,可以是0,也可以是某個(gè)整數(shù);(3)存儲(chǔ)要求不同:字元常量存儲(chǔ)的是字元的ASCII碼值,而字串常量,除了要存儲(chǔ)有效的字元外,還要存儲(chǔ)一個(gè)結(jié)束標(biāo)誌’\0’。

2.7算術(shù)運(yùn)算與算術(shù)運(yùn)算式在C語(yǔ)言中,除控制語(yǔ)句和輸入輸出函數(shù)外,其他所有基本操作都作為運(yùn)算符處理。

1.五種基本算術(shù)運(yùn)算符

+、-(減法/取負(fù))、*、/、%(求餘數(shù))(1)關(guān)於除法運(yùn)算/C語(yǔ)言規(guī)定:兩個(gè)整數(shù)相除,其商為整數(shù),小數(shù)部分被捨棄。例如,5/2=2。

(2)關(guān)於求餘數(shù)運(yùn)算%要求兩側(cè)的運(yùn)算元均為整型數(shù)據(jù),否則出錯(cuò)。

2.運(yùn)算式和算術(shù)運(yùn)算式(1)運(yùn)算式的概念用運(yùn)算符和括弧將運(yùn)算對(duì)象(常量、變數(shù)和函數(shù)等)連接起來(lái)的、符合C語(yǔ)言語(yǔ)法規(guī)則的式子,稱(chēng)為運(yùn)算式。

單個(gè)常量、變數(shù)或函數(shù),可以看作是運(yùn)算式的一種特例。將單個(gè)常量、變數(shù)或函數(shù)構(gòu)成的運(yùn)算式稱(chēng)為簡(jiǎn)單運(yùn)算式,其他運(yùn)算式稱(chēng)之為複雜運(yùn)算式。(2)算術(shù)運(yùn)算式的概念運(yùn)算式中的運(yùn)算符都是算術(shù)運(yùn)算符。例如,3+6*9、(x+y)/2-1等,都是算術(shù)運(yùn)算式。良好的根源程式書(shū)寫(xiě)習(xí)慣:在運(yùn)算式中,在雙目運(yùn)算符的左右兩側(cè)各加一個(gè)空格,可增強(qiáng)程式的可讀性。請(qǐng)比較運(yùn)算式“(x+y)/2–1”與“(x+y)/2–1”,您認(rèn)為哪個(gè)的可讀性更好一些?3.運(yùn)算符的優(yōu)先順序與結(jié)合性(1)C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先順序和結(jié)合性。所謂結(jié)合性是指,當(dāng)一個(gè)運(yùn)算元兩側(cè)的運(yùn)算符具有相同的優(yōu)先順序時(shí),該運(yùn)算元是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合。自左至右的結(jié)合方向,稱(chēng)為左結(jié)合性。反之,稱(chēng)為右結(jié)合性。結(jié)合性是C語(yǔ)言的獨(dú)有概念。除單目運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合性外,其他運(yùn)算符都是左結(jié)合性。(2)運(yùn)算式求值1)按運(yùn)算符的優(yōu)先順序高低次序執(zhí)行。例如,先乘除後加減。2)如果在一個(gè)運(yùn)算對(duì)象(或稱(chēng)運(yùn)算元)兩側(cè)的運(yùn)算符的優(yōu)先順序相同,則按C語(yǔ)言規(guī)定的結(jié)合方向(結(jié)合性)進(jìn)行。例如,算術(shù)運(yùn)算符的結(jié)合方向是“自左至右”,即:在執(zhí)行“a–b+c”時(shí),變數(shù)b先與減號(hào)結(jié)合,執(zhí)行“a-b”;然後再執(zhí)行加c的運(yùn)算。4.數(shù)據(jù)類(lèi)型轉(zhuǎn)換(1)在C語(yǔ)言中,整型、實(shí)型和字元型數(shù)據(jù)間可以混合運(yùn)算(因?yàn)樽衷獢?shù)據(jù)與整型數(shù)據(jù)可以通用)。如果一個(gè)運(yùn)算符兩側(cè)的運(yùn)算元的數(shù)據(jù)類(lèi)型不同,則系統(tǒng)按“先轉(zhuǎn)換、後運(yùn)算”的原則,首先將數(shù)據(jù)自動(dòng)轉(zhuǎn)換成同一類(lèi)型,然後在同一類(lèi)型數(shù)據(jù)間進(jìn)行運(yùn)算。轉(zhuǎn)換規(guī)則如圖2-5所示。1)橫向向左的箭頭,表示必須的轉(zhuǎn)換。char和short型必須轉(zhuǎn)換成int型,float型必須轉(zhuǎn)換成double型。2)縱向向上的箭頭,表示不同類(lèi)型的轉(zhuǎn)換方向。例如,int型與double型數(shù)據(jù)進(jìn)行混合運(yùn)算,則先將int型數(shù)據(jù)轉(zhuǎn)換成double型,然後在兩個(gè)同類(lèi)型的數(shù)據(jù)間進(jìn)行運(yùn)算,結(jié)果為double型。注意:箭頭方向只表示數(shù)據(jù)類(lèi)型由低向高轉(zhuǎn)換,不要理解為int型先轉(zhuǎn)換成unsigned型,再轉(zhuǎn)換成long型,最後轉(zhuǎn)換成double型。(2)除自動(dòng)轉(zhuǎn)換外,C語(yǔ)言也允許強(qiáng)制轉(zhuǎn)換。數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換的一般格式為:

(要轉(zhuǎn)換成的數(shù)據(jù)類(lèi)型)(被轉(zhuǎn)換的運(yùn)算式)當(dāng)被轉(zhuǎn)換的運(yùn)算式是一個(gè)簡(jiǎn)單運(yùn)算式時(shí),外面的一對(duì)圓括號(hào)可以缺省。例如,(double)a(等價(jià)於(double)(a))/*將變數(shù)a的值轉(zhuǎn)換成double型*/(int)(x+y) /*將x+y的結(jié)果轉(zhuǎn)換成int型*/(float)5/2(等價(jià)於(float)(5)/2)/*將5轉(zhuǎn)換成實(shí)型,再除以2(=2.5)*/(float)(5/2) /*將5整除2的結(jié)果(2)轉(zhuǎn)換成實(shí)型(2.0)*/注意:強(qiáng)制轉(zhuǎn)換類(lèi)型得到的是一個(gè)所需類(lèi)型的中間量,原運(yùn)算式類(lèi)型並不發(fā)生變化。例如,(double)a只是將變數(shù)a的值轉(zhuǎn)換成一個(gè)double型的中間量,其數(shù)據(jù)類(lèi)型並未轉(zhuǎn)換成double型。

2.8賦值運(yùn)算與賦值運(yùn)算式1.賦值運(yùn)算賦值符號(hào)“=”就是賦值運(yùn)算符,它的作用是將一個(gè)運(yùn)算式的值賦給一個(gè)變數(shù)。賦值運(yùn)算符的一般形式為:變數(shù)=賦值運(yùn)算式

例如,x=5

y=(float)5/2

如果運(yùn)算式值的類(lèi)型,與被賦值變數(shù)的類(lèi)型不一致,但都是數(shù)值型或字元型時(shí),系統(tǒng)自動(dòng)地將運(yùn)算式的值轉(zhuǎn)換成被賦值變數(shù)的數(shù)據(jù)類(lèi)型,然後再賦值給變數(shù)。

思考題:假設(shè)變數(shù)num的數(shù)據(jù)類(lèi)型為float,其值為2.5,則執(zhí)行“num=(int)num”後,num的值等於多少?2.複合賦值運(yùn)算複合賦值運(yùn)算符是由賦值運(yùn)算符之前再加一個(gè)雙目運(yùn)算符構(gòu)成的。複合賦值運(yùn)算的一般格式為:變數(shù)雙目運(yùn)算符=運(yùn)算式└──┬──┘複合賦值運(yùn)算符它等價(jià)於:變數(shù)=變數(shù)雙目運(yùn)算符(運(yùn)算式)。當(dāng)運(yùn)算式為簡(jiǎn)單運(yùn)算式時(shí),運(yùn)算式外的一對(duì)圓括號(hào)才可缺省,否則可能出錯(cuò)。例如,x+=3 /*等價(jià)於x=x+3*/y*=x+6 /*等價(jià)於y=y*(x+6),而不是y=y*x+6*/C語(yǔ)言規(guī)定的10種複合賦值運(yùn)算符如下:+=,-=,*=,/=,%=; /*複合算術(shù)運(yùn)算符(5個(gè))*/&=,^=,|=,<<=,>>=; /*複合位運(yùn)算符(5個(gè))*/3.賦值運(yùn)算式由賦值運(yùn)算符或複合賦值運(yùn)算符,將一個(gè)變數(shù)和一個(gè)運(yùn)算式連接起來(lái)的運(yùn)算式,稱(chēng)為賦值運(yùn)算式。(1)一般格式變數(shù)(複合)賦值運(yùn)算符運(yùn)算式(2)賦值運(yùn)算式的值任何一個(gè)運(yùn)算式都有一個(gè)值,賦值運(yùn)算式也不例外。被賦值變數(shù)的值,就是賦值運(yùn)算式的值。例如,“a=5”這個(gè)賦值運(yùn)算式,變數(shù)a的值“5”就是它的值。

2.9C語(yǔ)言特有的運(yùn)算和運(yùn)算符2.9.1自增(++)、自減(--)運(yùn)算

1.作用

自增運(yùn)算使單個(gè)變數(shù)的值增1,自減運(yùn)算使單個(gè)變數(shù)的值減1。

2.用法與運(yùn)算規(guī)則

自增、自減運(yùn)算符都有兩種用法:

(1)前置運(yùn)算──運(yùn)算符放在變數(shù)之前:++變數(shù)、--變數(shù)

先使變數(shù)的值增(或減)1,然後再以變化後的值參與其他運(yùn)算,即先增減、後運(yùn)算。

(2)後置運(yùn)算──運(yùn)算符放在變數(shù)之後:變數(shù)++、變數(shù)--

變數(shù)先參與其他運(yùn)算,然後再使變數(shù)的值增(或減)1,即先運(yùn)算、後增減。

[案例2.4]自增、自減運(yùn)算符的用法與運(yùn)算規(guī)則示例。/*案例代碼檔案名:AL2_4.C*//*程式功能:自增、自減運(yùn)算符的用法與運(yùn)算規(guī)則示例*/main(){intx=6,y;printf("x=%d\n",x); /*輸出x的初值*/y=++x; /*前置運(yùn)算*/printf("y=++x:x=%d,y=%d\n",x,y);y=x--; /*後置運(yùn)算*/printf("y=x--:x=%d,y=%d\n",x,y);}程式運(yùn)行結(jié)果:x=6y=++x:x=7,y=7y=x--:x=6,y=7

思考題:如果將案例“y=++x;”語(yǔ)句中的前置運(yùn)算改為後置(y=x++;),“y=x--;”語(yǔ)句中的後置運(yùn)算改為前置(y=--x;),程式運(yùn)行結(jié)果會(huì)如何?3.說(shuō)明(1)自增、自減運(yùn)算,常用於迴圈語(yǔ)句中,使迴圈控制變數(shù)加(或減)1,以及指針變數(shù)中,使指針指向下(或上)一個(gè)地址。(2)自增、自減運(yùn)算符,不能用於常量和運(yùn)算式。例如,5++、--(a+b)等都是非法的。(3)在運(yùn)算式中,連續(xù)使同一變數(shù)進(jìn)行自增或自減運(yùn)算時(shí),很容易出錯(cuò),所以最好避免這種用法。2.9.2逗號(hào)運(yùn)算(,)及其運(yùn)算式C語(yǔ)言提供一種用逗號(hào)運(yùn)算符“,”連接起來(lái)的式子,稱(chēng)為逗號(hào)運(yùn)算式。逗號(hào)運(yùn)算符又稱(chēng)順序求值運(yùn)算符。1.一般形式運(yùn)算式1,運(yùn)算式2,……,運(yùn)算式n2.求解過(guò)程自左至右,依次計(jì)算各運(yùn)算式的值,“運(yùn)算式n”的值即為整個(gè)逗號(hào)運(yùn)算式的值。例如,逗號(hào)運(yùn)算式“a=3*5,a*4”的值=60:先求解a=3*5,得a=15;再求a*4=60,所以逗號(hào)運(yùn)算式的值=60。又例如,逗號(hào)運(yùn)算式“(a=3*5,a*4),a+5”的值=20:先求解a=3*5,得a=15;再求a*4=60;最後求解a+5=20,所以逗號(hào)運(yùn)算式的值=20。注意:並不是任何地方出現(xiàn)的逗號(hào),都是逗號(hào)運(yùn)算符。很多情況下,逗號(hào)僅用作分隔符號(hào)。

2.10順序結(jié)構(gòu)程式設(shè)計(jì)為了讓電腦處理各種數(shù)據(jù),首先就應(yīng)該把源數(shù)據(jù)輸入到電腦中;電腦處理結(jié)束後,再將目標(biāo)數(shù)據(jù)資訊以人能夠識(shí)別的方式輸出。C語(yǔ)言中的輸入輸出操作,是由C語(yǔ)言編譯系統(tǒng)提供的庫(kù)函數(shù)來(lái)實(shí)現(xiàn)。1格式化輸出——printf()函數(shù)2格式化輸入——scanf()函數(shù)3單個(gè)字元輸入輸出——getchar()和putchar()函數(shù)4順序結(jié)構(gòu)程式設(shè)計(jì)良好的根源程式書(shū)寫(xiě)風(fēng)格──順序程式段左對(duì)齊

1格式化輸出——printf()函數(shù)printf()函數(shù)的作用:向電腦系統(tǒng)默認(rèn)的輸出設(shè)備(一般指終端或顯示器)輸出一個(gè)或多個(gè)任意類(lèi)型的數(shù)據(jù)。

一、

printf()函數(shù)的一般格式

[案例2.5]已知圓半徑radius=1.5,求圓周長(zhǎng)和圓面積。

/*案例代碼檔案名:AL2_5.C。*/

main()

{floatradius,length,area,pi=3.1415926;

radius=1.5;

length=2*pi*radius; /*求圓周長(zhǎng)*/

area=pi*radius*radius; /*求圓面積*/

printf(“radius=%f\n”,radius); /*輸出圓半徑*/

printf(“l(fā)ength=%7.2f,area=%7.2f\n”,length,area); /*輸出圓周長(zhǎng)、面積*/

}

程式運(yùn)行結(jié)果如下:

radius=1.500000length=9.42,area=7.07 printf()函數(shù)的一般格式如下:printf("格式字串"[,輸出項(xiàng)表]);

1.格式字串?!案袷阶执币卜Q(chēng)“轉(zhuǎn)換控制字串”,可以包含三種字元:(1)格式指示符。格式指示符的一般形式如下:%[標(biāo)誌][寬度][.精度][F|N|h|L][類(lèi)型]

常用的標(biāo)誌字元如表3-1所示,常用的寬度指示符如表3-2所示,常用的精度指示符如表3-3所示,長(zhǎng)度修飾符如表3-4所示,類(lèi)型轉(zhuǎn)換字元如表3-5所示。

(2)轉(zhuǎn)義字元例如,[案例2.5]中printf()函數(shù)中的'\n'就是轉(zhuǎn)義字元,輸出時(shí)產(chǎn)生一個(gè)“換行”操作。(3)普通字元──除格式指示符和轉(zhuǎn)義字元之外的其他字元。格式字串中的普通字元,原樣輸出。例如,[案例2.5]中“printf("radius=%f\n",radius);”語(yǔ)句中的“radius=”,“printf("length=%7.2f,area=%7.2f\n",length,area);”語(yǔ)句中的“l(fā)ength=”、“area=”等都是普通字元。

2.輸出項(xiàng)表輸出項(xiàng)表是可選的。如果要輸出的數(shù)據(jù)不止1個(gè),相鄰2個(gè)之間用逗號(hào)分開(kāi)。下麵的printf()函數(shù)都是合法的:(1)printf("Iamastudent.\n");

(2)printf("%d",3+2);

(3)printf("a=%fb=%5d\n",a,a+3); 必須強(qiáng)調(diào):“格式字串”中的格式指示符,必須與“輸出項(xiàng)表”中、輸出項(xiàng)的數(shù)據(jù)類(lèi)型一致,否則會(huì)引起輸出錯(cuò)誤。

二、

格式指示符

輸出不同類(lèi)型的數(shù)據(jù),要使用不同的類(lèi)型轉(zhuǎn)換字元。

1.類(lèi)型轉(zhuǎn)換字元d──以帶符號(hào)的十進(jìn)位整數(shù)形式輸出。

[案例2.6]類(lèi)型轉(zhuǎn)換字元d的使用。/*案例代碼檔案名:AL2_6.C。*/main(){intnum1=123;longnum2=123456;/*用3種不同格式,輸出int型數(shù)據(jù)num1的值*/printf("num1=%d,num1=%5d,num1=%-5d,num1=%2d\n",num1,num1,num1,num1);/*用3種不同格式,輸出long型數(shù)據(jù)num2的值*/printf("num2=%ld,num2=%8ld,num2=%5ld\n",num2,num2,num2);printf("num1=%ld\n",num1);}

程式運(yùn)行結(jié)果如下:num1=123,num1=□□123,num1=123□□,num1=123num2=123456,num2=□□123456,num2=123456num1=16908411 對(duì)於整數(shù),還可用八進(jìn)制、無(wú)符號(hào)形式(%o(小寫(xiě)字母o))和十六進(jìn)制、無(wú)符號(hào)形式(%x)輸出。對(duì)於unsigned型數(shù)據(jù),也可用%u格式符,以十進(jìn)位、無(wú)符號(hào)形式輸出。所謂無(wú)符號(hào)形式是指,不論正數(shù)還是負(fù)數(shù),系統(tǒng)一律當(dāng)作無(wú)符號(hào)整數(shù)來(lái)輸出。例如,printf("%d,%o,%x\n",-1,-1,-1);2.類(lèi)型轉(zhuǎn)換字元f──以小數(shù)形式、按系統(tǒng)默認(rèn)的寬度,輸出單精確度和雙精度實(shí)數(shù)。[案例2.7]類(lèi)型轉(zhuǎn)換字元f的使用。/*案例代碼檔案名:AL2_7.C。*/main(){floatf=123.456;doubled1,d2;d1=1111111111111.111111111;d2=2222222222222.222222222;printf("%f,%12f,%12.2f,%-12.2f,%.2f\n",f,f,f,f,f);printf("d1+d2=%f\n",d1+d2);}

程式運(yùn)行結(jié)果如下:

123.456001,□□123.456001,□□□□□□123.46,123.46□□□□□□,123.46d1+d2=3333333333333.333010

本案例程式的輸出結(jié)果中,數(shù)據(jù)123.456001和3333333333333.333010中的001和010都是無(wú)意義的,因?yàn)樗鼈兂隽擞行?shù)字的範(fàn)圍。對(duì)於實(shí)數(shù),也可使用格式符%e,以標(biāo)準(zhǔn)指數(shù)形式輸出:尾數(shù)中的整數(shù)部分大於等於1、小於10,小數(shù)點(diǎn)占一位,尾數(shù)中的小數(shù)部分占5位;指數(shù)部分占4位(如e-03),其中e占一位,指數(shù)符號(hào)占一位,指數(shù)占2位,共計(jì)11位。也可使用格式符%g,讓系統(tǒng)根據(jù)數(shù)值的大小,自動(dòng)選擇%f或%e格式、且不輸出無(wú)意義的零。3.類(lèi)型轉(zhuǎn)換字元c──輸出一個(gè)字元(只占一列寬度)。[案例2.8]類(lèi)型轉(zhuǎn)換字元c的使用。/*案例代碼檔案名:AL2_8.C。*/main(){charc='A';inti=65;printf("c=%c,%5c,%d\n",c,c,c);printf("i=%d,%c",i,i);}程式運(yùn)行結(jié)果如下:

c=A,□□□□A,65i=65,A

需要強(qiáng)調(diào)的是:在C語(yǔ)言中,整數(shù)可以用字符形式輸出,字元數(shù)據(jù)也可以用整數(shù)形式輸出。將整數(shù)用字符形式輸出時(shí),系統(tǒng)首先求該數(shù)與256的餘數(shù),然後將餘數(shù)作為ASCII碼,轉(zhuǎn)換成相應(yīng)的字元輸出。4.類(lèi)型轉(zhuǎn)換字元s──輸出一個(gè)字串。[案例2.9]類(lèi)型轉(zhuǎn)換字元s的使用。/*案例代碼檔案名:AL2_9.C。*/main(){printf("%s,%5s,%-10s","Internet","Internet","Internet");printf("%10.5s,%-10.5s,%4.5s\n","Internet","Internet","Internet");}

程式運(yùn)行結(jié)果如下:Internet,Internet,Internet□□,□□□□□Inter,Inter□□□□□,Inter注意:系統(tǒng)輸出字元和字串時(shí),不輸出單引號(hào)和雙引號(hào)。

三、

使用說(shuō)明(1)printf()可以輸出常量、變數(shù)和運(yùn)算式的值。但格式控制中的格式說(shuō)明符,必須按從左到右的順序,與輸出項(xiàng)表中的每個(gè)數(shù)據(jù)一一對(duì)應(yīng),否則出錯(cuò)。例如,printf("str=%s,f=%d,i=%f\n","Internet",1.0/2.0,3+5,"CHINA");是錯(cuò)誤的。(2)格式字元x、e、g可以用小寫(xiě)字母,也可以用大寫(xiě)字母。使用大寫(xiě)字母時(shí),輸出數(shù)據(jù)中包含的字母也大寫(xiě)。除了x、e、g格式字元外,其他格式字元必須用小寫(xiě)字母。例如,%f不能寫(xiě)成%F。(3)格式字元緊跟在“%”後面就作為格式字元,否則將作為普通字元使用(原樣輸出)。例如,“printf(”c=%c,f=%f\n“,c,f);”中的第一個(gè)c和f,都是普通字元。

2格式化輸入——scanf()函數(shù)scanf()函數(shù)是用來(lái)從外部輸入設(shè)備向電腦主機(jī)輸入數(shù)據(jù)的。

一、

scanf()函數(shù)的一般格式

[案例2.10]已知圓柱體的底半徑radius=1.5,高h(yuǎn)igh=2.0,求其體積。

/*案例代碼檔案名:AL2_10.C。*/

main()

{floatradius=1.5,high=2.0,pi=3.14159,vol;

vol=pi*radius*radius*high;/*求體積*/

printf(“vol=%7.2f\n”,vol); /*輸出求出的體積*/

}

[案例2.11]已知圓柱體的底半徑為radius,高為high,求其體積。/*案例代碼檔案名:AL2_11.C。*//*功能:說(shuō)明函數(shù)scanf()的格式及作用。*/main(){floatradius,high,vol,pi=3.1415926;printf("Pleaseinputradius&high:");scanf("%f%f",&radius,&high); /*從鍵盤(pán)輸入兩個(gè)實(shí)數(shù)賦給變數(shù)r,h*/vol=pi*radius*radius*high;printf("radius=%7.2f,high=%7.2f,vol=%7.2f\n",radius,high,vol);}

程式運(yùn)行結(jié)果如下:

Pleaseinputradius&high:1.5□2.0↙radius=□□□1.50,high=□□□2.00,vol=□□14.14

在程式中給電腦提供數(shù)據(jù),可以用賦值語(yǔ)句,也可以用輸入函數(shù)。在C語(yǔ)言中,可使用scanf()函數(shù),通過(guò)鍵盤(pán)輸入,給電腦同時(shí)提供多個(gè)、任意的數(shù)據(jù)。1.scanf()函數(shù)的一般格式scanf("格式字串",輸入項(xiàng)首地址表);(1)格式字串。格式字串可以包含3種類(lèi)型的字元:格式指示符、空白字元(空格、Tab鍵和回車(chē)鍵)和非空白字元(又稱(chēng)普通字元)。格式指示符與printf()函數(shù)的相似,空白字元作為相鄰2個(gè)輸入數(shù)據(jù)的缺省分隔符號(hào),非空白字元在輸入有效數(shù)據(jù)時(shí),必須原樣一起輸入。(2)輸入項(xiàng)首地址表──由若干個(gè)輸入項(xiàng)首地址組成,相鄰2個(gè)輸入項(xiàng)首地址之間,用逗號(hào)分開(kāi)。輸入項(xiàng)首地址表中的地址,可以是變數(shù)的首地址,也可以是字元數(shù)組名或指針變數(shù)。變數(shù)首地址的表示方法:&變數(shù)名其中“&”是地址運(yùn)算符。例如,[案例2.11]中的“&radius”是指變數(shù)radius在內(nèi)存中的首地址。

2.scanf()函數(shù)的功能:從鍵盤(pán)上接收格式化輸入。運(yùn)行[案例2.11]的程式時(shí),從鍵盤(pán)上輸入2個(gè)實(shí)數(shù),分別存入&radius、&high起始的存儲(chǔ)單元中,即輸入兩個(gè)實(shí)數(shù)分別賦給radius和high。

二、

格式指示符格式指示符的一般形式為:%[*][寬度][F|N][h|l]類(lèi)型字元

1.類(lèi)型字元類(lèi)型字元如表3-6所示。例如,在[案例3.7]的scanf()函數(shù)語(yǔ)句中,格式字串“%f%f”。

2.寬度n

指定該項(xiàng)輸入數(shù)據(jù)所占列數(shù)為n。換句話說(shuō),讀取輸入數(shù)據(jù)中相應(yīng)的n位,但按需要的位數(shù)賦給相應(yīng)的變數(shù),多餘部分被捨棄。例如,scanf("%3c%3c",&ch1,&ch2);printf("ch1=%c,ch2=%c\n",ch1,ch2);

假設(shè)輸入“abcdefg”,則系統(tǒng)將讀取的“abc”中的“a”賦給變數(shù)ch1;將讀取的“def”中的“d”賦給變數(shù)ch2,所以printf()函數(shù)的輸出結(jié)果為:ch1=a,ch2=d。3.賦值抑制字元*表示本輸入項(xiàng)對(duì)應(yīng)的數(shù)據(jù)讀入後,不賦給相應(yīng)的變數(shù)(該變數(shù)由下一個(gè)格式指示符輸入)。例如,scanf("%2d%*2d%3d",&num1,&num2);printf("num1=%d,num2=%d\n",num1,num2);

假設(shè)輸入“123456789”,則系統(tǒng)將讀取“12”並賦值給num1;讀取“34”、但捨棄掉(“*”的作用);讀取“567”並賦值給num2。所以,printf()函數(shù)的輸出結(jié)果為:num1=12,num2=567。

4.類(lèi)型修飾符──F、N、h、l。其含義與printf()中的一樣,分別為遠(yuǎn)指針、近指針、短整型和長(zhǎng)整型。

三、

數(shù)據(jù)輸入操作

1.如果相鄰2個(gè)格式指示符之間,不指定數(shù)據(jù)分隔符號(hào)(如逗號(hào)、冒號(hào)等),則相應(yīng)的2個(gè)輸入數(shù)據(jù)之間,至少用一個(gè)空格分開(kāi),或者用Tab鍵分開(kāi),或者輸入1個(gè)數(shù)據(jù)後,按回車(chē),然後再輸入下1個(gè)數(shù)據(jù)。例如,scanf("%d%d",&num1,&num2);

假設(shè)給num1輸入12,給num2輸入36,則正確的輸入操作為:12□36↙

或者:12↙36↙

注:使用“↙”符號(hào)表示按回車(chē)鍵操作,在輸入數(shù)據(jù)操作中的作用是,通知系統(tǒng)輸入操作結(jié)束。2.“格式字串”中出現(xiàn)的普通字元(包括轉(zhuǎn)義字元形式的字元),務(wù)必原樣輸入。例如,scanf("%d,%d",&num1,&num2);

假設(shè)給num1輸入12,給num2輸入36,正確的輸入操作為:12,36↙

另外,scanf()函數(shù)中、格式字串內(nèi)的轉(zhuǎn)義字元(如\n),系統(tǒng)並不把它當(dāng)轉(zhuǎn)義字元來(lái)解釋?zhuān)瑥亩a(chǎn)生一個(gè)控制操作,而是將其視為普通字元,所以也要原樣輸入。例如:scanf("num1=%d,num2=%d\n",&num1,&num2);

假設(shè)給num1輸入12,給num2輸入36,正確的輸入操作為:

num1=12,num2=36\n↙

提高人機(jī)交互性建議:為改善人機(jī)交互性,同時(shí)簡(jiǎn)化輸入操作,在設(shè)計(jì)輸入操作時(shí),一般先用printf()函數(shù)輸出一個(gè)提示資訊,再用scanf()函數(shù)進(jìn)行數(shù)據(jù)輸入。例如,將scanf("num1=%d,num2=%d\n",&num1,&num2);改為:

printf("num1=");scanf("%d",&num1);printf("num2=");scanf("%d",&num2);3.輸入數(shù)據(jù)時(shí),遇到以下情況,系統(tǒng)認(rèn)為該數(shù)據(jù)結(jié)束:(1)遇到空格,或者回車(chē)鍵,或者Tab鍵。(2)遇到輸入域?qū)挾冉Y(jié)束。例如“%3d”,只取3列。(3)遇到非法輸入。例如,在輸入數(shù)值數(shù)據(jù)時(shí),遇到字母等非數(shù)值符號(hào)(數(shù)值符號(hào)僅由數(shù)字字元0-9、小數(shù)點(diǎn)和正負(fù)號(hào)構(gòu)成)。4.使用格式說(shuō)明符“%c”輸入單個(gè)字元時(shí),空格和轉(zhuǎn)義字元均作為有效字元被輸入。例如,scanf("%c%c%c",&ch1,&ch2,&ch3);printf("ch1=%c,ch2=%c,ch3=%c\n",ch1,ch2,ch3);

假設(shè)輸入:A□B□C↙,則系統(tǒng)將字母'A'賦值給ch1,空格'□'賦值給ch2,字母'B'賦值給ch3。

3單個(gè)字元輸入輸出——getchar()和putchar()函數(shù)一、

單個(gè)字元的輸出──putchar()函數(shù)[案例2.12]putchar()函數(shù)的格式和使用方法。/*案例代碼檔案名:AL2_12.C*//*功能:說(shuō)明putchar()函數(shù)的格式和使用方法。*/#include"stdio.h" /*編譯預(yù)處理命令:檔包含*/main(){charch1='N',ch2='E',ch3='W';putchar(ch1);putchar(ch2);putchar(ch3); /*輸出*/putchar('\n');putchar(ch1);putchar('\n'); /*輸出ch1的值,並換行*/putchar('E');putchar('\n'); /*輸出字元'E',並換行*/putchar(ch3);putchar('\n');}

程式運(yùn)行結(jié)果如下:

NEWNEW1.putchar()函數(shù)的格式:

putchar(ch);

其中ch可以是一個(gè)字元變數(shù)或常量,也可以是一個(gè)轉(zhuǎn)義字元。

2.putchar()函數(shù)的作用:向終端輸出一個(gè)字元。(1)putchar()函數(shù)只能用於單個(gè)字元的輸出,且一次只能輸出一個(gè)字元。另外,從功能角度來(lái)看,printf()函數(shù)可以完全代替putchar()函數(shù)。(2)在程式中使用putchar()函數(shù),務(wù)必牢記:在程式(或檔)的開(kāi)頭加上編譯預(yù)處理命令(也稱(chēng)包含命令),即:

#include"stdio.h"

表示要使用的函數(shù),包含在標(biāo)準(zhǔn)輸入輸出(stdio)頭檔(.h)中。二、

單個(gè)字元的輸入──getchar()函數(shù)[案例2.13]說(shuō)明getchar()函數(shù)的格式和作用。/*案例代碼檔案名:AL2_13.C*//*功能:說(shuō)明getchar()函數(shù)的格式和作用。*/#include"stdio.h" /*檔包含*/main(){charch;printf("Pleaseinputtwocharacter:");ch=getchar(); /*輸入1個(gè)字元並賦給ch*/putchar(ch);putchar('\n');putchar(getchar()); /*輸入一個(gè)字元並輸出*/putchar('\n');}

程式運(yùn)行情況如下:

Pleaseinputtwocharacters:ab↙ab1.getchar()函數(shù)的格式:getchar();2.getchar()函數(shù)的作用:從系統(tǒng)隱含的輸入設(shè)備(如鍵盤(pán))輸入一個(gè)字元。另外,從功能角度來(lái)看,scanf()函數(shù)可以完全代替getchar()函數(shù)。(1)getchar()函數(shù)只能用於單個(gè)字元的輸入,一次輸入一個(gè)字元。(2)程式中要使用getchar()函數(shù),必須在程式(或檔)的開(kāi)頭加上編譯預(yù)處理命令:

#include"stdio.h“

4順序結(jié)構(gòu)程式設(shè)計(jì)

在順序結(jié)構(gòu)程式中,各語(yǔ)句(或命令)是按照位置的先後次序,順序執(zhí)行的,且每個(gè)語(yǔ)句都會(huì)被執(zhí)行到。

[案例2.14]輸入任意三個(gè)整數(shù),求它們的和及平均值。

/*案例代碼檔案名:AL2_14.C*/

/*功能:設(shè)計(jì)一個(gè)順序結(jié)構(gòu)程式,求三個(gè)整數(shù)的和及平均值。*/

main()

{intnum1,num2,num3,sum;

floataver;

printf("Pleaseinputthreenumbers:");

scanf("%d,%d,%d",&num1,&num2,&num3);/*輸入

溫馨提示

  • 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)論