版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《C語(yǔ)言程序設(shè)計(jì)》教案總課時(shí)數(shù):114適用專(zhuān)業(yè):計(jì)算機(jī)應(yīng)用技術(shù)、計(jì)算機(jī)網(wǎng)絡(luò)系(部)名稱(chēng):軟件工程系教研室名稱(chēng):修訂時(shí)間:授課日期:第1周周一5—8周三1—2第2周周一5—8周三1—2授課類(lèi)型:演示、講解、練習(xí)、輔導(dǎo)課時(shí):12教學(xué)內(nèi)容:1、C語(yǔ)言的歷史和特色2、C程序結(jié)構(gòu)3、C程序的開(kāi)發(fā)過(guò)程教學(xué)目標(biāo):1、了解C語(yǔ)言的產(chǎn)生過(guò)程2、掌握C程序結(jié)構(gòu)3、掌握C程序開(kāi)發(fā)過(guò)程4、掌握用C運(yùn)行一個(gè)C程序教學(xué)重點(diǎn):1、掌握C程序的基本結(jié)構(gòu)構(gòu)成2、學(xué)會(huì)用C運(yùn)行一個(gè)C程序教學(xué)難點(diǎn):掌握C程序的開(kāi)發(fā)過(guò)程教學(xué)過(guò)程:內(nèi)容講授學(xué)生實(shí)踐作業(yè)布置新課內(nèi)容預(yù)告教學(xué)手段:多媒體教學(xué)軟件+個(gè)別輔導(dǎo)作業(yè):第1章C語(yǔ)言概述C語(yǔ)言是國(guó)際上廣泛流行的一門(mén)高級(jí)程序設(shè)計(jì)語(yǔ)言,具有語(yǔ)言簡(jiǎn)潔、使用方便靈活、移植性好、能直接對(duì)系統(tǒng)硬件和外圍接口進(jìn)行控制等特點(diǎn)。本章將簡(jiǎn)要地介紹它的產(chǎn)生過(guò)程和特點(diǎn)、C程序結(jié)構(gòu)及C程序的上機(jī)步驟,以便對(duì)C語(yǔ)言有一個(gè)概括的認(rèn)識(shí)。1.1C語(yǔ)言的歷史和特色一、歷史1.1960年出現(xiàn)了60。2.1963年和1967年,在60的基礎(chǔ)上推出了和語(yǔ)言更接近于硬件。3.1970年美國(guó)貝爾實(shí)驗(yàn)室對(duì)語(yǔ)言做了進(jìn)一步簡(jiǎn)化,設(shè)計(jì)了B語(yǔ)言,并用B語(yǔ)言編寫(xiě)了第一個(gè)操作系統(tǒng)。4.在1972年至1973年間,貝爾實(shí)驗(yàn)室的在B語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出C語(yǔ)言。二、特色1.簡(jiǎn)潔緊湊,使用方便靈活C語(yǔ)言一共只有32個(gè)關(guān)鍵字、9種控制語(yǔ)句,程序書(shū)寫(xiě)自由,壓縮了一切不必要的成分,語(yǔ)言簡(jiǎn)練。2.運(yùn)算符豐富C語(yǔ)言有34種運(yùn)算符和15個(gè)等級(jí)的運(yùn)算優(yōu)先順序,使表達(dá)式類(lèi)型多樣化,可以實(shí)現(xiàn)在其它語(yǔ)言中難以實(shí)現(xiàn)的運(yùn)算。3.數(shù)據(jù)類(lèi)型豐富C語(yǔ)言的數(shù)據(jù)類(lèi)型有整型、實(shí)型、字符型、數(shù)組類(lèi)型、指針類(lèi)型、結(jié)構(gòu)體類(lèi)型、聯(lián)合體類(lèi)型及枚舉類(lèi)型等,能用來(lái)實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運(yùn)算。4.模塊化結(jié)構(gòu)C語(yǔ)言用函數(shù)作為程序的模塊單位,便于實(shí)現(xiàn)程序的模塊化,而且便于模塊間相互調(diào)用及傳遞數(shù)據(jù)。5.語(yǔ)法限制少和程序設(shè)計(jì)自由度大C語(yǔ)言允許程序編寫(xiě)者有較大的自由度,放寬了以往高級(jí)語(yǔ)言嚴(yán)格的語(yǔ)法檢查,較好地處理了“限制”與“靈活”這一對(duì)矛盾。6.比較接近硬件C語(yǔ)言允許直接訪問(wèn)物理地址,能進(jìn)行位操作,能實(shí)現(xiàn)匯編語(yǔ)言的大部分功能,可以直接對(duì)硬件進(jìn)行操作。7.生成目標(biāo)代碼質(zhì)量高、程序執(zhí)行效率高一般只比匯編程序生成的目標(biāo)代碼效率低10%―20%。8.可移植性好基本上不做修改就能用于各種型號(hào)的計(jì)算機(jī)和各種操作系統(tǒng)。1.2C程序結(jié)構(gòu)下面列出幾個(gè)簡(jiǎn)單的C程序來(lái)說(shuō)明C程序的結(jié)構(gòu)特征。例1.1輸出一行信息。(){("C!\n");}該程序的作用是輸出一行信息:C表示“主函數(shù)”;函數(shù)體用大括號(hào){}括起來(lái)。本例題中主函數(shù)僅包含一個(gè)語(yǔ)句,該語(yǔ)句由()輸出函數(shù)構(gòu)成。括號(hào)內(nèi)雙引號(hào)中的字符串按原樣輸出;′\n′是換行符,即在輸出"C!"后回車(chē)換行;語(yǔ)句后面有一個(gè)分號(hào),表示該語(yǔ)句結(jié)束,這個(gè)分號(hào)必不可少。例1.2計(jì)算兩個(gè)數(shù)之和。()/*求兩個(gè)數(shù)之和*/{a;/*定義3個(gè)整型變量*/123;/*以下3行為C語(yǔ)句*/321;;("\n");}該程序的作用是求兩個(gè)整數(shù)a和b之和,并在屏幕上輸出。程序中,/*……*/表示注釋部分,對(duì)編譯和運(yùn)行不起作用。第3行是變量說(shuō)明,使用的a、b和為整型()變量。第4行是兩個(gè)賦值語(yǔ)句,使a的值為123,b為321。第5行使的值為,第6行的是輸入輸出的“格式說(shuō)明”,表示“十進(jìn)制整數(shù)類(lèi)型”,函數(shù)中括號(hào)內(nèi)最右端的是要輸出的變量,當(dāng)然它的值為444。例1.3比較兩個(gè)數(shù)的大小。()/*主函數(shù),功能輸入兩個(gè)整數(shù),判斷后輸出較大的數(shù)*/{a;/*定義3個(gè)整型變量*/("");/*輸入變量a和b的值*/();("\n");/*輸出c的值*/}(y)/*定義()函數(shù),函數(shù)值為整型,為形式參數(shù)、整形變量*/{z;/*定義()函數(shù)內(nèi)部用到的變量z為整數(shù)*/(x>y);/*將中較大的值賦給z*/;(z);/*將z值返回。通過(guò)()函數(shù)帶回調(diào)用處*/}該程序的作用是從鍵盤(pán)輸入兩個(gè)整數(shù),然后在屏幕上輸出它們中較大值的數(shù)。程序的第5行是調(diào)用()函數(shù),在調(diào)用過(guò)程中將實(shí)際參數(shù)a和b的值,分別傳遞給()函數(shù)中的形式參數(shù)x和y,然后得到一個(gè)返回值(z的值),并把這個(gè)值賦給變量c。運(yùn)行情況如下:2,8↙8從以上幾個(gè)例題,可以看到C程序的結(jié)構(gòu)特征。1.C程序是由函數(shù)構(gòu)成的。一個(gè)C程序至少有一個(gè)()函數(shù),也可以包含一個(gè)()函數(shù)和若干個(gè)其它函數(shù)。2.一個(gè)函數(shù)有兩部分構(gòu)成。函數(shù)說(shuō)明部分,即函數(shù)的第一行,包括函數(shù)類(lèi)型、函數(shù)名、形參類(lèi)型、形參名。函數(shù)體,由一對(duì)大括號(hào){}括起來(lái)的語(yǔ)句集合。函數(shù)體一般包括有聲明部分和執(zhí)行部分,聲明部分用于定義所用到的變量,執(zhí)行部分由若干語(yǔ)句組成。3.一個(gè)C程序總是從()函數(shù)開(kāi)始執(zhí)行,而不管()在源程序中的位置,執(zhí)行完主函數(shù)中的所有語(yǔ)句后,程序就結(jié)束。4.每個(gè)語(yǔ)句和變量定義的最后必須要有一個(gè)分號(hào),分號(hào)是C語(yǔ)句的必要組成部分。5.C語(yǔ)言本身沒(méi)有提供輸入和輸出語(yǔ)句,輸入輸出操作是通過(guò)庫(kù)函數(shù)()、()等函數(shù)來(lái)實(shí)現(xiàn)的。6.C語(yǔ)言用/*……*/對(duì)程序進(jìn)行注釋?zhuān)?和*之間不允許留有空格,/*和*/應(yīng)當(dāng)一一對(duì)應(yīng)匹配,注釋部分允許出現(xiàn)在程序中的任何位置上。程序中加一些注釋?zhuān)梢栽黾映绦虻目勺x性。1.3C程序的開(kāi)發(fā)過(guò)程用C語(yǔ)句編寫(xiě)的程序稱(chēng)為“源程序”。1.C程序開(kāi)發(fā)的4個(gè)基本步驟一般C程序開(kāi)發(fā)要經(jīng)歷4個(gè)基本步驟:編輯——編譯——連接——運(yùn)行(1)編輯使用字處理軟件或編輯工具將源程序以文本文件形式保存到磁盤(pán),源程序文件名由用戶(hù)自己選定,但擴(kuò)展名必須為""。(2)編譯編譯的功能就是調(diào)用“編譯程序”,將已編輯好的源程序翻譯成二進(jìn)制的目標(biāo)代碼。如果源程序沒(méi)有語(yǔ)法錯(cuò)誤將產(chǎn)生一個(gè)與源程序同名,以""為擴(kuò)展名的目標(biāo)程序。(3)連接編譯后產(chǎn)生的目標(biāo)程序往往形成多個(gè)模塊,還要和庫(kù)函數(shù)進(jìn)行連接才能運(yùn)行,連接過(guò)程是使用系統(tǒng)提供的“連接程序”運(yùn)行的。連接后,產(chǎn)生以""為擴(kuò)展名的可執(zhí)行程序。(4)運(yùn)行可執(zhí)行程序生成后,就可以在操作系統(tǒng)的支持下運(yùn)行,若執(zhí)行結(jié)果達(dá)到預(yù)期的目的,則開(kāi)發(fā)工作到此完成,否則,要進(jìn)一步地經(jīng)過(guò)以上過(guò)程以取得最終的正確結(jié)果。2.使用C開(kāi)發(fā)程序的方法現(xiàn)在,多數(shù)的C程序開(kāi)發(fā)使用一個(gè)集成C開(kāi)發(fā)工具來(lái)完成。下面簡(jiǎn)單介紹使用C開(kāi)發(fā)程序的方法。(1)C的目錄及文件C應(yīng)裝入磁盤(pán)的某一目錄下,例如,放在c盤(pán)的根目錄下一級(jí)子目錄下,C安裝完成后,磁盤(pán)上將增加以下目錄及文件:子目錄(c:\):其中包括、、等執(zhí)行文件。子目錄(c:\\):其中包括、、等頭文件。子目錄(c:\\):其中包括、、1等庫(kù)函數(shù)文件。子目錄(c:\):其中包括運(yùn)行時(shí)所需的信息。通過(guò)執(zhí)行命令就可以進(jìn)入C環(huán)境,如果用戶(hù)的當(dāng)前目錄是C所在的子目錄,則只需從鍵盤(pán)輸入“”命令即可。C:\>↙(2)C集成環(huán)境作簡(jiǎn)單介紹,它包括以下幾個(gè)方面的內(nèi)容:主菜單窗口編輯窗口信息窗口功能鍵提示行3.用C運(yùn)行第一個(gè)C程序下面介紹使用C編輯和運(yùn)行一個(gè)簡(jiǎn)單的C程序的操作步驟:(1)編輯或修改源程序。在編輯窗口鍵入一下源程序:(){("C");}然后執(zhí)行“”命令;或按“F2”鍵存盤(pán)。(2)編譯與連接源程序。執(zhí)行“”命令或直接按下F9鍵,即可一次完成編譯與連接。(3)運(yùn)行程序。按“F10”鍵返回主菜單,用光標(biāo)移動(dòng)鍵將亮條移到“”菜單選項(xiàng)回車(chē)或按下“9”鍵,即可運(yùn)行剛生成的可執(zhí)行文件。此時(shí)C工作窗口消失,屏幕上顯示程序運(yùn)行結(jié)果:C若發(fā)現(xiàn)運(yùn)行結(jié)果不對(duì),可再按“F10”鍵回工作窗口,重復(fù)上述步驟。(4)運(yùn)行程序后查看程序的運(yùn)行結(jié)果。(5)退出C,按“”鍵,系統(tǒng)即退出環(huán)境。本章小結(jié)本章對(duì)C語(yǔ)言進(jìn)行了總體介紹,對(duì)學(xué)生的要求是掌握基本概念,學(xué)習(xí)的過(guò)程要緊密結(jié)合本章的知識(shí)要點(diǎn):1.程序的構(gòu)成,()函數(shù)和其他函數(shù)。2.頭文件、數(shù)據(jù)說(shuō)明、函數(shù)的開(kāi)始和結(jié)束標(biāo)志。3.源程序的書(shū)寫(xiě)格式。4.C語(yǔ)言的風(fēng)格。授課日期:第3周周三1—2第4周周一5—8周三1—2第5周周一5—8周三1—2授課類(lèi)型:演示、講解、練習(xí)、輔導(dǎo)課時(shí):14教學(xué)內(nèi)容:1、常量和變量2、整型數(shù)據(jù)3、實(shí)型數(shù)據(jù)4、字符型數(shù)據(jù)5、變量的初始化6、運(yùn)算符和表達(dá)式教學(xué)目標(biāo):1、掌握常量與變量的書(shū)寫(xiě)和定義2、掌握三種基本數(shù)據(jù)類(lèi)型3、掌握運(yùn)算符和表達(dá)式的使用4、掌握順序結(jié)構(gòu)程序設(shè)計(jì)的方法教學(xué)重點(diǎn):1、三種基本數(shù)據(jù)類(lèi)型的定義和使用2、各種運(yùn)算符的使用教學(xué)難點(diǎn):1、運(yùn)算符的使用2、使用順序結(jié)構(gòu)編程教學(xué)過(guò)程:內(nèi)容講授學(xué)生實(shí)踐作業(yè)布置新課內(nèi)容預(yù)告教學(xué)手段:多媒體教學(xué)軟件+個(gè)別輔導(dǎo)作業(yè):1、編程序,用函數(shù)讀入兩個(gè)字符給c1、c2,然后分別用函數(shù)和函數(shù)輸出這兩個(gè)字符。上機(jī)運(yùn)行此程序,比較和函數(shù)輸出字符的特點(diǎn)。2、試編寫(xiě)程序,從鍵盤(pán)輸入一個(gè)大寫(xiě)字母,要求改用小寫(xiě)字母輸出。第2章順序結(jié)構(gòu)程序設(shè)計(jì)順序結(jié)構(gòu)是一組按書(shū)寫(xiě)順序執(zhí)行的語(yǔ)句。本章將主要介紹程序中用到的一些基本要素(常量、變量、運(yùn)算符、表達(dá)式和輸入輸出語(yǔ)句等),以及基本的數(shù)據(jù)類(lèi)型(整型、實(shí)型和字符型)。2.1常量和變量一、常量1.常量:在程序運(yùn)行的過(guò)程中,其值不能被改變的量。如2、4、-1.6等。2.分類(lèi):普通常量和符號(hào)常量。3.符號(hào)常量:用一個(gè)標(biāo)識(shí)符代表一個(gè)常量,這樣的標(biāo)識(shí)符稱(chēng)為符號(hào)常量。如用代表3.1415926。4.注意:符號(hào)常量的值在其作用域內(nèi)不能改變,也不能再被賦值。如在程序中,對(duì)重新賦值:=2;這樣是不允許的。二、變量1.變量C語(yǔ)言規(guī)定在程序運(yùn)行的過(guò)程中,其值可以改變的量,稱(chēng)為變量。2.標(biāo)識(shí)符:用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類(lèi)型名和文件名的有效字符序列。3.C語(yǔ)言規(guī)定:標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。一般變量名的長(zhǎng)度不能超過(guò)8個(gè)字符。如下面是合法的標(biāo)識(shí)符,也是合法的變量名:,,,,,,1_2_3,;下面是不合法的標(biāo)識(shí)符和變量名:,$123,#33,3D64,a>,。在C語(yǔ)言中,要求對(duì)所有用到的變量作強(qiáng)制定義,也就是″先定義,后使用″。2.2整型數(shù)據(jù)一、整型常量C語(yǔ)言整型常數(shù)可用以下三種形式表示:1.十進(jìn)制整數(shù):數(shù)碼直接開(kāi)頭的十進(jìn)制數(shù)。2.八進(jìn)制整數(shù):以0開(kāi)頭的常量是八進(jìn)制數(shù)。3.十六進(jìn)制整數(shù):以0x開(kāi)頭的數(shù)是16進(jìn)制數(shù)。二、整型變量1.整型變量的分類(lèi)整型變量可分為:基本型、短整型、長(zhǎng)整型和無(wú)符號(hào)型四種,其定義的關(guān)鍵字如下:(1)基本型,以表示。范圍為-32768~32767,即-215~(215-1)。(2)短整型,以或表示。范圍與基本型相同。(3)長(zhǎng)整型,以或表示。若一個(gè)整型常量后面加上一個(gè)字母l或L,則認(rèn)為是型常量。范圍為-2147483648~214783647即-231~(231-1)(4)無(wú)符號(hào)型,在實(shí)際應(yīng)用中變量的值常常是正的,如年齡、工資、成績(jī)等,因此可以將變量定義為″無(wú)符號(hào)″類(lèi)型。無(wú)符號(hào)型又分為:①無(wú)符號(hào)整型,以或表示。范圍:0~65535,即0~(216-1)。②無(wú)符號(hào)短整型,以表示。范圍:0~65535即0~(216-1)。③無(wú)符號(hào)長(zhǎng)整型,以表示。范圍:0~4294967295即0~(232-1)。2.整型變量的定義變量的定義格式為:數(shù)據(jù)類(lèi)型變量表列;其中若定義多個(gè)同類(lèi)型的變量,則用逗號(hào)分開(kāi)。例:;(指定變量為整型);(指定變量為無(wú)符號(hào)短整型);(指定變量為長(zhǎng)整型)3.整型數(shù)據(jù)的輸入整型變量鍵盤(pán)輸入,是通過(guò)函數(shù)實(shí)現(xiàn)的,函數(shù)是數(shù)據(jù)輸入函數(shù),格式為:(格式控制,地址表列);例如:(″%d%d″);(1)格式控制是用雙引號(hào)括起來(lái)的字符串,由″%″和格式字符組成,作用是將輸入數(shù)據(jù)轉(zhuǎn)換為指定的格式輸入。(2)格式字符,對(duì)于不同的數(shù)據(jù)用不同的格式字符。d格式符是用來(lái)輸入十進(jìn)制整數(shù)的。因?yàn)楸竟?jié)問(wèn)題中變量a,b是整型變量,所以輸入時(shí),用了d格式符。(3)中的″&″是″地址運(yùn)算符″,是指a在內(nèi)存中的地址。上面函數(shù)的作用是:將a、b的值放到a,b在內(nèi)存的地址單元中去。所以,在該問(wèn)題中,若輸入:35↙則輸出結(jié)果為a+b=84.整型數(shù)據(jù)的輸出整型數(shù)據(jù)的輸出用函數(shù)來(lái)實(shí)現(xiàn)。如(″a+b=%d″,c);函數(shù)的格式為:(格式控制,輸出表列);(1)格式控制和輸入函數(shù)的格式控制基本一致。(2)輸出表列是需要輸出的數(shù)據(jù)或表達(dá)式。(3)在輸出整型數(shù)據(jù)時(shí),格式字符如下:①%d,按整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。②%,m為輸出字段的寬度,如果輸出數(shù)據(jù)的位數(shù)小于m則左端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出。例如:(″%44d″);若a=123,d=12345,則輸出結(jié)果為:V123,12345(注:V表示空格字符,下同)③,輸出長(zhǎng)整型數(shù)據(jù)。如:a=135790;(″%8″);輸出結(jié)果為:135790一個(gè)型數(shù)據(jù)可以用或格式輸出。④,輸出型數(shù)據(jù),即無(wú)符號(hào)類(lèi)型,如u;則u在輸出的時(shí)候,應(yīng)該用u格式控制符,則輸出時(shí)應(yīng)使用語(yǔ)句:(″″);例2.1從鍵盤(pán)輸入任意一個(gè)整數(shù),輸出這個(gè)數(shù)的平方的值。(){a;s;(″″);s=a*a;(″s=%\n″);}2.3實(shí)型數(shù)據(jù)一、實(shí)型常量實(shí)數(shù)在C語(yǔ)言中,又稱(chēng)浮點(diǎn)數(shù)。實(shí)數(shù)有兩種表示形式:1.十進(jìn)制數(shù)形式。由數(shù)字和小數(shù)點(diǎn)組成(注意必須有小數(shù)點(diǎn))。2.指數(shù)形式。但注意字母e(或E)之前必須有數(shù)字,且e后面指數(shù)必須為整數(shù),如e3、2.1e3.5、3、e都不是合法的指數(shù)形式。二、實(shí)型變量在本節(jié)問(wèn)題中,已知兩個(gè)數(shù)是實(shí)數(shù),則兩數(shù)之和與積也必定為實(shí)數(shù),所以需要設(shè)四個(gè)實(shí)型變量,分別為。定義語(yǔ)句為:;C實(shí)型變量分為:1.單精度型(型)一個(gè)型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié)(32位),在C中,單精度實(shí)數(shù)的范圍約為-1038~1038之間并提供7位有效位;小于10-38的數(shù)被處理成零值。2.雙精度型(型)一個(gè)型數(shù)據(jù)在內(nèi)存中占8個(gè)字節(jié),雙精度實(shí)數(shù)的數(shù)值范圍約為-10308~10308。并提供15~16位有效位,具體精確多少位與機(jī)器有關(guān);小于10-308的數(shù)被處理成零值。三、實(shí)型數(shù)據(jù)的輸入和輸出1.實(shí)型數(shù)據(jù)的輸入實(shí)型數(shù)據(jù)的輸入也用函數(shù)實(shí)現(xiàn)的,格式符使用的是f字符,以小數(shù)的形式輸入數(shù)據(jù),也可以使用e字符,以指數(shù)的形式輸入數(shù)據(jù)。如本節(jié)問(wèn)題中的(″″);2.實(shí)型數(shù)據(jù)的輸出實(shí)型數(shù)據(jù)的輸出用函數(shù)實(shí)現(xiàn),格式符使用f字符,以小數(shù)的形式輸出數(shù)據(jù)。輸出時(shí)應(yīng)注意:(1):不指定字段寬度,整數(shù)部分會(huì)全部輸出,并輸出6位小數(shù)。(2):指定輸出數(shù)據(jù)共占m列,其中有n位小數(shù)。如果數(shù)值長(zhǎng)度小于m,則左端補(bǔ)空格。(3)%-:指定輸出數(shù)據(jù)共占m列,其中有n位小數(shù)。如果數(shù)值長(zhǎng)度小于m,則右端補(bǔ)空格。(4)若是雙精度型變量輸出時(shí)應(yīng)用格式控制,如f;輸出時(shí)應(yīng)使用語(yǔ)句:(″″);2.4字符型數(shù)據(jù)一、字符常量1.字符常量C語(yǔ)言的字符常量是用一對(duì)單引號(hào)括起來(lái)的單個(gè)字符。如:′a′、′b′、′x′、′D′、′′、′$′等都是字符常量。2.轉(zhuǎn)義字符除了這樣的字符常量外,C語(yǔ)言還允許用一種特殊形式的字符常量,就是以一個(gè)′\′開(kāi)頭的字符序列.例如,前面已經(jīng)用到,在函數(shù)中的′\n′,它表示一個(gè)″換行″符。例2.2字符常量的輸出。(){(″c\n\″);}運(yùn)行結(jié)果:c二、字符變量在本節(jié)問(wèn)題中,設(shè)了兩個(gè)字符型變量c1和c2。定義形式如下:c12;它表示c1和c2為字符型變量,各可以放一個(gè)字符??梢杂孟旅嬲Z(yǔ)句對(duì)c12賦值:c1=′a′;;c2=′b′;因此在內(nèi)存中一個(gè)字符變量只占一個(gè)字節(jié)。三、字符數(shù)據(jù)的存儲(chǔ)形式字符在內(nèi)存中存儲(chǔ)的不是字符本身,而是它的碼,例如字符′a′的碼為97,′b′的碼為98。則字符的存儲(chǔ)形式與整數(shù)的存儲(chǔ)形式是類(lèi)似的。C語(yǔ)言使字符型數(shù)據(jù)和整型數(shù)據(jù)是通用的。例2.3(){a12;a1=97;a2=98;(″\n″12);(″\n″12);}程序運(yùn)行時(shí)輸出如下:ab9798字符型數(shù)據(jù)和整型數(shù)據(jù)是通用的,但應(yīng)該注意字符數(shù)據(jù)只占一個(gè)字節(jié),它只能存放0~255范圍內(nèi)的整數(shù)。例2.4大小寫(xiě)字母的轉(zhuǎn)換(){a12;a1=′a′;a2=′b′;a1=a1-32;a2=a2-32;(″\n″12);}運(yùn)行結(jié)果為:AB程序的作用是將兩個(gè)小寫(xiě)字母a和b轉(zhuǎn)換成大寫(xiě)字母A和B。′a′的碼為97,而′A′為65,′b′為98,′B′為66。從碼表中可以看到每一個(gè)小寫(xiě)字母比它相應(yīng)的大寫(xiě)字母的碼大32。四、字符型數(shù)據(jù)的輸入和輸出1.函數(shù)和函數(shù)例2.5″″(){c;c=();(c);}在運(yùn)行時(shí),如果從鍵盤(pán)輸入字符′a′a↙(輸入′a′后,按回車(chē)鍵)a(輸出變量c的值′a′)注意:()只能接收一個(gè)字符。()也只能向終端輸出一個(gè)字符。在使用函數(shù)和函數(shù)時(shí),程序的首部需使用預(yù)編譯命令″″″。2.函數(shù)和函數(shù)例2.6(){c12;(″″12);(″″12);}若輸入為↙則輸出為在使用函數(shù)和函數(shù)輸入輸出字符型數(shù)據(jù)時(shí),使用″″格式控制,用來(lái)輸入輸出單個(gè)字符。注意,在用″″格式輸入字符時(shí),空格將以有效字符輸入:(″″123);若輸入↙則將字符′a′送給c1,字符空格′V′送給c2,因?yàn)榭崭褚彩且粋€(gè)有效字符,字符′b′送給c3。只需要讀入一個(gè)字符,用了空格做間隔,所以會(huì)出現(xiàn)這樣的問(wèn)題。五、字符串常量字符串常量是用雙引號(hào)括住的字符序列。如:″″,″″,″a″等都是字符串常量??梢暂敵鲆粋€(gè)字符串,如(″.″);注意:不要將字符常量與字符串常量混淆?!鋋′是字符常量,″a″是字符串常量,二者不同。C規(guī)定:在每個(gè)字符串的結(jié)尾加一個(gè)“字符串結(jié)束標(biāo)志”以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。以′\0′作為字符串結(jié)束標(biāo)志?!鋅0′是碼為0的字符,從碼表中可以看到碼為0的字符是“空操作字符”不引起任何操作。2.5變量的初始化變量的初始化,就是在定義變量的同時(shí)給變量賦予初值??梢圆捎谜f(shuō)明變量的類(lèi)型,然后再賦值的方法,也可以對(duì)變量類(lèi)型說(shuō)明的同時(shí),給變量賦初值。1.先定義后賦值;a=2;b=5;c=10;2.定義和賦值同時(shí)進(jìn)行a=5;b=10;c=′a′;d=7.8;3.對(duì)幾個(gè)變量同時(shí)賦一個(gè)初值a1=10,a2=10,a3=10;不可以寫(xiě)成:a1=a2=a3=10;但是也可以寫(xiě)成:a1,a2,a3;a1=a2=a3=10;初始化不是在編譯階段完成的,而是在程序運(yùn)行時(shí)執(zhí)行本函數(shù)時(shí)賦以初值的。相當(dāng)于一個(gè)賦值語(yǔ)句。例如:a=10;相當(dāng)于:a;a=10;又如:=20;相當(dāng)于:;c=20;2.6運(yùn)算符和表達(dá)式一、算術(shù)運(yùn)算符和表達(dá)式例2.7已知正方形的長(zhǎng)和寬,求正方形的周長(zhǎng)。[分析]正方形的周長(zhǎng)公式為:l=2*(),已知正方形的長(zhǎng)和寬可以計(jì)算周長(zhǎng)。(){;a=3;b=4;l=2*();(″l=\n″);}1.基本的算術(shù)運(yùn)算符+(加法運(yùn)算符,或正值運(yùn)算符)-(減法運(yùn)算符,或負(fù)值運(yùn)算符)*(乘法運(yùn)算符)/(除法運(yùn)算符)%(模運(yùn)算符,或求余運(yùn)算符)注意:(1)兩個(gè)整數(shù)相除結(jié)果為整數(shù)。但是如果相除的兩個(gè)數(shù)中,至少有一個(gè)為實(shí)數(shù),則結(jié)果為帶小數(shù)的商。(2)%模運(yùn)算符,要求操作數(shù)均為整型數(shù)據(jù),如7%4的值為3。2.算術(shù)表達(dá)式用算術(shù)運(yùn)算符和括號(hào)將操作數(shù)連接起來(lái)的,符合C語(yǔ)法規(guī)則的式子,稱(chēng)C算術(shù)表達(dá)式。在表達(dá)式求值時(shí),按運(yùn)算符的優(yōu)先級(jí)別高低次序執(zhí)行。例如:10+′a′+1.5-8765.12*′b′在進(jìn)行運(yùn)算時(shí),不同類(lèi)型的數(shù)據(jù)要先轉(zhuǎn)換成同一類(lèi)型,然后進(jìn)行運(yùn)算。3.強(qiáng)制類(lèi)型轉(zhuǎn)換可以用強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類(lèi)型。例如:()a(將a轉(zhuǎn)換成類(lèi)型)()()(將的值轉(zhuǎn)換成整型)()(5%3)(將5%3的值轉(zhuǎn)換成型)一般形式為:(類(lèi)型名)(表達(dá)式)注意:(1)類(lèi)型名應(yīng)用括號(hào)括起來(lái)。如()()(2)已知x;對(duì)于()x,x仍然是類(lèi)型,而整個(gè)表達(dá)式()x為整型。二、賦值運(yùn)算符和賦值表達(dá)式1.賦值符號(hào)賦值符號(hào)″=″就是賦值運(yùn)算符,將一個(gè)數(shù)據(jù)賦給一個(gè)變量。如″a=3″。2.類(lèi)型轉(zhuǎn)換如果賦值運(yùn)算符兩側(cè)的類(lèi)型不一致,要進(jìn)行類(lèi)型轉(zhuǎn)換。(1)將實(shí)型數(shù)據(jù)賦給整型變量時(shí),舍棄實(shí)數(shù)的小數(shù)部分。如i為整型變量,執(zhí)行″i=3.56″的結(jié)果是使i的值為3。(2)將整型數(shù)據(jù)賦給實(shí)型變量時(shí),數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中。3.復(fù)合的賦值運(yùn)算符常用的賦值運(yùn)算符有以下幾種:+=,-=,*=,/=,%=例如:a+=3等價(jià)于a=a+3x*=y(tǒng)+8等價(jià)于x=x*(y+8)x%=3等價(jià)于x=34.賦值表達(dá)式由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱(chēng)為″賦值表達(dá)式″。例如:a=b=c=5(賦值表達(dá)式值為5,a、b、c值均為5)a=5+(c=6)(表達(dá)式值為11,a值為11,c的值為6)a=(b=4)+(c=6)(表達(dá)式值為10,a值為10,b等于4,c等于6)三、逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)。如:3+5,6+8稱(chēng)為逗號(hào)表達(dá)式。逗號(hào)表達(dá)式的格式為:表達(dá)式1,表達(dá)式2逗號(hào)表達(dá)式的求解過(guò)程是:先求解表達(dá)式1,再求解表達(dá)式2,整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式2的值。例如逗號(hào)表達(dá)式a=3*5,a*4,先求解a=3*5,得a的值為15,然后求解a*4,得60。整個(gè)逗號(hào)表達(dá)式的值為60。課堂練習(xí)綜合實(shí)例例1輸入三角形的三條邊長(zhǎng),求三角形面積。(為了簡(jiǎn)單起見(jiàn),設(shè)輸入的三邊長(zhǎng)能構(gòu)成三角形)″″(){;(″″);s=1.0/2*();=(s*()*()*());(″a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n″);(″=%7.2f\n″);}運(yùn)行情況如下:3,4,6a=3.00,b=4.00,c=6.00,s=6.50=5.33例2從鍵盤(pán)輸入一個(gè)大寫(xiě)字母,要求改用小寫(xiě)字母輸出?!濉?){c12;c1=();(″\n″11);c2=c1+32;(″\n″22);}運(yùn)行情況如下:A↙A,65a,97本章小結(jié)本章在講解順序結(jié)構(gòu)程序設(shè)計(jì)方法的同時(shí),介紹了三種數(shù)據(jù)類(lèi)型。1.整型數(shù)據(jù)。主要了解整型數(shù)據(jù)的定義方法,根據(jù)使用整數(shù)的范圍選用定義整數(shù)變量的類(lèi)型。掌握整型數(shù)據(jù)的輸入輸出方法,主要使用d格式控制符。2.實(shí)型數(shù)據(jù)。主要掌握實(shí)型變量的不同定義方法,單精度數(shù)和雙精度數(shù)的表示范圍,實(shí)型數(shù)據(jù)的輸入輸出方法,主要使用f格式控制符。3.字符型數(shù)據(jù)。是由一對(duì)單引號(hào)括起來(lái)的單個(gè)字符,要注意,字符與字符串的區(qū)別。還講解了各種運(yùn)算符和表達(dá)式,主要掌握算術(shù)運(yùn)算符,在混合運(yùn)算中,要按照運(yùn)算符的優(yōu)先級(jí),結(jié)合方向運(yùn)算。作業(yè):1.編程序,用函數(shù)讀入兩個(gè)字符給c1、c2,然后分別用函數(shù)和函數(shù)輸出這兩個(gè)字符。上機(jī)運(yùn)行此程序,比較和函數(shù)輸出字符的特點(diǎn)。2.試編寫(xiě)程序,從鍵盤(pán)輸入一個(gè)大寫(xiě)字母,要求改用小寫(xiě)字母輸出。授課日期:第7周周一5—8周三1—2第8周周一5—8周三1—2第9周周一5—8周三1—2授課類(lèi)型:演示、講解、練習(xí)、輔導(dǎo)課時(shí):18教學(xué)內(nèi)容:1、關(guān)系運(yùn)算符和關(guān)系表達(dá)式2、邏輯運(yùn)算符和邏輯表達(dá)式3、語(yǔ)句4、語(yǔ)句教學(xué)目標(biāo):1、掌握關(guān)系運(yùn)算表達(dá)式2、掌握邏輯運(yùn)算表達(dá)式3、熟練掌握語(yǔ)句的使用4、掌握語(yǔ)句教學(xué)重點(diǎn):1、關(guān)系運(yùn)算符和關(guān)系表達(dá)式2、邏輯運(yùn)算符和邏輯表達(dá)式3、語(yǔ)句的使用教學(xué)難點(diǎn):1、掌握語(yǔ)句的使用2、語(yǔ)句的嵌套使用教學(xué)過(guò)程:內(nèi)容講授學(xué)生實(shí)踐作業(yè)布置新課內(nèi)容預(yù)告教學(xué)手段:多媒體教學(xué)軟件+個(gè)別輔導(dǎo)作業(yè):給學(xué)生寫(xiě)評(píng)語(yǔ),若學(xué)生成績(jī)?cè)?0~69分,則打印“及格”,70~89分打印“良好”,90~100分打印“優(yōu)秀”,60分以下打印“不及格”,請(qǐng)分別用語(yǔ)句和語(yǔ)句編程。第3章選擇結(jié)構(gòu)程序設(shè)計(jì)選擇結(jié)構(gòu),或稱(chēng)分支結(jié)構(gòu),是指對(duì)所給定的條件進(jìn)行判斷,然后決定選擇執(zhí)行不同的操作。本章主要介紹如何用C語(yǔ)言實(shí)現(xiàn)選擇結(jié)構(gòu)。C語(yǔ)言的選擇語(yǔ)句有兩類(lèi),一類(lèi)是語(yǔ)句,另一類(lèi)是語(yǔ)句,本章將分別進(jìn)行介紹。在介紹選擇結(jié)構(gòu)程序設(shè)計(jì)的同時(shí),還要介紹關(guān)系運(yùn)算符和關(guān)系表達(dá)式,邏輯運(yùn)算符和邏輯表達(dá)式等內(nèi)容。3.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式一、關(guān)系運(yùn)算符及其優(yōu)先次序1.關(guān)系運(yùn)算符C語(yǔ)言提供6種關(guān)系運(yùn)算符:<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)⑥(不等于)優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(低)2.關(guān)于優(yōu)先次序:(1)前4種關(guān)系運(yùn)算符(′<′,′<=′,′>′,′>=′)的優(yōu)先級(jí)別相同,后兩種也相同。前4種高于后2種。例如,′>′優(yōu)先于′==′。而′>′與′<′優(yōu)先級(jí)相同。(2)關(guān)系運(yùn)算符與算術(shù)運(yùn)算符、賦值運(yùn)算符的優(yōu)先級(jí)關(guān)系如下:算術(shù)運(yùn)算符(高)→關(guān)系運(yùn)算符(中)→賦值運(yùn)算符(低)例如:a>等效于a>()<c等效于=(b<c)>等效于(b>)(3)關(guān)系運(yùn)算符的結(jié)合方向是“自左向右”。注意:“等于”關(guān)系的運(yùn)算符“==”和“不等于”關(guān)系的運(yùn)算符“”與數(shù)學(xué)中的表示方法不同。例如,欲判斷x是否等于0,若寫(xiě)成:0則表示把0賦值給變量x,正確的寫(xiě)法為:=0。二、關(guān)系表達(dá)式1.關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、字符表達(dá)式等)連接起來(lái)的式子,稱(chēng)關(guān)系表達(dá)式。例:x>y,<18,′a′<′b′都為合法的關(guān)系表達(dá)式。2.關(guān)系表達(dá)式的值關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”。在C語(yǔ)言中:常用1表示“真”,用0表示“假”。例如,5,2,則:關(guān)系表達(dá)式a>b的值為“真”,表達(dá)式的值為1。關(guān)系表達(dá)式的值為“假”,表達(dá)式的值為0??梢詫㈥P(guān)系表達(dá)式的運(yùn)算結(jié)果(0或1)賦給一個(gè)整型變量或字符型變量,如41,下面的賦值語(yǔ)句是將1賦給變量c:>bc的值為1例3.1試求5>3>1的值。[分析]5>3>1相當(dāng)于(5>3)>1=1>1=0[說(shuō)明]根據(jù)關(guān)系運(yùn)算符的優(yōu)先級(jí)別高于賦值運(yùn)算符。3.2邏輯運(yùn)算符和邏輯表達(dá)式一、邏輯運(yùn)算符及其優(yōu)先次序1.邏輯運(yùn)算符C語(yǔ)言提供了3種邏輯運(yùn)算符:①!邏輯非②邏輯與③║邏輯或其中“”和“║”為“雙目(元)運(yùn)算符”,要求有兩個(gè)操作數(shù)(即運(yùn)算量),如(a<b)(x<),(a<b)║(x<)?!?!”是“一目(元)運(yùn)算符”,只需一個(gè)操作數(shù),如或!(a<b)。2.關(guān)于邏輯運(yùn)算符的優(yōu)先次序:(1)邏輯運(yùn)算符的優(yōu)先次序如下:?。ǚ牵ㄅc)→║(或),即“!”為三者中最高的。(2)邏輯運(yùn)算符中的“”和“║”低于關(guān)系運(yùn)算符,“!”高于算術(shù)運(yùn)算符。例如:(a>)(x>y)可寫(xiě)成:a>>y()║()可寫(xiě)成:║(3)邏輯運(yùn)算的結(jié)合方向是“自左向右”。二、邏輯表達(dá)式1.邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來(lái)的式子就是邏輯表達(dá)式。例如:*c,()║(c<0)均為邏輯表達(dá)式。2.邏輯表達(dá)式的值C語(yǔ)言編譯系統(tǒng)在給出邏輯運(yùn)算時(shí),以數(shù)值1代表“真”,以0代表“假”,但在判斷一個(gè)量是否為“真”時(shí),以非0代表“真”,即將一個(gè)非0的數(shù)值認(rèn)為是“真”,以0代表“假”。注意:(1)參與邏輯運(yùn)算的量不但可以是0和1,或者是0和非0的整數(shù),也可以是任何類(lèi)型的數(shù)據(jù),如字符型、實(shí)型或指針型。(2)如果在一個(gè)表達(dá)式中不同位置上出現(xiàn)數(shù)值,應(yīng)區(qū)分哪些是作為數(shù)值運(yùn)算或關(guān)系運(yùn)算的對(duì)象,哪些作為邏輯運(yùn)算的對(duì)象。(3)在邏輯表達(dá)式的求解中,并不是所有邏輯運(yùn)算符都需要執(zhí)行,有時(shí)只需執(zhí)行一部分運(yùn)算符就可以得到邏輯表達(dá)式的最后結(jié)果。例如:①只有x為真時(shí),才需要判斷y的值。只要x為假,就立即得出整個(gè)表達(dá)式為假。②x║y║z只要x為真(非0),就不必判斷y和x;當(dāng)x為假,才判斷y;x和y都為假才判斷z。3.3語(yǔ)句語(yǔ)句是選擇結(jié)構(gòu)的一種形式,又稱(chēng)為條件分支語(yǔ)句。它是通過(guò)對(duì)給定條件的判斷,來(lái)決定所要執(zhí)行的操作。C語(yǔ)言中提供了3種形式的語(yǔ)句:語(yǔ)句、語(yǔ)句和語(yǔ)句。一、問(wèn)題的提出[問(wèn)題]比較兩個(gè)數(shù)的大小,將兩個(gè)數(shù)中較大者賦給m。[分析]要比較兩個(gè)數(shù)的大小就要用到關(guān)系表達(dá)式,定義兩個(gè)變量a,b,如果a>b則將a的值賦給m,若a<b則將b的值賦給m,這里我們將用到語(yǔ)句來(lái)實(shí)現(xiàn)該項(xiàng)功能。(){;5;10;(a>b);;("\n");}程序運(yùn)行結(jié)果:10[說(shuō)明]在該問(wèn)題中我們借用了語(yǔ)句,通過(guò)條件來(lái)判斷應(yīng)該執(zhí)行哪條語(yǔ)句,充分體現(xiàn)出選擇結(jié)構(gòu)程序設(shè)計(jì)的思想。二、語(yǔ)句的三種形式1.語(yǔ)句語(yǔ)句是條件分支語(yǔ)句最基本的形式。格式:(表達(dá)式)語(yǔ)句功能:首先計(jì)算表達(dá)式的值,若表達(dá)式的值為“真”(非0),則執(zhí)行語(yǔ)句,若表達(dá)式的值為“假”(0),不執(zhí)行語(yǔ)句。其流程圖3.1(a)所示。例如:(x>y)("");2.語(yǔ)句語(yǔ)句是條件分支語(yǔ)句的標(biāo)準(zhǔn)使用形式。格式:(表達(dá)式)語(yǔ)句1語(yǔ)句2功能:首先計(jì)算表達(dá)式的值,若表達(dá)式的值為“真”(非0),則執(zhí)行語(yǔ)句1,若表達(dá)式的值為“假”(0),則執(zhí)行語(yǔ)句2。例如:(x>y)("");("");3.語(yǔ)句前面兩種語(yǔ)句一般都用于兩個(gè)分支的選擇結(jié)構(gòu)。對(duì)于多個(gè)分支選擇時(shí),可采用語(yǔ)句。格式:(表達(dá)式1)語(yǔ)句1(表達(dá)式2)語(yǔ)句2(表達(dá)式3)語(yǔ)句3┇(表達(dá)式1)語(yǔ)句1語(yǔ)句n功能:首先計(jì)算表達(dá)式1的值,若為“真”(非0),執(zhí)行語(yǔ)句1,否則進(jìn)行下一步判斷;若表達(dá)式2為真,執(zhí)行語(yǔ)句2,否則進(jìn)行下一步判斷……最后所有表達(dá)式都為假時(shí),執(zhí)行語(yǔ)句n。例如:(>89)′A′;(>79)′B′;(>69)′C′;(>59)′D′;′E′;關(guān)于語(yǔ)句的說(shuō)明:(1)后面圓括號(hào)中的表達(dá)式一般是關(guān)系表達(dá)式或邏輯表達(dá)式,用于描述選擇結(jié)構(gòu)的條件,但也可以是任意的數(shù)值類(lèi)型表達(dá)式(包括整型、實(shí)型、字符型、指針型數(shù)據(jù)表達(dá)式)。例如:(2)("!");是合法的,因?yàn)楸磉_(dá)式的值為2,非0,按“真”處理,執(zhí)行結(jié)果輸出“!”(2)第二種、第三種格式的語(yǔ)句中,在每個(gè)前面有一個(gè)分號(hào),整個(gè)語(yǔ)句結(jié)束處也有一個(gè)分號(hào)。這是由于分號(hào)是C語(yǔ)句中不可缺少的部分,這個(gè)分號(hào)是語(yǔ)句中的內(nèi)嵌語(yǔ)句所需要的。(3)在和后面可以只含有一個(gè)內(nèi)嵌的操作語(yǔ)句,也可以含有多個(gè)操作語(yǔ)句,此時(shí)應(yīng)用大括號(hào)“{}”將幾個(gè)語(yǔ)句括起來(lái),構(gòu)成一個(gè)復(fù)合語(yǔ)句,注意:復(fù)合語(yǔ)句的“{”和“}”之后不能加分號(hào)。例3.2輸入兩個(gè)實(shí)數(shù),按代數(shù)值由小到大輸出這兩個(gè)數(shù)。(){;("");(a>b){;;;}("5.2f5.2f");}程序運(yùn)行結(jié)果:2.25.7↙-5.70,2.20二、語(yǔ)句的嵌套在語(yǔ)句中有包含一個(gè)或多個(gè)語(yǔ)句稱(chēng)為語(yǔ)句的嵌套。要處理多重分支選擇結(jié)構(gòu)問(wèn)題,除了用語(yǔ)句外,還可以利用語(yǔ)句的嵌套來(lái)實(shí)現(xiàn)。說(shuō)明:(1)和的配對(duì)規(guī)則為:總是與它上面的最近的未配對(duì)的配對(duì)。(2)與的個(gè)數(shù)最好相同,從內(nèi)層到外層一一對(duì)應(yīng),以避免出錯(cuò)。(3)在嵌套內(nèi)的語(yǔ)句既可以是語(yǔ)句形式,也可以是語(yǔ)句形式,但最好使內(nèi)嵌語(yǔ)句也包含部分。如果與的個(gè)數(shù)不同,可以用花括號(hào)來(lái)確定配對(duì)關(guān)系。例如:(){()語(yǔ)句1}語(yǔ)句2這時(shí)“{}”限定了內(nèi)嵌語(yǔ)句的使用范圍,因此與第一個(gè)配對(duì)。例3.3有一函數(shù):-1(x<0)0(0)1(x>0)編一程序,輸入一個(gè)x值,輸出y值。(){;("");(x<0)1;(=0)0;1;("\n");}三、條件運(yùn)算符條件運(yùn)算符由兩個(gè)符號(hào)“?”和“:”組成,要求有3個(gè)操作對(duì)象,稱(chēng)三目(元)運(yùn)算符,它是C語(yǔ)言中唯一的三目運(yùn)算符。條件表達(dá)式的格式為:表達(dá)式1?表達(dá)式2:表達(dá)式3(a<b);說(shuō)明:(1)通常情況下,表達(dá)式1是關(guān)系表達(dá)式或邏輯表達(dá)式,用于描述條件表達(dá)式中的條件,表達(dá)式2和表達(dá)式3可以是常量、變量或表達(dá)式。例如:()′T′:′F′(a>b)("")("")等均為合法的條件表達(dá)式。(2)條件表達(dá)式的執(zhí)行順序:先求解表達(dá)式1,若為非0(真)則求解表達(dá)式2,此時(shí)表達(dá)式2的值就作為整個(gè)條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個(gè)條件表達(dá)式的值。(a<b);執(zhí)行結(jié)果就是將a和b二者中較小的賦給。(3)條件表達(dá)式的優(yōu)先級(jí)別僅高于賦值運(yùn)算符,而低于前面介紹過(guò)的所有運(yùn)算符。因此,(a<b);可直接寫(xiě)成:<;如果有a>1等效于a>:(1),而不等效于(a>)+1(4)條件運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆?。例如:x>01<01:0等效于x>01:(x<01:0)(5)表達(dá)式1、表達(dá)式2和表達(dá)式3的類(lèi)型可以不同,此時(shí)條件表達(dá)式的值的類(lèi)型為它們中較高的類(lèi)型。例3.4輸入一個(gè)字符,判別它是否大寫(xiě)字母,如果是,將它轉(zhuǎn)換成小寫(xiě)字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。(){;("a:\n");("");(>=′A′<=′Z′)(32);("");}程序運(yùn)行結(jié)果:a:A↙a[說(shuō)明]條件表達(dá)式中的(32),其中32是小寫(xiě)字母和大寫(xiě)字母Ⅱ碼的差值。3.4語(yǔ)句一、問(wèn)題的提出要求按照考試成績(jī)的等級(jí)()輸出百分制分?jǐn)?shù)段:鍵入′A′,輸出85~100;鍵入′B′,輸出70~84;鍵入′C′,輸出60~69;鍵入′D′,輸出<60;鍵入其他任意字符,輸出。(){;("");(){′A′:("85~100\n");′B′:("70~84\n");′C′:("60~69\n");′D′:("<60\n");:("\n");}}二、語(yǔ)句格式為:(表達(dá)式){常量表達(dá)式1:語(yǔ)句1常量表達(dá)式2:語(yǔ)句2┇常量表達(dá)式n:語(yǔ)句n:語(yǔ)句1}其中和語(yǔ)句1可以同時(shí)省略。說(shuō)明:(1)的表達(dá)式通常是一個(gè)整型或字符型變量,也允許是枚舉型變量,其結(jié)果為相應(yīng)的整數(shù)、字符或枚舉常量。后的常量表達(dá)式必須是與表達(dá)式對(duì)應(yīng)一致的整數(shù)、字符或枚舉常量。(2)語(yǔ)句中所有后面的常量表達(dá)式的值都必須互不相同。(3)語(yǔ)句中的和的出現(xiàn)次序是任意的。(4)由于語(yǔ)句中的“常量表達(dá)式”只是起語(yǔ)句標(biāo)號(hào)的作用,而不起條件判斷作用,即“只是開(kāi)始執(zhí)行處的入口標(biāo)號(hào)”。可以用一個(gè)語(yǔ)句來(lái)終止。將上面的結(jié)構(gòu)改寫(xiě)如下:(){′A′:("85~100\n");;′B′:("70~84\n");;′C′:("60~69\n");;′D′:("<60\n");;:("\n");}最后一個(gè)分支()可以不加語(yǔ)句。如果的值為′B′,則只輸出"70~84"。(5)每個(gè)的后面既可以是一個(gè)語(yǔ)句,也可以是多個(gè)語(yǔ)句,當(dāng)是多個(gè)語(yǔ)句的時(shí)候,也不需要用花括號(hào)括起來(lái)。(6)多個(gè)的后面可以共用一組執(zhí)行語(yǔ)句,如:(n){1:2:10;;┇}它表示當(dāng)1或2時(shí),都執(zhí)行下面兩個(gè)語(yǔ)句:10;;本章小結(jié)本章介紹了結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)之一選擇結(jié)構(gòu),另外還介紹了邏輯運(yùn)算等內(nèi)容,現(xiàn)將本章中的知識(shí)要點(diǎn)作一概括性小結(jié)。1.關(guān)系運(yùn)算。包括關(guān)系運(yùn)算符及其優(yōu)先性、關(guān)系表達(dá)式及其求值方法。2.邏輯運(yùn)算。包括邏輯運(yùn)算符及其優(yōu)先性、邏輯表達(dá)式及其求值方法。3.用語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)。包括的三種形式及其執(zhí)行流程、語(yǔ)句的嵌套。4.用語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。5.條件運(yùn)算符的使用。作業(yè):給學(xué)生寫(xiě)評(píng)語(yǔ),若學(xué)生成績(jī)?cè)?0~69分,則打印“及格”,70~89分打印“良好”,90~100分打印“優(yōu)秀”,60分以下打印“不及格”,請(qǐng)分別用語(yǔ)句和語(yǔ)句編程。授課日期:第10周周一5—8周三1—2第11周周一5—8周三1—2第12周周一5—8周三1—2第13周周一5—8周三1—2授課類(lèi)型:演示、講解、練習(xí)、輔導(dǎo)課時(shí):24教學(xué)內(nèi)容:1、三種循環(huán)語(yǔ)句2、循環(huán)的嵌套3、語(yǔ)句和語(yǔ)句4、幾種循環(huán)的比較教學(xué)目標(biāo):1、熟練掌握三種循環(huán)語(yǔ)句的使用2、學(xué)會(huì)使用循環(huán)的嵌套結(jié)構(gòu)3、使用語(yǔ)句和語(yǔ)句4、了解幾種循環(huán)的異同教學(xué)重點(diǎn):1、三種循環(huán)語(yǔ)句的使用2、三種循環(huán)的比較教學(xué)難點(diǎn):1、循環(huán)的嵌套使用2、使用循環(huán)結(jié)構(gòu)設(shè)計(jì)程序教學(xué)過(guò)程:內(nèi)容講授學(xué)生實(shí)踐作業(yè)布置新課內(nèi)容預(yù)告教學(xué)手段:多媒體教學(xué)軟件+個(gè)別輔導(dǎo)作業(yè):1、輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)。2、有1020個(gè)西瓜,第一天賣(mài)一半多兩個(gè),以后每天賣(mài)剩下的一半多兩個(gè),問(wèn)幾天以后能賣(mài)完?3、找出1~1000之間的所有水仙花數(shù)。所謂水仙花數(shù)是指一個(gè)3位數(shù)的立方和恰好等于該數(shù)本身。例如:153就是一個(gè)水仙花數(shù),因?yàn)?53=1*1*1+3*3*3+5*5*5。4、按下面的近似公式計(jì)算:1+1/11/21/3……+1……,使誤差小于一個(gè)給定的值。第4章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)之一,它與順序結(jié)構(gòu)、選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造單元。C語(yǔ)言提供了3種循環(huán)語(yǔ)句:語(yǔ)句、語(yǔ)句和語(yǔ)句,本章將分別進(jìn)行介紹。除此之外,還將介紹語(yǔ)句、語(yǔ)句的使用。4.1三種循環(huán)語(yǔ)句一、語(yǔ)句語(yǔ)句用來(lái)實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。格式為:(表達(dá)式){語(yǔ)句}功能:當(dāng)表達(dá)式的值為非0時(shí),執(zhí)行語(yǔ)句中的循環(huán)語(yǔ)句。說(shuō)明:(1)循環(huán)體如果包含一個(gè)以上的語(yǔ)句,應(yīng)該用大括號(hào)括起來(lái),以復(fù)合語(yǔ)句的形式出現(xiàn),否則語(yǔ)句范圍只到后面第一個(gè)分號(hào)處。(2)在循環(huán)中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句,即設(shè)置修改條件的語(yǔ)句。例如:1;如果無(wú)此語(yǔ)句,則i的值一直不變,循環(huán)永不結(jié)束,這就稱(chēng)為“死循環(huán)”。(3)語(yǔ)句的特點(diǎn)是先判斷表達(dá)式的值,然后執(zhí)行循環(huán)體中的語(yǔ)句,如果表達(dá)式的值一開(kāi)始為假(即值為0),則退出循環(huán),并轉(zhuǎn)入下一個(gè)語(yǔ)句執(zhí)行。例4.1求2+4+8+……+50的值。(){20;(i<=50){;2;}("");}程序運(yùn)行結(jié)果:2+4+8+…+50=650二、語(yǔ)句循環(huán)語(yǔ)句,用來(lái)實(shí)現(xiàn)“直到型”循環(huán)結(jié)構(gòu)。格式:{語(yǔ)句}(表達(dá)式);功能:先執(zhí)行一次指定的循環(huán)體語(yǔ)句,然后判斷表達(dá)式的值,當(dāng)表達(dá)式的值為非0時(shí),返回重新執(zhí)行該語(yǔ)句,如此反復(fù),直到表達(dá)式的值等于0為止,此時(shí)循環(huán)結(jié)束。說(shuō)明:(1)語(yǔ)句的特點(diǎn)是:先執(zhí)行語(yǔ)句,后判斷表達(dá)式的值。(2)如果語(yǔ)句的循環(huán)體部分是多個(gè)語(yǔ)句組成,則必須用左右大括號(hào)括起來(lái),使其形成復(fù)合語(yǔ)句。(3)圓括號(hào)后面有一個(gè)分號(hào)“;”,書(shū)寫(xiě)時(shí)不要忘記。例4.2用循環(huán)結(jié)構(gòu)來(lái)計(jì)算1+3+5+…+99的值。(){10;{;2;}(i<=100);("1+3+5+…+99\n");}程序運(yùn)行結(jié)果:2+3+5+…+99=2500例4.3求(1)+(2)+…+10(i<=10)的值,其中i由鍵盤(pán)輸入。(2)用語(yǔ)句編程(){0;("");{;1;}(i<=10);("");}[程序](1)用語(yǔ)句編程(){0;("");(i<=10){;1;}("");}程序運(yùn)行情況如下:1↙55再運(yùn)行一次結(jié)果為:11↙11程序運(yùn)行情況如下:1↙55再運(yùn)行一次結(jié)果為:11↙0顯然,當(dāng)輸入i的值小于或等于10,兩個(gè)程序運(yùn)行結(jié)果相同;當(dāng)i大于10時(shí),程序(1)一次也不執(zhí)行循環(huán)語(yǔ)句,程序(2)仍然執(zhí)行一次循環(huán)語(yǔ)句。語(yǔ)句和語(yǔ)句的區(qū)別:當(dāng)后面的表達(dá)式第一次的值為“真”時(shí),兩種循環(huán)得到的結(jié)果相同。否則,二者不相同(指二者具有相同的循環(huán)體的情況)。三、語(yǔ)句1.語(yǔ)句格式:(表達(dá)式1;表達(dá)式2;表達(dá)式3){語(yǔ)句}執(zhí)行過(guò)程:①先計(jì)算表達(dá)式1的值。②再計(jì)算表達(dá)式2的值,若其值為真,則執(zhí)行循環(huán)體一次;否則跳轉(zhuǎn)第⑤步。③然后計(jì)算表達(dá)式3的值。④回轉(zhuǎn)上面第②步。⑤結(jié)束循環(huán),執(zhí)行語(yǔ)句下面一個(gè)語(yǔ)句。說(shuō)明:(1)表達(dá)式1一般為賦值表達(dá)式,用于進(jìn)入循環(huán)之前給循環(huán)變量賦初值。(2)表達(dá)式2一般為關(guān)系表達(dá)式或邏輯表達(dá)式,用于執(zhí)行循環(huán)的條件判定,它與、循環(huán)中的表達(dá)式作用完全相同。(3)表達(dá)式3一般為賦值表達(dá)式或自增(1可表示成)、自減(1可表示成)表達(dá)式,用于修改循環(huán)變量的值。(4)如果循環(huán)體部分是多個(gè)語(yǔ)句組成的,則必須用大括號(hào)括起來(lái),使其成為一個(gè)復(fù)合語(yǔ)句。例4.4用循環(huán)結(jié)構(gòu)來(lái)計(jì)算1+2+3+…+10的值。[程序](){0;(1;i<=10;)1;("1+2+3+…+10\n");}程序運(yùn)行結(jié)果:1+2+3+…+10=55可以看出,此例的結(jié)果與用語(yǔ)句完全相同的。顯然,用語(yǔ)句簡(jiǎn)單、方便。對(duì)于以上語(yǔ)句的一般形式也可以改寫(xiě)為循環(huán)語(yǔ)句的形式:表達(dá)式1;(表達(dá)式2){循環(huán)語(yǔ)句;表達(dá)式3;}例如,以下語(yǔ)句程序段:(1;i<=5;){*i;("\n");}完全等價(jià)于下面的語(yǔ)句程序段:1;(i<=5){*i;("\n");;}2.語(yǔ)句表達(dá)式的進(jìn)一步說(shuō)明(1)語(yǔ)句的一般形式中的“表達(dá)式1”可以省略。但要注意省略表達(dá)式1時(shí),其后的分號(hào)不能省略。此時(shí),應(yīng)在語(yǔ)句之前給循環(huán)變量賦初值。例如:1;(;i<=100;);相當(dāng)于:(1;i<=100;);;(2)如果省略表達(dá)式2,即表示表達(dá)式2的值始終為真,循環(huán)將無(wú)終止地進(jìn)行下去。例如:(1;;)("");相當(dāng)于:1;(1){("");;}該循環(huán)無(wú)終止條件,將無(wú)限循環(huán)輸出1、2、3、4、5……。(3)如果省略表達(dá)式3,也將產(chǎn)生一個(gè)無(wú)窮循環(huán)。因此,程序設(shè)計(jì)者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束,可以將循環(huán)變量的修改部分(即表達(dá)式3)放在循環(huán)語(yǔ)句中控制。例如:(1;i<=100;){;;}上述語(yǔ)句中沒(méi)有表達(dá)式3,而是將表達(dá)式3(即)放在循環(huán)語(yǔ)句中,作用相同,都能使循環(huán)正常結(jié)束。(4)可以同時(shí)省略表達(dá)式1和表達(dá)式3,即省略了循環(huán)的初值和循環(huán)變量的修改部分,此時(shí)完全等價(jià)于語(yǔ)句。例如:(i<=10){("");;}相當(dāng)于:(;i<=10;){("");;}(5)3個(gè)表達(dá)式都可省略,如:(;;)相當(dāng)于:(1)即不設(shè)初值,不判斷條件(認(rèn)為表達(dá)式2為真值),循環(huán)變量不增值。無(wú)終止地執(zhí)行循環(huán)體。(6)在語(yǔ)句中,表達(dá)式1和表達(dá)式3也可以使用逗號(hào)表達(dá)式,即包含一個(gè)以上的簡(jiǎn)單表達(dá)式,中間用逗號(hào)間隔。在逗號(hào)表達(dá)式內(nèi)按從左至右求解,整個(gè)表達(dá)式的值為其中最右邊的表達(dá)式的值。例如:(1;i<=100;,;)相當(dāng)于:(1;i<=100;);(7)在語(yǔ)句中,表達(dá)式一般為關(guān)系表達(dá)式(如i<=10)或邏輯表達(dá)式(如x>0‖y<-4),但也可以是其他表達(dá)式(如字符表達(dá)式、數(shù)值表達(dá)式)。(8)語(yǔ)句的循環(huán)語(yǔ)句可以是空語(yǔ)句??照Z(yǔ)句用來(lái)實(shí)現(xiàn)延時(shí),即在程序執(zhí)行中等待一定的時(shí)間。需要注意的是,延時(shí)程序會(huì)因?yàn)橛?jì)算機(jī)速度的不同而使執(zhí)行的時(shí)間不同。如下面語(yǔ)句為延時(shí)程序的例子:(1;i<=1000;);注意以上語(yǔ)句最后的逗號(hào)不能省略,它代表一個(gè)空語(yǔ)句。4.2循環(huán)的嵌套一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱(chēng)為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),這就是多層循環(huán)。三種循環(huán):循環(huán)、循環(huán)和循環(huán)可以互相嵌套。例如下面幾種形式都是合法的。(;;){……(;;){……}}{……{……}();}();(){……(){……}}(){……{……}();}(;;){……(){……}}{……(;;){}……}();例4.5利用雙重循環(huán)結(jié)構(gòu)打印出9*9乘法表。(){i,j;(1;i<10;){(1;j<10;)("",i*j);("\n");}}4.3語(yǔ)句和語(yǔ)句一、語(yǔ)句格式:;功能:該語(yǔ)句可以使程序運(yùn)行時(shí)中途跳出循環(huán)體,即強(qiáng)制結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語(yǔ)句。例4.6求圓的面積。[分析]計(jì)算1到10的圓面積,直到s>100為止,當(dāng)s>100時(shí),執(zhí)行語(yǔ)句,提前終止循環(huán),即不再繼續(xù)執(zhí)行其余的幾次循環(huán)。3.1415926(){r;s;(1;r<=10;){*r*r;(s>100);}("");}[說(shuō)明](1)語(yǔ)句不能用于循環(huán)語(yǔ)句和語(yǔ)句之外的任何語(yǔ)句。(2)在多重循環(huán)的情況下,語(yǔ)句只能跳出一層循環(huán),即從當(dāng)前循環(huán)中跳出。二、語(yǔ)句格式:;功能:結(jié)束本次循環(huán),即跳出循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。語(yǔ)句和語(yǔ)句的區(qū)別是:語(yǔ)句只是結(jié)束本次循環(huán),而不終止整個(gè)循環(huán)的執(zhí)行;而語(yǔ)句則是強(qiáng)制終止整個(gè)循環(huán)過(guò)程。例4.7打印出數(shù)字0~10,但跳過(guò)(即不輸出)數(shù)字7。(){i;(0;i<=10;){(=7);("%5d");}}程序運(yùn)行結(jié)果為:01234568910[說(shuō)明](1)當(dāng)i等于7時(shí)執(zhí)行語(yǔ)句,它的作用是終止本次循環(huán),即跳過(guò)語(yǔ)句,故不輸出7。(2)如果程序中不用語(yǔ)句,循環(huán)體也可以改用一個(gè)語(yǔ)句處理:(7)("%5d");(3)如果在本例中將第7行“;”語(yǔ)句,改為“;”語(yǔ)句,則輸出結(jié)果為:0123456可以清楚地看出語(yǔ)句是終止整個(gè)循環(huán)過(guò)程,它與語(yǔ)句作用是截然不同的。4.4幾種循環(huán)的比較1.三種循環(huán)都可以用來(lái)出來(lái)處理同一問(wèn)題,一般情況下它們可以互相代替。2.和循環(huán),只在后面指定循環(huán)條件,在循環(huán)體中應(yīng)包含使循環(huán)趨于結(jié)束的語(yǔ)句(如,或1等)。循環(huán)可以在表達(dá)式3中包含使循環(huán)趨于結(jié)束的操作,甚至可以將循環(huán)體中的操作全部放到表達(dá)式3中。因此語(yǔ)句的功能更強(qiáng),凡用循環(huán)能完成,用循環(huán)都能實(shí)現(xiàn)。3.對(duì)于循環(huán)變量賦初值,語(yǔ)句和語(yǔ)句一般是在進(jìn)入循環(huán)結(jié)構(gòu)之前完成,而語(yǔ)句一般是在循環(huán)語(yǔ)句表達(dá)式1中現(xiàn)實(shí)變量的賦值。4.語(yǔ)句和語(yǔ)句都是先測(cè)試循環(huán)控制表達(dá)式,后執(zhí)行循環(huán)語(yǔ)句,語(yǔ)句則是先執(zhí)行循環(huán)語(yǔ)句,后測(cè)試循環(huán)控制表達(dá)式。5.循環(huán)、循環(huán)和循環(huán),可以用語(yǔ)句跳出循環(huán),用語(yǔ)句結(jié)束本次循環(huán)。本章小結(jié)本章重點(diǎn)介紹了結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)之一——循環(huán)結(jié)構(gòu),主要介紹了以下幾個(gè)方面:1.循環(huán)結(jié)構(gòu)的構(gòu)成形式、運(yùn)行流程與使用過(guò)程中的注意事項(xiàng)。2.循環(huán)結(jié)構(gòu)的構(gòu)成形式、運(yùn)行流程與使用過(guò)程中的注意事項(xiàng)。3.循環(huán)結(jié)構(gòu)的構(gòu)成形式、運(yùn)行流程與使用過(guò)程中的注意事項(xiàng)。4.3種循環(huán)結(jié)構(gòu)的比較,以及在結(jié)構(gòu)化程序設(shè)計(jì)中的靈活運(yùn)用和循環(huán)結(jié)構(gòu)的嵌套。5.其他流程控制語(yǔ)句的使用,包括語(yǔ)句、語(yǔ)句。作業(yè):1.輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)。2.有1020個(gè)西瓜,第一天賣(mài)一半多兩個(gè),以后每天賣(mài)剩下的一半多兩個(gè),問(wèn)幾天以后能賣(mài)完?3.找出1~1000之間的所有水仙花數(shù)。所謂水仙花數(shù)是指一個(gè)3位數(shù)的立方和恰好等于該數(shù)本身。例如:153就是一個(gè)水仙花數(shù),因?yàn)?53=1*1*1+3*3*3+5*5*5。4.按下面的近似公式計(jì)算:1+1/11/21/3……+1……,使誤差小于一個(gè)給定的值。授課日期:第14周周一5—8周三1—2第15周周一5—8周三1—2授課類(lèi)型:演示、講解、練習(xí)、輔導(dǎo)課時(shí):12教學(xué)內(nèi)容:1、一維數(shù)組的定義和引用2、二維數(shù)組的定義和引用3、字符數(shù)組的定義和引用教學(xué)目標(biāo):1、掌握一維數(shù)組的定義和引用2、學(xué)會(huì)二維數(shù)組的定義和引用3、掌握字符數(shù)組的定義和引用教學(xué)重點(diǎn):1、一維數(shù)組的定義和引用2、字符數(shù)組的定義和引用教學(xué)難點(diǎn):二維數(shù)組的定義和引用教學(xué)過(guò)程:內(nèi)容講授學(xué)生實(shí)踐作業(yè)布置新課內(nèi)容預(yù)告教學(xué)手段:多媒體教學(xué)軟件+個(gè)別輔導(dǎo)作業(yè):1、將一個(gè)數(shù)組中的值按逆序重新存放,例如,原來(lái)順序?yàn)?,6,5,4,1。要求改為1,4,5,6,8。2、用數(shù)組來(lái)處理求數(shù)列問(wèn)題。3、有一個(gè)3×4的矩陣,輸入數(shù)據(jù)后,求其主對(duì)角線之和。4、編一程序,將兩個(gè)字符串連接起來(lái),不要用函數(shù)。第5章數(shù)組本書(shū)前幾章介紹了C語(yǔ)言中幾種簡(jiǎn)單數(shù)據(jù)類(lèi)型。在本章中將介紹一種新的構(gòu)造類(lèi)型:數(shù)組。數(shù)組是一種最簡(jiǎn)單的構(gòu)造類(lèi)型,它包含著一組具有同一類(lèi)型的變量,這些變量在內(nèi)存中的存儲(chǔ)位置是連續(xù)的。在解決實(shí)際問(wèn)題時(shí)數(shù)組有著廣泛的應(yīng)用。本章介紹了C語(yǔ)言中一維數(shù)組、二維數(shù)組及字符數(shù)組的定義、初始化及使用方法等。5.1一維數(shù)組的定義和引用一、一維數(shù)組的定義C語(yǔ)言規(guī)定:數(shù)組必須先定義,后使用。一維數(shù)組的格式為:類(lèi)型說(shuō)明符數(shù)組名[常量表達(dá)式];例如:[10];它表示定義了一個(gè)名為的數(shù)組,該數(shù)組有10個(gè)元素,其存放的數(shù)據(jù)類(lèi)型應(yīng)為實(shí)型。說(shuō)明:(1)類(lèi)型說(shuō)明符用來(lái)說(shuō)明數(shù)組元素的類(lèi)型:,,或。(2)數(shù)組名的命名應(yīng)遵守標(biāo)識(shí)符的命名規(guī)則。(3)數(shù)組名后是用方括號(hào)括起來(lái)的常量表達(dá)式。常量表達(dá)式表示的是組元素的個(gè)數(shù),即數(shù)組的長(zhǎng)度。在上例中定義了數(shù)組[10],該數(shù)組有10個(gè)元素,其下標(biāo)從0開(kāi)始。注意:不要使用[10],因?yàn)樗皇窃摂?shù)組的元素。(4)常量表達(dá)式中可以包括常量和符號(hào)常量,不能包含變量,因?yàn)镃語(yǔ)言規(guī)定數(shù)組不能動(dòng)態(tài)定義。二、一維數(shù)組的初始化數(shù)組的初始化是指在定義數(shù)組時(shí)給數(shù)組元素賦初值。一維數(shù)組初始化的格式為:類(lèi)型說(shuō)明符數(shù)組名[常量表達(dá)式]={常量列表};例如a[5]={2,4,6,8,10};其作用是在定義數(shù)組的同時(shí)將常量2、4、6、8、10分別置于數(shù)組元素a[0]、a[1]、a[2]、a[3]、a[4]中。說(shuō)明:(1)常量列表可以是數(shù)值型、字符常量或字符串。(2)數(shù)組元素的初值必須依次放在一對(duì)大括號(hào)內(nèi),各值之間用逗號(hào)隔開(kāi)。(3)可以只給部分?jǐn)?shù)組元素賦初值。例如:a[10]={1,2,3,4,5};(4)在進(jìn)行數(shù)組的初始化時(shí),{}中值的個(gè)數(shù)不能超過(guò)數(shù)組元素的個(gè)數(shù)。例如:a[5]={1,2,3,4,5,6,7,8};是一種錯(cuò)誤的數(shù)組初始化方式。(5)在給數(shù)組所有元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度。例如:a[]={1,2,3,4,5};則系統(tǒng)會(huì)自動(dòng)定義數(shù)組a的長(zhǎng)度為5。(6)定義數(shù)組時(shí)不進(jìn)行初始化,則該數(shù)組元素的值是不確定的。如果欲將數(shù)組所有元素的初值置為0,可以采用如下方式:a[10];三、一維數(shù)組元素的引用C語(yǔ)言規(guī)定數(shù)組不能以整體形式參與數(shù)據(jù)處理,只能逐個(gè)引用數(shù)組元素。一維數(shù)組的引用方式為:數(shù)組名[下標(biāo)];其中下標(biāo)可以是整型常量、整型變量或整型表達(dá)式。例如有定義:a[10],2;則以下是正確的表達(dá)式:a[0][1][i][3];例5.1找出10個(gè)整數(shù)中的最大值及其序號(hào)。[分析]將10個(gè)整數(shù)放于一維數(shù)組中,找出其中的最大值及其下標(biāo)即可。(){i,,k,a[11];(1;i<=10;)("",[i]);[1];1;(2;i<=10;){(<a[i]){[i];;}}(",:\n",,k);}例5.2用數(shù)組處理數(shù)列問(wèn)題(){i,f[20]={1,1};(2;i<20;)f[i][2][1];(0;i<20;){(5==0)("\n");("%10d",f[i]);}}程序的運(yùn)行結(jié)果如下:11235813213455891442333776109871597258441816765例5.3有17個(gè)人圍成一圈,從第1號(hào)的人開(kāi)始從1到3循環(huán)報(bào)數(shù),凡報(bào)到3的人離開(kāi)圈子,直到最后只剩下一個(gè)人為止,打印出此過(guò)程。(){i,d,,a[18];(1;i<=17;)a[i]=i;0;17;(d>0)(1;i<=17;)(a[i]0){;(=3){("%4d",a[i]);a[i]=0;0;;}}}程序的運(yùn)行結(jié)果是:3691215151014281671713411例5.4用冒泡法對(duì)10個(gè)整數(shù)由小到大進(jìn)行排序(){i,j,t,a[11];("10:\n");(1;i<=10;)("",[i]);("\n");(1<=9;)/*控制比較的趟數(shù)*/(1;i<=10;)/*控制每趟比較的次數(shù)*/(a[i]>a[1])/*相鄰元素相比較*/{[i];a[i][1];a[1];}/*交換數(shù)組元素的值*/(":\n");(1;i<=10;)("",a[i]);}程序運(yùn)行情況如下:10:583210-4143-126742↙:-12-40358214267143此程序用a[0]至a[10]存儲(chǔ)10個(gè)數(shù)據(jù),排序時(shí)采用雙層循環(huán),外層循環(huán)控制比較的“趟”數(shù)(共9趟),內(nèi)層循環(huán)控制每趟比較的“次”數(shù)。第一趟比較9次,將最大數(shù)置于a[10]中;第二趟比較8次,將次大數(shù)置于a[9]中;……;第九趟比較1次,將次小數(shù)置于a[2]中;余下的最小數(shù)置于a[1]中。5.2二維數(shù)組的定義和引用一、二維數(shù)組的定義與一維數(shù)組相同,二維數(shù)組也必須先定義,后使用。二維數(shù)組的格式為:類(lèi)型說(shuō)明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];例如:a[3][4];定義a為3×4(3行4列)的整型數(shù)組。該數(shù)組有12個(gè)元素,分別為:a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]說(shuō)明:(1)類(lèi)型說(shuō)明符、數(shù)組名、常量表達(dá)式的意義與一維數(shù)組相同。(2)二維數(shù)組中元素的排列順序是按行存放,即在內(nèi)存中先順序存放第一行的元素,再存放第二行的元素。(3)可以把二維數(shù)組看成是特殊的一維數(shù)組,它的每個(gè)元素又是一個(gè)一維數(shù)組。二、二維數(shù)組的初始化二維數(shù)組也可以在定義時(shí)對(duì)指定元素賦初值,可以用以下方法對(duì)二維數(shù)組進(jìn)行初始化:(1)按行分段賦值。例如:a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};(2)將所有的初值寫(xiě)在一個(gè)大括號(hào)內(nèi),按數(shù)組元素的排列順序?qū)Ω鱾€(gè)元素賦初值。例如:a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};(3)可以對(duì)數(shù)組部分元素賦初值。例如:a[3][4]={{1},{5,6},{9}};又如:a[3][4]={{1,2},{},{0,10}};其作用是使a[0][0]=1,a[0][1]=2,a[2][1]=10,數(shù)組的其它元素都為0。(4)如果對(duì)數(shù)組的全部元素都賦初值,則定義數(shù)組時(shí)可以不指定數(shù)組的第一維長(zhǎng)度,但第二維長(zhǎng)度不能省略。例如:若有定義:a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};此定義也可以寫(xiě)成:a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};三、二維數(shù)組元素的引用二維數(shù)組的引用方式為:數(shù)組名[下標(biāo)1][下標(biāo)2]其中下標(biāo)可以是整型常量、整型變量或整型表達(dá)式。例5.5將數(shù)組a(2×3矩陣)行列轉(zhuǎn)置后保存到另一數(shù)組b中。123142545636(){a[2][3]={{1,2,3},{4,5,6}};i,j,b[3][2];("a:\n");(0;i<=1;){(0;j<=2;){("%5d"[i][j]);/*輸出a數(shù)組*/b[j][i][i][j];/*數(shù)組轉(zhuǎn)置*/}("\n");}("b:\n");(0;i<=2;){(0;j<=1;)("%5d"[i][j]);("\n");}}運(yùn)行結(jié)果如下:a:123456b:142536例5.6有一個(gè)3×4的矩陣,求出其中最大值以及它所在位置。(){i,j,,0,0;a[3][4]={{2,146,8},{3,7,9,21},{-9,16,0,5}};[0][0];(0;i<=2;)(0;j<=3;)(a[i][j]>){[i][j];;;}(",,\n",,,);}程序的輸出結(jié)果為:21,1,3例5.7某班有20名學(xué)生,每名學(xué)生有5門(mén)課的成績(jī),分別求出每門(mén)課的平均成績(jī)和每個(gè)學(xué)生的平均成績(jī)。(){i,j;[21][6]={0};(1;i<=20;)(1;j<=5;){("",[i][j]);[i][0][i][j];[0][j][i][j];}(":\n");(1;i<=20;)(":%6.2f\n",i,[i][0]/5);(":\n");(1;i<=5;)(":%6.2f\n",i,[0][i]/20);}5.3字符數(shù)組的定義和引用一、字符數(shù)組的定義1.一維字符數(shù)組的格式為:類(lèi)型說(shuō)明符數(shù)組名[常量表達(dá)式];例如:[10];定義為一維字符數(shù)組,該數(shù)組包含10個(gè)元素,最多可以存放10個(gè)字符型數(shù)據(jù)。2.二維字符數(shù)組的格式為:類(lèi)型說(shuō)明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];例如:a[3][20];定義a為二維字符數(shù)組,該數(shù)組有3行,每行20列,該數(shù)組最多可以存放60個(gè)字符型數(shù)據(jù)。在C語(yǔ)言中,很多情況下字符型與整型是通用的,因此字符型數(shù)組也可以這樣定義:[10];a[3][20];注意:字符型數(shù)據(jù)在內(nèi)存中是以碼方式存儲(chǔ)的,在字符數(shù)組中也是如此。二、字符數(shù)組的初始化字符數(shù)組的初始化方式與其它類(lèi)型數(shù)組的初始化方式類(lèi)似。1.逐個(gè)元素賦初值s[5]={′C′,′h′,′i′,′n′,′a′};2.如果初值的個(gè)數(shù)多于數(shù)組元素的個(gè)數(shù),則按語(yǔ)法錯(cuò)誤處理。3.如果初值的個(gè)數(shù)少于數(shù)組元素的個(gè)數(shù),則C編譯系統(tǒng)自動(dòng)將未賦初值的元素定為空字符(即碼為0的字符:′\0′)。4.如果省略數(shù)組的長(zhǎng)度,則系統(tǒng)會(huì)自動(dòng)根據(jù)初值的個(gè)數(shù)來(lái)確定數(shù)組的長(zhǎng)度。例如:c[]={′H′,′o′,′w′,′′,′a′,′r′,′e′,′′,′y′,′o′,′u′,′′};數(shù)組c的長(zhǎng)度自動(dòng)設(shè)定為12。5.二維數(shù)組也可以進(jìn)行初始化。三、字符數(shù)組的引用例5.8輸出一個(gè)字符串。(){c[10]={′I′,′′,′a′,′m′,′′,′h′,′a′,′p′,′p′,′y′};i;(0;i<10;)("",c[i]);("\n");}程序運(yùn)行結(jié)果:I例5.9輸出鉆石圖形(){c[5][5]={{′′,′′,′*′},{′′,′*′,′′,′*′},{′*′,′′,′′,′′,′*′},{′′,′*′,′′,′*′},{′′,′′,′*′}};i,j;(0;i<5;){(0;j<5;)("",c[i][j]);("\n");}}程序的運(yùn)行結(jié)果為:********四、字符串1.字符串和字符串結(jié)束標(biāo)志字符串常量是用雙引號(hào)括起來(lái)的一串字符。C語(yǔ)言系統(tǒng)在處理字符串時(shí),一般會(huì)在其末尾自動(dòng)添加一個(gè)′\0′作為結(jié)束符。2.用字符串常量給數(shù)組賦初值可以用字符串常量來(lái)使字符數(shù)組初始化。例如:c[]={""};也可以省略大括號(hào)而直接寫(xiě)成c[]="";五、字符數(shù)組的輸入與輸出1.將數(shù)組元素逐個(gè)輸入與輸出,即用格式符""輸入或輸出一個(gè)字符。例5.10從鍵盤(pán)讀入一串字符,將其中的大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)字母后輸出該字符串。(){s[80];0;(0;i<80;){("",[i]);(s[i]==′\n′);(s[i]>=′A′[i]<=′Z′)s[i]32;}s[i]=′\0′;(0;s[i]′\0′;)("",s[i]);("\n");}運(yùn)行該程序兩次。第一次輸入:↙程序運(yùn)行結(jié)果為:第二次輸入:↙程序運(yùn)行結(jié)果為:2.將字符數(shù)組整體輸入或輸出,即用格式符""控制字符串的輸入與輸出。例5.11將上例改寫(xiě)成整體輸入輸出形式。(){s[80];i;("",s);(0;s[i]′\0′;)(s[i]>=′A′[i]<=′Z′)s[i]32;("",s);}注意:(1)用""格式符讀入字符串時(shí),函數(shù)中的地址項(xiàng)是數(shù)組名,不要在數(shù)組名前加取地址符號(hào)′&′,因?yàn)閿?shù)組名本身就是地址(在后面的內(nèi)容中將介紹到)。(2)用""格式符輸出字符串時(shí),函數(shù)中的輸出項(xiàng)是字符數(shù)組名,而不是數(shù)組元素。如果寫(xiě)成下面的形式是錯(cuò)誤的:("",s[0]);(3)以("",數(shù)組名);形式讀入字符串時(shí),遇空格或回車(chē)都表示字符串結(jié)束,系統(tǒng)只是將第一個(gè)空格或回車(chē)前的字符置于數(shù)組中,例如有如下語(yǔ)句:s[13];("",a);若輸入為:↙六、字符串處理函數(shù)在C的庫(kù)函數(shù)中提供了一些字符串處理函數(shù),使用它們可以很方便地處理字符串,如輸入、輸出、拷貝、連接、比較、測(cè)試長(zhǎng)度等。1.字符串輸出函數(shù):格式:(字符數(shù)組名)功能:將一個(gè)字符串輸出到終端,字符串中可以包含轉(zhuǎn)義字符。例如:s[]="\";(s);輸出結(jié)果是:ChinaBeijing注意:函數(shù)會(huì)將字符串結(jié)束標(biāo)志’\0’轉(zhuǎn)換成’\n’,即在輸出完字符串后換行。2.字符串讀入函數(shù):格式:(字符數(shù)組名)功能:從終端讀入一個(gè)字符串到字符數(shù)組。該函數(shù)可以讀入空格,遇回車(chē)結(jié)束輸入。例如有下面程序段:s[20];(s);(s);運(yùn)行時(shí)輸入:↙輸出結(jié)果為:3.字符串連接函數(shù):格式:(字符數(shù)組1,字符數(shù)組2)功能:將字符數(shù)組2中的字符串連接到字符數(shù)組1中的字符串的后面,結(jié)果放在字符數(shù)組1中。例如有如下程序段:s1[14]="",s2[]="";(s1,s2);("",s1);輸出結(jié)果為:ChinaBeijing說(shuō)明:使用函數(shù)時(shí),字符數(shù)組1應(yīng)作夠大,以便能容納連接后的新字符串。4.字符串拷貝(復(fù)制)函數(shù):格式:(字符數(shù)組1,字符數(shù)組2)功能:將字符數(shù)組2中的字符串拷貝到字符數(shù)組1中。例如有下面程序段:s1[8],s2[]="";(s1,s2);(s1);程序段的輸出結(jié)果是:China說(shuō)明:(1)字符數(shù)組1的長(zhǎng)度應(yīng)大于或等于字符數(shù)組2的長(zhǎng)度,以便容納被復(fù)制的字符串。(2)字符數(shù)組1必須寫(xiě)成數(shù)組名的形式(如上例中的s1),字符數(shù)組2也可以是一個(gè)字符串常量。例如:s1[8];(s1,"");其結(jié)果與上例相同。(3)執(zhí)行函數(shù)后,字符數(shù)組1中原來(lái)的內(nèi)容將被字符數(shù)組2的內(nèi)容(或字符串)所代替。(4)不能用賦值語(yǔ)句將一個(gè)字符串常量或字符數(shù)組直接賦給另一個(gè)字符數(shù)組。下面的用法是錯(cuò)誤的:s1[8],s2[]="";s12;在進(jìn)行字符串的整體賦值時(shí),必須使用函數(shù)。5.字符串比較函數(shù):格式:(字符串1,字符串2)功能:比較兩個(gè)字符串的大小,例如:(s1,s2);("","");(s1,"");比較的結(jié)果由函數(shù)值帶回。(1)如果字符串1等于字符串2,函數(shù)值為0。(2)如果字符串1大于字符串2,函數(shù)值為一個(gè)正整數(shù)(第一個(gè)不相同字符的碼值之差)。(3)如果字符串1小于字符串2,函數(shù)值為一個(gè)負(fù)整數(shù)。請(qǐng)注意:比較兩個(gè)字符串是否相等時(shí),不能采用以下形式:(s1=2)("");而只能用((s1,s2)==0)("");6.測(cè)試字符串長(zhǎng)度函數(shù):格式:(字符數(shù)組名)功能:測(cè)試字符數(shù)組的長(zhǎng)度,函數(shù)值為字符數(shù)組中第一個(gè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023-2024學(xué)年重慶市忠縣三匯中學(xué)高三下第二次檢測(cè)試題數(shù)學(xué)試題
- 2023-2024學(xué)年浙江省磐安縣二中高三第三次適應(yīng)性訓(xùn)練數(shù)學(xué)試題
- 2024限定收藏品無(wú)償交接協(xié)議
- 2024工程項(xiàng)目墊資協(xié)議示例
- 2024礦山工程承包協(xié)議模板
- 2024保障:權(quán)威協(xié)議樣本解析
- 2024跨境電子商務(wù)交易協(xié)議模板
- 2024年大清包勞務(wù)施工業(yè)務(wù)協(xié)議模板
- 2024年貨車(chē)運(yùn)輸專(zhuān)屬駕駛員勞動(dòng)協(xié)議
- 2024石子供應(yīng)商協(xié)議精簡(jiǎn)
- 辦理營(yíng)業(yè)執(zhí)照委托書(shū)
- 危險(xiǎn)貨物道路運(yùn)輸安全卡4
- 船舶電氣安裝理論圖紙相結(jié)合PPT課件
- 道路交通標(biāo)志與標(biāo)線PPT課件
- 幕墻打膠工藝
- 違約損失率(LGD)研究
- 新冀教版九年級(jí)英語(yǔ)上冊(cè)第26課課件
- 編寫(xiě)標(biāo)準(zhǔn)必備文件 國(guó)家標(biāo)準(zhǔn) 地方標(biāo)準(zhǔn) 行業(yè)標(biāo)準(zhǔn) 企業(yè)標(biāo)準(zhǔn) 格式模板大全
- 《鉆木取火》PPT
- 2021-2025鄉(xiāng)村5年規(guī)劃三篇
- 無(wú)線電遙控帆船講解
評(píng)論
0/150
提交評(píng)論