C程序設(shè)計(jì)復(fù)習(xí)資料_第1頁(yè)
C程序設(shè)計(jì)復(fù)習(xí)資料_第2頁(yè)
C程序設(shè)計(jì)復(fù)習(xí)資料_第3頁(yè)
C程序設(shè)計(jì)復(fù)習(xí)資料_第4頁(yè)
已閱讀5頁(yè),還剩243頁(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)介

長(zhǎng)春工業(yè)大學(xué)C語(yǔ)言程序設(shè)計(jì)輔導(dǎo)資料(內(nèi)部資料)主講教師:張春飛

2009年12月1日第一章概述【要點(diǎn)歸納】1、C語(yǔ)言的特點(diǎn)⑴C語(yǔ)言短小精悍,基本組成精煉、簡(jiǎn)潔。32個(gè)標(biāo)準(zhǔn)關(guān)鍵字,45個(gè)標(biāo)準(zhǔn)運(yùn)算符及9種控制語(yǔ)句。(2)C語(yǔ)言運(yùn)算符豐富,表達(dá)能力強(qiáng)。(3)C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)豐富,結(jié)構(gòu)化好。⑷C語(yǔ)言提供了某些與匯編語(yǔ)言相似的功能,有利于編寫系統(tǒng)軟件。⑸C語(yǔ)言程序可移植性好。(6)C語(yǔ)言編譯后生成的目標(biāo)代碼小,質(zhì)量高,程序的執(zhí)行效率高。2、C語(yǔ)言標(biāo)識(shí)符C語(yǔ)言中,允許用作標(biāo)識(shí)符的字符有:26個(gè)英文字母(包括大小寫)數(shù)字〇ー9下劃線。C語(yǔ)言的標(biāo)識(shí)符是滿足如下條件的字符序列:只能由英文字母、數(shù)字和下劃線組成。長(zhǎng)度為1-32.必須以英文字母或下劃線開(kāi)頭。C語(yǔ)言的標(biāo)識(shí)符可以分為以下三類:關(guān)鍵字。C語(yǔ)言中規(guī)定了一批標(biāo)識(shí)符,它們?cè)诔绦蛑卸即碇潭ǖ暮x,不能另作他用。預(yù)定義標(biāo)識(shí)符。這些標(biāo)識(shí)符在C語(yǔ)言中也都有特定的含義,因此為了避免誤解,建議用戶不要把這些預(yù)定義標(biāo)識(shí)符另作它用。用戶標(biāo)識(shí)符。,C語(yǔ)言風(fēng)格(DC語(yǔ)言嚴(yán)格區(qū)分英文字母大小寫。(2)C語(yǔ)言用“;”作為語(yǔ)句分隔符。⑶C語(yǔ)言中“{ド用于標(biāo)識(shí)ー組語(yǔ)句,構(gòu)成復(fù)合語(yǔ)句。⑷C程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語(yǔ)句,ー個(gè)語(yǔ)句也可以寫在幾行上。⑸注釋用來(lái)向用戶提示或解釋程序的意義。(注釋部分允許出現(xiàn)在程序的任何位置。編譯時(shí),會(huì)忽略所有的注釋符,即不對(duì)他們作任何處理。)4,C程序構(gòu)成⑴一個(gè)C源程序由函數(shù)構(gòu)成(函數(shù)是C程序的基本結(jié)構(gòu)單位),其中至少包括一個(gè)主函數(shù)。(2)main函數(shù)可以放在任意位置,C程序總是從main函數(shù)開(kāi)始執(zhí)行,在main函數(shù)中結(jié)束。⑶C程序中可以包含常量、變量、運(yùn)算符和標(biāo)識(shí)符。C程序的結(jié)構(gòu)C語(yǔ)言是ー種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,它提供了3種基本結(jié)構(gòu):⑴順序結(jié)構(gòu);⑵選擇結(jié)構(gòu);⑶循環(huán)結(jié)構(gòu)。

6、結(jié)構(gòu)化程序設(shè)計(jì)模塊化程序設(shè)計(jì)的思想是:按照自頂向下的原則,把問(wèn)題逐層分解。即先從總體出發(fā),把問(wèn)題分成若干個(gè)大塊,每一大塊代表ー個(gè)大任務(wù);在此基礎(chǔ)上,再對(duì)每個(gè)大塊細(xì)化,把大任務(wù)變成若干個(gè)小任務(wù),直到每個(gè)小任務(wù)都能用基本結(jié)構(gòu)表示為止。在劃分模塊的過(guò)程中,應(yīng)保證模塊的單入口、單出口、完整性和獨(dú)立性。從組織結(jié)構(gòu)上看,ー個(gè)C程序可以由若干個(gè)源程序文件組成,ー個(gè)源文件可以由若干個(gè)函數(shù)及全局變量聲明部分組成,一個(gè)函數(shù)由數(shù)據(jù)定義部分和執(zhí)行語(yǔ)句組成。7,C程序設(shè)計(jì)步驟分析問(wèn)題建立數(shù)學(xué)模型確定數(shù)據(jù)結(jié)構(gòu)和算法編寫程序調(diào)試運(yùn)行分析整理結(jié)果分析問(wèn)題建立數(shù)學(xué)模型確定數(shù)據(jù)結(jié)構(gòu)和算法編寫程序調(diào)試運(yùn)行分析整理結(jié)果8、C程序的開(kāi)發(fā)過(guò)程幾個(gè)相關(guān)概念:(1)程序:是ー組計(jì)算機(jī)可以識(shí)別和執(zhí)行的指令,每一條指令使計(jì)算機(jī)執(zhí)行特定的操作。(2)源程序:程序可以用高級(jí)語(yǔ)言或匯編語(yǔ)言編寫,用高級(jí)語(yǔ)言或匯編語(yǔ)言編寫的程序稱為源程序。(3)目標(biāo)程序:源程序經(jīng)過(guò)“編譯程序”翻譯所得到的二進(jìn)制代碼稱為目標(biāo)程序。(4)可執(zhí)行程序:目標(biāo)程序與庫(kù)函數(shù)連接,形成的完整的可在操作系統(tǒng)下獨(dú)立執(zhí)行的程序稱為可執(zhí)行程序。編輯(生成?c文件)ー編譯(生成?obj文件)ー連接(生成?exe文件)一執(zhí)行目標(biāo)文件附:C語(yǔ)言中的關(guān)鍵字(32個(gè))autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile【本節(jié)例題選編】1,選擇題【例1.1】一個(gè)c語(yǔ)言程序是由一B_A.ー個(gè)主程序和若干子程序組成B.若干函數(shù)組成C,若干過(guò)程組成 D,若干子程序組成【例1.2】C語(yǔ)言規(guī)定,在一個(gè)源程序中,main函數(shù)的位置 C_A.必須在最開(kāi)始 B.必須在系統(tǒng)調(diào)用的庫(kù)函數(shù)的后面C.可以任意D.必須在最后【例1.3]ー個(gè)c程序的執(zhí)行是從 DAA.本程序的main函數(shù)開(kāi)始,到main函數(shù)結(jié)束B(niǎo),本程序文件的第一個(gè)函數(shù)開(kāi)始,到本程序文件的最后一個(gè)函數(shù)結(jié)束C.本程序的main函數(shù)開(kāi)始,到本程序文件的最后一個(gè)函數(shù)結(jié)束D.本程序文件的第一個(gè)函數(shù)開(kāi)始,到本程序main函數(shù)結(jié)束【例1.4】以下,C是C程序的基本結(jié)構(gòu)單位A.文件 B.語(yǔ)句C.函數(shù) D.表達(dá)式【例1.5]以下D不是C語(yǔ)言的特點(diǎn)。A.運(yùn)算符豐富 B.數(shù)據(jù)結(jié)構(gòu)豐富C.可以直接訪問(wèn)物理地址 D.C函數(shù)包含的語(yǔ)句數(shù)目沒(méi)有限制【例1.6】下列關(guān)于C語(yǔ)言標(biāo)識(shí)符的敘述中正確的是 B。A.標(biāo)識(shí)符中可以出現(xiàn)下劃線和中劃線(減號(hào))FB.標(biāo)識(shí)符中不可以出現(xiàn)中劃線,但可以出現(xiàn)下劃線C,標(biāo)識(shí)符中可以出現(xiàn)下劃線,但不可以放在標(biāo)識(shí)符的開(kāi)頭FD.標(biāo)識(shí)符中可以出現(xiàn)下劃線和數(shù)字,它們都可以放在標(biāo)識(shí)符的開(kāi)頭F//數(shù)字不可以【例1.7】以下幾組選項(xiàng)中,均為不合法標(biāo)識(shí)符的是CA.A,P_0,do B.float,laO,_AC.b-a,goto,int D._123,temp,INT【例1.8】以下敘述不正確的是 D。ー個(gè)C源程序可由一個(gè)或多個(gè)函數(shù)組成ー個(gè)C源程序必須包含ー個(gè)main函數(shù)C程序的基本結(jié)構(gòu)單位是函數(shù)D.在C程序中,注釋說(shuō)明只能位于一條語(yǔ)句的后面【例1.9】以下敘述正確的是 C。A.在C程序中,main函數(shù)必須位于程序的最前面C程序的每行中只能寫一條語(yǔ)句C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句D.在對(duì)ー個(gè)C程序進(jìn)行編譯的過(guò)程中,可發(fā)現(xiàn)注釋中的拼寫錯(cuò)誤2、填空題TOC\o"1-5"\h\z【例1.10jー個(gè)C源程序中至少應(yīng)包括ー個(gè)mian函數(shù) 〇【例1.11】C程庠編譯后生成 目標(biāo) 程序,連接后生成可執(zhí)行程序?!纠?.12】C語(yǔ)言規(guī)定,標(biāo)識(shí)符只能由下劃線、字母 ヽー數(shù)字 三種字符組成,而且,第一個(gè)字符必須是 字母或下劃線 ?!纠?.13】程序的3種基本捽制結(jié)構(gòu)是循環(huán) 結(jié)構(gòu)、順序 結(jié)構(gòu)和選擇 結(jié)構(gòu)。第二章數(shù)據(jù)類型及其運(yùn)算符【要點(diǎn)歸納】1、基本數(shù)據(jù)類型C語(yǔ)言的數(shù)據(jù)類型有基本數(shù)據(jù)類型和非基本數(shù)據(jù)類型之分?;绢愋兔杜e類型單精度型

基本類型枚舉類型單精度型

L雙精度型數(shù)據(jù)類型〈構(gòu)造類型結(jié)構(gòu)體類型〔共用體類型數(shù)據(jù)類型〈構(gòu)造類型結(jié)構(gòu)體類型〔共用體類型指針類型2、變量所謂變量就是在程序執(zhí)行過(guò)程中,其值可以改變的量。變量有兩個(gè)要素:變量名。每個(gè)變量都必須有一個(gè)名稱,即變量名,變量名應(yīng)遵循標(biāo)識(shí)符的命名規(guī)則。變量值。在程序運(yùn)行過(guò)程中,變量的值存儲(chǔ)在內(nèi)存中,不同類型的變量,占用的內(nèi)存單元數(shù)不同。C語(yǔ)言是ー種強(qiáng)類型語(yǔ)言,它要求在使用數(shù)據(jù)之前對(duì)數(shù)據(jù)的類型進(jìn)行說(shuō)明。也就是說(shuō),在C語(yǔ)言中,所有變量必須先定義后使用。在定義的同時(shí)也可以進(jìn)行賦初值操作,即初始化。定義變量的格式如下:[存儲(chǔ)類型]數(shù)據(jù)類型變量1,變量2,…;3、常量常量又稱作常數(shù),是指在程序運(yùn)行過(guò)程中其值不能被改變的量。在C語(yǔ)言中,常量有不同的類型,如整型常量、實(shí)型常量和字符串常量等。⑴整型常量:可以是十進(jìn)制、ハ進(jìn)制和十六進(jìn)制表示的數(shù)。十進(jìn)制其形式是:d其中,d可以是從0-9的ー個(gè)或多個(gè)十進(jìn)制數(shù)位,第一位不能是。。ハ進(jìn)制其形式是:0d其中,d可以是一個(gè)或多個(gè)ハ進(jìn)制數(shù)(0-7之間),起始〇是必須的引導(dǎo)符。十六進(jìn)制其形式是:Oxd其中,d可以是一個(gè)或多個(gè)十六進(jìn)制數(shù)(從0-9的數(shù)字,或是從”a“到“F的字母)。引導(dǎo)符〇是必須的,字母X可以用大寫或小寫。整型數(shù)據(jù)在內(nèi)存中是以二進(jìn)制方式存放的,最高位為符號(hào)位,并以補(bǔ)碼表示。將一個(gè)十進(jìn)制整數(shù)轉(zhuǎn)化為補(bǔ)碼表示的方法如下:對(duì)于正數(shù),其補(bǔ)碼表示與原碼相同。對(duì)于負(fù)數(shù),其補(bǔ)碼表示為它的反碼加1!負(fù)數(shù)的反碼為其絕對(duì)值的所有位(含符號(hào)

位)取反得到。對(duì)于用補(bǔ)碼表示的數(shù)據(jù),還原為原碼的方法如下:?對(duì)于正數(shù)(補(bǔ)碼表示的符號(hào)位為0),原碼與補(bǔ)碼相同。?對(duì)于負(fù)數(shù),原碼一定為負(fù)數(shù),其絕對(duì)值為除符號(hào)位以外所有位取反后加1。⑵實(shí)型常量實(shí)型常量又稱浮點(diǎn)型常量,是ー個(gè)用十進(jìn)制表示的符號(hào)實(shí)數(shù)。實(shí)型常量表示形式有以下兩種:十進(jìn)制小數(shù)表示方式?指數(shù)表示方式注:e之前必須有數(shù)字,e后面的指數(shù)必須為整數(shù)。⑶字符常量字符常量又分為字符型常量、字符串常量、轉(zhuǎn)義字符和符號(hào)常量四種類型。字符型常量字符型常量是指用ー對(duì)單引號(hào)括起來(lái)的一個(gè)字符。字符串常量字符串常量是指用ー對(duì)雙引號(hào)括起來(lái)的一串字符。轉(zhuǎn)義字符轉(zhuǎn)義字符是C語(yǔ)言中一種特殊形式的字符。字符形式功能5換行T擊”む工"%Fー療分為)V橫向班格(即班到下ー個(gè),出區(qū)>^>*11\v會(huì)向跳格過(guò)格?日考。依宣ラ到前ー滅)V回車?擇學(xué)玄へ?“北ルサ/典)V走紙換頁(yè)1珊雪ぐ儀K觴列下口?條1\\反斜杠字符”ヾV單引號(hào)(鐵號(hào))字符W1到3位8進(jìn)制敷所代表的字符L 11112位16避刷效即代表的字符圖2.8各種字符格式例:'ddd三位ハ進(jìn)制\xhh二位十六進(jìn)制?符號(hào)常量C語(yǔ)言允許將程序中的常量定義為ー個(gè)標(biāo)識(shí)符,稱為符號(hào)常量。例:#definePI3.14159264、運(yùn)算符運(yùn)算符:狹義的運(yùn)算符是表示各種運(yùn)算的符號(hào)。表達(dá)式:使用運(yùn)算符將常量、變量、函數(shù)連接起來(lái),構(gòu)成表達(dá)式。⑴算術(shù)運(yùn)算符+、ー、?、/、%注:“%”運(yùn)算符的操作數(shù)只能是整數(shù)?!?”運(yùn)算符的運(yùn)算結(jié)果根據(jù)操作數(shù)的類型而定。⑵自增和自減運(yùn)算符

++、注:自增和自減運(yùn)算符只適用于單個(gè)變量,而不能用于表達(dá)式或常量。⑶賦值運(yùn)算符⑷復(fù)合的賦值運(yùn)算符+=、ー=、?=、/=、%=注:復(fù)合的賦值運(yùn)算符只能是雙目運(yùn)算符。⑸關(guān)系運(yùn)算符V、<=>>、>=、==>!=⑹邏輯運(yùn)算符!、&&、II⑺逗號(hào)運(yùn)算符表達(dá)式1,表達(dá)式2,…⑻條件運(yùn)算符c?el:e2⑼長(zhǎng)度運(yùn)算符sizeof()⑩位運(yùn)算符~、&,I、“、》、?5、類型轉(zhuǎn)換⑴數(shù)據(jù)的混合運(yùn)算和類型自動(dòng)轉(zhuǎn)換C語(yǔ)言允許不同類型的數(shù)據(jù)混合運(yùn)算,但此時(shí)要遵循一定的規(guī)則,將運(yùn)算符兩邊的操作數(shù)轉(zhuǎn)換成共同的類型,具體轉(zhuǎn)換原則是將運(yùn)算符兩邊的數(shù)據(jù)轉(zhuǎn)換成為它們之中數(shù)據(jù)最長(zhǎng)的數(shù)據(jù)類型,以保證運(yùn)算的精度不會(huì)低。double?,—floatunsignedint<—char,short⑵強(qiáng)制類型轉(zhuǎn)換(類型名稱)(表達(dá)式)注:(1)類型說(shuō)明和表達(dá)式都需要加括號(hào)(單個(gè)變量可以不加括號(hào));(2)無(wú)論隱式轉(zhuǎn)換,強(qiáng)制轉(zhuǎn)換都是臨時(shí)轉(zhuǎn)換,不改變數(shù)據(jù)本身的類型和值。6、C語(yǔ)言語(yǔ)句ー個(gè)C程序應(yīng)包括數(shù)據(jù)描述(由數(shù)據(jù)聲明部分來(lái)實(shí)現(xiàn))和數(shù)據(jù)操作(由執(zhí)行語(yǔ)句來(lái)實(shí)現(xiàn))兩部分。C語(yǔ)句分為以下五類:控制語(yǔ)句(9種)函數(shù)調(diào)用語(yǔ)句表達(dá)式語(yǔ)句空語(yǔ)句復(fù)合語(yǔ)句7、數(shù)據(jù)輸出在C語(yǔ)言中可以使用printf()、putchart()、puts()等函數(shù)進(jìn)行數(shù)據(jù)輸出。注:在print")語(yǔ)句中,是從右向左計(jì)算輸出表達(dá)式的值。8、數(shù)據(jù)輸入在C語(yǔ)言中可以使用scanf()、getchar(),gets()等函數(shù)進(jìn)行數(shù)據(jù)輸入。注:(Dscanf()函數(shù)中沒(méi)有精度控制。⑵gets(str);與scanf("版”,str);的差別是:使用gets()函數(shù)輸入的字符串可以含有空格,而scanf("%s",str);不能輸入含空格字符的字符串?!颈竟?jié)例題選編】1,選擇題【例2.1]若x、i、j和k都是int型變量,則計(jì)算下面表達(dá)式后,x的值為x=(i=4,j=16,k=32)A.4B.16C.32D.52【例2.2]若有代數(shù)式翹",則不正確的C語(yǔ)言表達(dá)式是beA.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*3【例2.3]已知各變量的類型說(shuō)明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語(yǔ)法的表達(dá)式是A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)【例2.4】以下選項(xiàng)中不屬于C語(yǔ)言的類型的是〇A.signedshortint B.unsignedlongintC.unsignedint D.longshort【例2.5】下列定義中合法的是0A.shor_a=l-.le-1; B.doubleb=l+5e2.5;C.longdo=0xfdaL; D.float2_end=l-e-3;【例2.6】-8在內(nèi)存中的存儲(chǔ)形式是〇A.1111111111111000 B,10000000(XJ001000C.0000000000001000 D.1111111111110111【例2.フ】數(shù)值029是一個(gè)〇A,ハ進(jìn)制數(shù) B.十六進(jìn)制數(shù)C,十進(jìn)制數(shù) D,非法數(shù)【例2.8】在C語(yǔ)言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是A./B.++C.!=D?%【例2.9】以下符合C語(yǔ)言語(yǔ)法的賦值表達(dá)式是〇A.d=9+e+f=d+9 B.d=9+e,f=d+9C.d=9+e,e++,d+9 D.d=9+e++=d+7【例2.10】C語(yǔ)言中,關(guān)于自增自減運(yùn)算符使用正確的是。A.10++B.(x+y)— C?d+++d+++d++D.++(a-b)【例2.11】設(shè)有則表達(dá)式(x++*1/3)的值是。A.3B.4C.11D.12【例2.12】已知:inti=6,j;則語(yǔ)句j=(++i)+(i++)后的j值是〇A.4B.14C.13D.15【例2.13】設(shè)x、y、t均為int型變量,則執(zhí)行語(yǔ)句:x二y=3;t=++xII++y后,y的值為A.不定值 B.4C.3D.1【例2.14】當(dāng)c的值不為〇時(shí),,以下能將c的值賦給變量a,b的是0A.c=b=a B.(a=c)II(b=c)C.(a=c)&&(b=c)D.a=c=b【例2.15】已有定義:intx=3,y=4,z=5,則表達(dá)式!(x+y)+z-l&&y+z/2的值是〇A.6B.0C.2D.1【例2.16】下列運(yùn)算符中,哪個(gè)運(yùn)算符的優(yōu)先級(jí)最高。A.<=B.+C.IID.>=【例2.17】在C語(yǔ)言中,int、char和short三種類型數(shù)據(jù)所占用的內(nèi)存是〇A.均為2個(gè)字節(jié) B.由用戶自己定義C.由所用機(jī)器的機(jī)器字長(zhǎng)決定的 D.是任意的【例2.18】若有說(shuō)明語(yǔ)句:charc='V72';貝リ變量cA,包含1個(gè)字符 B,包含2個(gè)字符C,包含3個(gè)字符 D.說(shuō)明不合法,c的值不確定【例2.19】若有定義:inta=7;floatx=2.5,y=4.7:則表達(dá)式x+a%3*(int)(x+y)%2/4的值是ーA.2.500000B.2.750000C.3.500000D.0.000000【例2.20】設(shè)有說(shuō)明:charw;intx;floaty;doublez:則表達(dá)式w*x+z-y值的數(shù)據(jù)類型為 A.floatB.charC.intD.double【例2.21】以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main()(inti=2;printf("%d,%d\n”,++i,-i);)A.1,1B.2,1C,1,2D.2,2【例2.22】當(dāng)接受用戶輸入的含空格的字符串時(shí),應(yīng)使用的函數(shù)是。A.scanf()B.gets()C.getchar()D.getc()【例2.23】下列敘述中正確的是C語(yǔ)言中既有邏輯類型也有集合類型C語(yǔ)言中沒(méi)有邏輯類型但有集合類型C語(yǔ)言中有邏輯類型但沒(méi)有集合類型C語(yǔ)言中既沒(méi)有邏輯類型也沒(méi)有集合類型【例2.24】以下錯(cuò)誤的敘述是。A.在C程序中,逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低B.在C程序中,APH和aph是兩個(gè)不同的變量C,若a和b類型相同,在計(jì)算了賦值表達(dá)式a=b后b中的值將放入a中,而b中的值不變D.當(dāng)從鍵盤輸入數(shù)據(jù)時(shí),對(duì)于整型變量只能輸入整型數(shù)值,對(duì)于實(shí)型變量只能輸入實(shí)型數(shù)值【例2.25】長(zhǎng)整型!ong數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式是A.ASCII碼B.原碼C.反碼D.補(bǔ)碼【例2.26】字符型常量在內(nèi)存中存放的是A.ASCH碼B.BCD碼C.內(nèi)部碼D.十進(jìn)制碼【例2.27】字符串常量“\\\22a,0\n”的長(zhǎng)度是A.8 B.7 C.6 D.5【例2.28】設(shè)intx=l,y=l;表達(dá)式(Ixlly—)的值是ーA.0 B.1 C.2 D.-1【例2.29]已知:intx;則使用逗號(hào)表達(dá)式(x=4*5,x*5),x+25的結(jié)果是,變量x的值為。A.20B.100C.45D,表達(dá)式不合法【例2.30]邏輯運(yùn)算符兩側(cè)運(yùn)算對(duì)象的數(shù)據(jù)類型 。A.只能是〇或1 B.只能是〇或非〇正數(shù)C.可以是整型或字符型數(shù)據(jù) D.可以是任何類型的數(shù)據(jù)【例2.31I以下程序的執(zhí)行結(jié)果是〇#include<stdio.h>main(){printfC4%f\n5,,2.5+1*7%2/4);)A.2.500000B.2.750000C.3.375000D.3.000000【例2.32]若給定條件表達(dá)式(M)?(a++):(a-)1則其中表達(dá)式(M)A.和(M==0)等價(jià)B.和(M==l)等價(jià)C.和(M!=0)等價(jià) D.和(M!=1)等價(jià)【例2.33】有以下程序:#include<stdio.h>main。{unsignedchara,b,c;a=0x3;b=aI0x8;c=b?l;printf(ut%d%d\n”,b,c);)程序運(yùn)行后的輸出結(jié)果是。A.-1112B.-6-13C.1224D.11222、填空題【例2.34】若有以下定義,則計(jì)算表達(dá)式y(tǒng)+=y-=m*=y后的y值是。intm=5,y=2;【例2.35]已知intx=6;則執(zhí)行x+=x-=x*x語(yǔ)句后,x的值是?!纠?.36]若w=l,x=2,y=3,z=4,則條件表達(dá)式w>x?w:y<z?y:z的結(jié)果是?!纠?.37]在C語(yǔ)言中,ー個(gè)int型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié),則int型數(shù)據(jù)的取值范圍為0【例2.38】要將一個(gè)16位二進(jìn)制的整型變量的高8位清零,只保其留低8位,可用的方法是?!纠?.39】若x和n均是int型變量,且x和n的初值均為5,則計(jì)算表達(dá)式后x的值為,n的值為。x+=n++【例2.40】已知字母a的ASCII碼為十進(jìn)制數(shù)97,且設(shè)ch為字符型變量,則表達(dá)式ch='a'+'8'-'3'的值為?【例2.41】假設(shè)m是ー個(gè)三位數(shù),從左到右用a,b,c表示各位的數(shù)字,則從左到右各個(gè)數(shù)字是bac的三位數(shù)的表達(dá)式是?!纠?.42]設(shè)y為int型變量,描述“y是奇數(shù)”的表達(dá)式是=【例2.43]在scanf()函數(shù)中格式符x用于輸入〇【例2.44I若有定義:inta=2,b=3;floatx=3.5,y=2.55則下面表達(dá)式的值為(float)(a+b)/2+(int)x%(int)y【例2.45]若有定義:intb=7;floata=2.5,c=4.7;則下面表達(dá)式的值為。a+(int)(b/3*(int)(a+c)/2)%4【例2.46]若有以下程序:執(zhí)行后的輸出結(jié)果是〇#include<stdio.h>main(){intk=2,i=2,m;m=(k+=i*=k);printf("%d,%d\n”,m,i);)【例2.47]有以下程序,輸入123456789,其輸出結(jié)果是。#include<stdio.h>main(){inta,b;floatf;scanf("%2d%*2d%2d%ド,&a,&b,&f>;printf("%d,%d,%f\n”,a,b,f);)【例2.48】以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main()(inta,b,c;a=b=l;c=a++-l;printf("%d,%d;',a,c);c+=-a-H-+(++bII++c);printf("%d,%d\n”,a,c);)【例2.49]以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main()(inti=10;printf("%d,%d,%d",i--,i?ー,i一);)1例2.50】以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main()inta=-32768,b;b=a-l;printf("a二%d,b=%d”,a,b);【例2.51】以下程序的執(zhí)行結(jié)果是〇#include<stdio.h>main(){intx=042,y=067,z;z=(x?2)&(y?3);printf(u%d\nM,z);}【例2.52】以下程序的執(zhí)行結(jié)果是〇#include<stdio.h>main()(intn=023;printf("%d\n",??n);)【例2.53】以下程序的執(zhí)行結(jié)果是ー#include<stdio.h>main(){intx=10,y=9;inta,b,c;a=(-x==y++)?—x:++y;b=x++;c=y;printf("%d,%d,%d\n”,a,b,c);第三章選擇語(yǔ)句和循環(huán)語(yǔ)句【要點(diǎn)歸納】1、if語(yǔ)句If語(yǔ)句有三種使用形式⑴單分支if語(yǔ)句。if(條件)語(yǔ)句;⑵雙分支if語(yǔ)句。if(條件)語(yǔ)句1;else語(yǔ)句2;⑶多分支if語(yǔ)句。if(〈條件1))語(yǔ)句1;elseif(條件2))語(yǔ)句2;elseif(〈條件n〉)語(yǔ)句n;else語(yǔ)句n+1;2、switch(開(kāi)關(guān))語(yǔ)句switch語(yǔ)句用于方便地從多個(gè)語(yǔ)句中選擇ー個(gè)或多個(gè)語(yǔ)句執(zhí)行。switch(〈表達(dá)式〉)(case常量表達(dá)式1:語(yǔ)句!;case常量表達(dá)式2:語(yǔ)句2;case常量表達(dá)式n:語(yǔ)句n;default:語(yǔ)句n+1;)注:表達(dá)式的值一定是整型值,若為其他類型,最后都要轉(zhuǎn)換為整型數(shù)。3、while循環(huán)語(yǔ)句while(條件)語(yǔ)句;注:先判斷條件,后執(zhí)行語(yǔ)句;4^do—while循環(huán)語(yǔ)句do語(yǔ)句;while(條件);注:先執(zhí)行ー次循環(huán)體,再判斷條件。While和do?while語(yǔ)句的差別是,后者至少執(zhí)行“語(yǔ)句”一次,而前者有時(shí)一次也不執(zhí)行語(yǔ)句。5、for循環(huán)語(yǔ)句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句;注:省略各個(gè)表達(dá)式時(shí),應(yīng)能夠知道其意義。⑴“表達(dá)式1”可以省略,此時(shí)應(yīng)在該語(yǔ)句之前給循環(huán)變量賦初值。其后的分號(hào)不能省略。⑵“表達(dá)式2”可以省略,即無(wú)判定條件,循環(huán)無(wú)終止進(jìn)行下去。需要在循環(huán)體中用break等語(yǔ)句退出循環(huán)。⑶“表達(dá)式3”可以省略,這樣需要在循環(huán)體“語(yǔ)句”中讓循環(huán)變量變化,以保證循環(huán)能正常結(jié)束?!氨磉_(dá)式!"和“表達(dá)式3”可以同時(shí)省略,這樣為⑴和⑶兩種情況同時(shí)出現(xiàn),需要使用相關(guān)語(yǔ)句保證循環(huán)結(jié)朿。⑸三個(gè)表達(dá)式都可省略,這樣為⑵和⑷兩種情況同時(shí)出現(xiàn),需要使用相關(guān)語(yǔ)句保證循環(huán)結(jié)束。6、break語(yǔ)句b但ak語(yǔ)句的使用格式很簡(jiǎn)單,由關(guān)鍵字break和分號(hào)構(gòu)成,其功能如下:在switch語(yǔ)句中,break用來(lái)使程序流程跳出switch語(yǔ)句,繼續(xù)執(zhí)行switch后的語(yǔ)句;在循環(huán)語(yǔ)句中,break用來(lái)從最近的循環(huán)體內(nèi)跳出來(lái)。7>continue語(yǔ)句continue語(yǔ)句只能用于循環(huán)語(yǔ)句中,作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中尚末執(zhí)行的語(yǔ)句,接著進(jìn)行是否執(zhí)行下一次循環(huán)的判定?!颈竟?jié)例題選編】1、選擇題(例3」]以下語(yǔ)句錯(cuò)誤的是A.if(x>y); B.if(x=y)&&(x!=O)x+=y;C.if(x!=y)scanf("%d",&x);eslescanf("%d",&y);D.if(x<y){x++;y++;}【例3.2】C語(yǔ)言的if語(yǔ)句中,用作判斷的條件表達(dá)式為A.任意表達(dá)式 B.邏輯表達(dá)式 C.關(guān)系表達(dá)式 D.算術(shù)表達(dá)式【例3.3]為了避免在嵌套的條件語(yǔ)句if-else中產(chǎn)生二義性,C語(yǔ)言規(guī)定:else子句總是與—配對(duì)。A.縮排位置相同的if B,同一行上的ifC.其之后最近的ifD.其之前最近的if【例3.4】以下程序的輸出結(jié)果是#include<stdio.h>main(){inti=l,j=l,k=2;if((j++IIk++)&&i++)printf("%d,%d,%d\n”,i,j,k);)A.1,1,2 B.2,2,1C.2,2,2 D.2,2,3【例3.5】已知intx=10,y=20,z=30;以下語(yǔ)句執(zhí)行后x,y,z的值是〇if(x>y)z=x;x=y;y=z;A.x=10,y=20,z=30 B.x=20,y=30,z=30C.x=20,y=30,z=10 D.x=2O,y=3O,z=2O【例3.6】以下程序的運(yùn)行結(jié)果是。main(){intm=5;if(m++>5)printf(i*%d\n,,,m);elseprintf("%d\n”,m--);)A.4 B.5C.6D.7【例3.7】以下程序的輸出結(jié)果是〇main(){inta=100,x=10,y=20,ok1=5,ok2=0;if(x<y)if(y!=10)if(!okl)a=l;elseif(ok2)a=10;a=-l;

printf(4t%d\nM,a);)A.1B.0C.-1 D,值不確定【例3.8]若へb均是整型變量,正確的switch語(yǔ)句是A.switch(a)(A.switch(a)(case1.0:printf("i\n”);case2:printf("you'n");}C.switch(a+b){case1:printf(Mi\nM);case2*a:printf(44you\nM);)【例3.9】對(duì)for(表達(dá)式1;;表達(dá)式3),B.switch(a)(caseb:printf("i\n");case 1:printf("you'n");)D.switch(a+b)(case1:printf("i'n’');case2:printf(4tyou\nM);)可理解為A.for(表達(dá)式1;0;表達(dá)式3) B.for(表達(dá)式1;表達(dá)式3;表達(dá)式3)C.for(表達(dá)式1;1;表達(dá)式3) D.for(表達(dá)式1;表達(dá)式1;表達(dá)式3)【例3.10】執(zhí)行以下程序段后,變量a,b,c的值分別是〇intx=10,y=9;inta,b,c;a=(—x==y++)?—x:++y;b=x++;c=y;A.a=9,b=9,c=9 B.a=8,b=8,c=10C.a=9,b=10,c=9 D.a=l,b=ll,c=10【例3.11】有以下程序段:intn=0,p;do{scnaf('4%d”,&p);n++;}while(p!=12345&&n<3);此處do-while循環(huán)的結(jié)束條件是〇A.p的值不等于12345并且n的值小于3B.的值等于12345并且n的值大于等于3p的值不等于12345或者n的值小于3p的值等于12345或者n的值大于等于3【例3.12I下面程序中循環(huán)體的執(zhí)行次數(shù)是.a=10;b=0;do{b+=2;a-=2+b;}while(a>=0);A.1 B.2 C.3D.4【例3.13】以下程序段〇x=-l;do{x=x*x;}while(!x);A.是死循環(huán) B.循環(huán)執(zhí)行二次C,循環(huán)執(zhí)行ー次 D,有語(yǔ)法錯(cuò)誤【例3.14】以下程序的執(zhí)行結(jié)果是#include<stdio.h>main()(inta=0,i;for(i=1;i<5;i++){switch(i)(case0:case3:a+=2;a+=3;default:a+=5;))printf(t4%d\n*\a);)A.31B.13C.10D.20【例3.15】下面程序的運(yùn)行結(jié)果是#include<stdio.h>main()(inty=10;do{y—;}while(—y);printf("%d\n”,y—);)A.-1B.1C.8D.0【例3.16】下面程序的功能是輸出以下金字塔圖案的是:****#include<stdio.h>main()(inti,j;for(i=l;i<=4;i++){for(j=l;j<=4-i;j++)printf("");for(j=l;j<=;j++)printf("*”);printf(4W,);在下劃線處應(yīng)填入的是A.iB.2*i-lC.【例3.17】下面程序段〇for(t=l;t<=100;t++){scanf("%d”,&x);if(x<0)continue;printf(u%3d,\t);}A.當(dāng)x<0時(shí)整個(gè)循環(huán)結(jié)束C.printf函數(shù)永遠(yuǎn)也不執(zhí)行【例3.18I若w,x,y,z,m均為int型變量,w=l;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(x<z)?m:z;1B.2C.3【例3.19]請(qǐng)讀以下程序:main()(inta=5,b=0,c=0;if(a=b+c)printf(44***\nM);elseprintf("$$$\n”);}以上程序〇A,有語(yǔ)法錯(cuò)誤不能通過(guò)編譯C.輸出***【例3.20】ド面程序段不是死循環(huán)的是A.inti=100;while(l)(i=i%100+l;if(i>100)break;}for(;;);intk=0;do{++k;}while(k<=0);ints=36;While(s); —s;2*i+lD.i+2B.x>=0時(shí)什么也不做D.最多允許輸出100個(gè)非負(fù)整數(shù)則執(zhí)行以下語(yǔ)句后的m值是,D.4B.可以通過(guò)編譯但不能通過(guò)連接D.輸出$$$【例3,21]有一堆零件(100到200之間),如果分成4個(gè)零件ー組的若干組,則多2個(gè)零件,若分成7個(gè)零件ー組,則多3個(gè),若分成9個(gè)零件ー組,則多5個(gè)零件,下面程序是求這堆零件總數(shù),請(qǐng)選擇填空。#include<stdio.h>main(){inti;for(i=100;i<200;i++)if((i-2)%4==0)if(!((i-3)%7))if()

printf(6t%d,\i);)A.i%9=5 B.i%9!=5C.(i-5)%9!=0 D.i%9==5【例3.22】下面程序的運(yùn)行結(jié)果是。#include<stdio.h>main。{inti;for(i=l;i<=5;i++){if(i%2)printf("*");elsecontinue;printfCが');}printf("$\n");)A.*#*#*#$ B.#*#*#*$C.*#*#$ D.#*#*$【例3.23】下面程序的運(yùn)行結(jié)果是0#include<stdio.h>main()(inti,j,x=O;for(i=0;i<2;i++)(x++;for(j=0;j<=3;j++)|if(j%2)continue;X++;}X++;)printf(ux=%d\n,\x);}A.x=4 B.x=8C.x=6D.x=122、填空題【例3.24]C語(yǔ)言中,break語(yǔ)句只能用于語(yǔ)句和語(yǔ)句中〇【例3.25]當(dāng)a=3,b=2,c=!時(shí)'表達(dá)式f=a>b>c的值是0【例3.26】若a=6,b=4,c=2,則表達(dá)式!(a-b)+c?l&&b+c/2的值是〇【例3.27】下列程序計(jì)算2700的偶數(shù)的累加和,請(qǐng)?zhí)羁铡?include<stdio.h>main()(inti,sum=0;for()sum+=i;printfCtsum=%d\n>\sum);}【例3.28】以下程序的輸出結(jié)果是#include<stdio.h>main()(intx=15;while(x>10&&x<50)(x++;if(x/3){x++;break;}elsecontinue;)printf("%d\n”,x);)【例3.29】下面程序段是找出整數(shù)的所有因子,請(qǐng)?zhí)羁?。scanf("%d",&x);i=l;for(;;){if(x%i==0)printf(“%3d”,i);i++;)【例3.30I下面程序段是從鍵盤輸入的字符中統(tǒng)計(jì)數(shù)字字符的個(gè)數(shù),用換行符結(jié)束循環(huán)。請(qǐng)?zhí)羁铡ntn=0,c;c=getchar();while(c!=AnL)if( )n++;c=getchar();)【例3.31]等差數(shù)列的第一項(xiàng)a=2,公差d=3,下面程序的功能是在前n項(xiàng)和中,輸出能被4整除的所有的和。請(qǐng)?zhí)羁铡?include<stdio.h>main()(inta,d,sum;a=2;d=3;sum=0;do{sum+=a;a+=d;if()printf("%d\n”,sum);}while(sum<200);)【例3.32】請(qǐng)讀程序:#include<stdio.h>main()(intx=l,y=O,a=O,b=O;switch(x){switch(y)(case〇:a++;break;casel:b++;break;)a++;b++;break;)printf("a=%d,b二%d”,a,b);)上面程序的運(yùn)行結(jié)果是?【例3.33】以下程序?qū)斎氲末`個(gè)小寫字母,將字母循環(huán)后移5個(gè)位置后輸出,如‘a(chǎn)'變成‘f','w’變成‘b’。請(qǐng)?zhí)羁铡?include<stdio.h>main()charc;c=getchar();if(c>=,a,&&cv='u')elseif(c>='v'&&c<=,z,)putchar(c);)【例3.34】下面程序的功能是求出用數(shù)字0至9可以組成多少個(gè)沒(méi)有重復(fù)的三位偶數(shù)。請(qǐng)?zhí)羁铡?include<stdio.h>main()(intn,ij,k;n=O;for(i=l;i<=9;i++)fbr(k=O;k<=8;)if(k!=i)for(j=0;j<=9;j+4-)if()n++;printfCin=%d\n,\n);)【例3.35】下面程序的功能是輸出1至100之間每位的乘積大于每位數(shù)的和的數(shù)。請(qǐng)?zhí)羁铡?include<stdio.h>main()(intn,k=l,s=O,m;for(n=l;n<=100;n++)(k=l;s=0;while()(k*=m%10;s+=m%10;}if(k>s)printf("%d”,n);【例3.36】下面程序的功能是求1000以內(nèi)的所有完全數(shù)。請(qǐng)?zhí)羁铡?說(shuō)明:ー個(gè)數(shù)如果恰好等于它的因子之和(除自身外),則稱該數(shù)為完全數(shù),例如:6=1+2+3,6為完全數(shù))#include<stdio.h>main(){inta,i,m;for(a=l;a<=1000;a4-+){for(;i<=a/2;i++)if(!(a%i))if(m==a)printf(“%4d”,a);))【例3.37】下面程序的運(yùn)行結(jié)果是ー#include<stdio.h>main(){inti=l;while(i<=15)if(++i%3!=2)continue;elseprimf("%d”,i);printf(“\n”);)【例3.38】下面程序的運(yùn)行結(jié)果是〇#include<stdio.h>main(){inti,j,k=19;while(i=k-l){k-=3;if(k%5=0)(i++;continue;elseif(k<5)break;printf(4*i=%d,k=%d\n,,,i,k);)【例3.39】下面程序的運(yùn)行結(jié)果是〇#include<stdio.h>main(){inty,a;y=2;a=l;while(y—!=-l)(do{a*=y;a++;)while(y—);)printf("%d,%d”,a,y);)【例3.40】以下程序的功能是根據(jù)公式e=l+丄+丄+丄+…求e的近似值,精度要求為1011!2!3!請(qǐng)?zhí)羁铡?include<stdio.h>main(){inti;doublee,new;new=1.0;for(i=1;;i++)(new/=(double)i;e+=new;)printf(tte=%f\n,,,e);)【例3.41】下面程序的功能是打印100以內(nèi)個(gè)位數(shù)為6且能被3整除的所有數(shù)。請(qǐng)?zhí)羁铡?include<stdio.h>main()(inti,j;for(i=0;;i++)j=i*10+6;if()continue;primf("%d"j);))【例3.42】下面程序的功能是計(jì)算100到1000之間有多少個(gè)數(shù)其各位數(shù)字之和是5.請(qǐng)?zhí)羁铡?include<stdio.h>main(){inti,s,k,count=0;for(i=100;i<=1000;i++)(s=0;k=i;while()(s+=k%10; k=;}if(s!=5)elsecount++;)printf("%d”,count);)【例3.43】下面程序的運(yùn)行結(jié)果是#include<stdio.h>main。{inti=5;do{switch(i%2){case4:i-break;case6:i--;continue;)-;i--;printf("%d”,i);}while(i>0);【要點(diǎn)歸納】1、ー維數(shù)組任何數(shù)組在使用之前必須先說(shuō)明,即指定數(shù)組名稱,大小和元素類型。一旦說(shuō)明了一個(gè)數(shù)組,系統(tǒng)就會(huì)為它在內(nèi)存中分配ー個(gè)所申請(qǐng)大小的存儲(chǔ)空間。⑴?維數(shù)組的說(shuō)明類型說(shuō)明符數(shù)組名[常量表達(dá)式];說(shuō)明:①數(shù)組名是ー個(gè)地址常量,不允許對(duì)其值進(jìn)行修改。②“常量表達(dá)式”表示該數(shù)組擁有多少個(gè)元素,即數(shù)組的大小,它必須是正數(shù)數(shù)。⑵-ー維數(shù)組元素的引用數(shù)組名[下標(biāo)]說(shuō)明:下標(biāo)是某個(gè)數(shù)組元素到數(shù)組開(kāi)始元素的位置偏移量;數(shù)組下標(biāo)從0開(kāi)始。⑶ー維數(shù)組的初始化對(duì)數(shù)組的全部元素賦初始值;對(duì)數(shù)組的部分元素賦初始值;在對(duì)數(shù)組的全部元素賦初值時(shí),也可以將數(shù)組定義為ー個(gè)不確定長(zhǎng)度的數(shù)組。2、二維數(shù)組⑴二維數(shù)組的說(shuō)明類型說(shuō)明符數(shù)組名]常量表達(dá)式1]]常量表達(dá)式2];注;①二維數(shù)組中元素的順序是:按行優(yōu)先存放,即在內(nèi)存中先順序存放第一行的元素,再存放第二行的元素,依此類推。②二維數(shù)組可看成是ー個(gè)特殊的一維數(shù)組,它的元素又是ー維數(shù)組。⑵二維數(shù)組元素的引用數(shù)組名[下標(biāo)in下標(biāo)2]例:intA[M][N]其元素排在第i*N+j+l個(gè)存儲(chǔ)位置上。⑶二維數(shù)組的初始化分行給二維數(shù)組賦初始值;按數(shù)組存儲(chǔ)的排列順序賦初始值;允許省略第一維長(zhǎng)度說(shuō)明來(lái)給二維數(shù)組賦初始值。3、字符數(shù)組字符數(shù)組是用來(lái)存放若干個(gè)字符的數(shù)組,其定義和引用方式與其它數(shù)組相同。4,字符串?dāng)?shù)組字符串?dāng)?shù)組的每個(gè)元素又都是ー個(gè)字符串。字符串?dāng)?shù)組是二維數(shù)組。4、字符串處理函數(shù)⑴puts(字符數(shù)組)(2)gets(字符數(shù)組)(3)strcat(字符數(shù)組1,字符數(shù)組2)⑷strcpy(字符數(shù)組1,字符數(shù)組2)(5)strcmp(字符串1,字符串2)(6)strlen(字符串)(7)strlwr(字符串)(8)strupr(字符串)【本節(jié)例題選編】1、選擇題【例4.1】以下有關(guān)C語(yǔ)言中數(shù)組的說(shuō)法正確的是數(shù)組元素的數(shù)據(jù)類型可以不一致數(shù)組元素的個(gè)數(shù)可以不確定,允許隨機(jī)變動(dòng)可以使用動(dòng)態(tài)內(nèi)存分配技術(shù),定義元素個(gè)數(shù)可變的數(shù)組D,定義一個(gè)數(shù)組后,就確定了它所容納的具有相同數(shù)據(jù)類型元素的個(gè)數(shù)【例4.2]若有說(shuō)明:intaロ[3]={0,0}:則下列所述正確的是ー數(shù)組a的每個(gè)元素都可得到初值0;二維數(shù)組a的第一維的大小為4:數(shù)組a的行數(shù)為2:只有元素a[0]⑼和a⑼[1]可得到初值0,其余元素均得不到初值【例4.3】以下對(duì)ー維數(shù)組a的正確說(shuō)明是0A.inta(10); B.intn=10,a[n];C.intn; D.#defineSIZE10inta[SIZE];scanf("%d”,&n);inta[SIZE];inta[n];【例4.4]若有說(shuō)明:inta[3][4];則對(duì)a數(shù)組元素的正確引用是ーA.a⑵[4] B.a[l,3]C.a[l+l][0]D.a(2)(l)【例4.5】以下錯(cuò)誤的語(yǔ)句是staticcharwordf ]={4C,;h\T,,n\,a,};staticcharword| ]={"China"};staticcharword[ ]=^^China^^;staticcharword[ ]='China';【例4.6】下面程序(每行程序前面的數(shù)字表示行號(hào))main(){floata[10]={0.0};inti;for(i=0;i<3;i++)scanf("%d”,&a[i]);for(i=l;i<10;i++) a[0]=a[0]+a[i];printf(it%f\n",a[O]);8}A,沒(méi)有錯(cuò)誤 B.第3行有錯(cuò)誤C.第5行有錯(cuò)誤 D?第7行有錯(cuò)誤【例4.7】下面程序的運(yùn)行結(jié)果是〇main()(inta|6|,i;for(i=l;i<6;i++){a[i]=9*(i-2+4*(i>3))%5;printfCt%2d",a[i]);A. -4 0 4 0 4 B. -4 0 4 0 3C. -4 0 4 4 3 D. -4 0 4 4 0【例4.8】以下對(duì)C語(yǔ)言字符數(shù)組的描述錯(cuò)誤的是字符數(shù)組可以存放字符串字符數(shù)組中的字符串可以進(jìn)行整體輸入輸出可以在賦值語(yǔ)句中通過(guò)輸值運(yùn)算符“=”對(duì)字符數(shù)組整體賦值D.字符數(shù)組的下標(biāo)從0開(kāi)始【例4.9】有下面的程序段chara[3],b[]ゴChina”;a=b;printf("%s”,a);則.A,運(yùn)行后將輸岀ChinaB.運(yùn)行后將輸出ChC.運(yùn)行后將輸出Chi D.編譯出錯(cuò)【例4.10】判斷字符串s!是否大于字符串s2,應(yīng)當(dāng)使用?A.if(sl>s2) B.if(strcmp(sl,s2))C.if(strcmp(s2,sl)>0) D.if(strcmp(sl,s2)>0)【例4.11】已知:charcl[]={"abcd”};charc2[]={'a','b';c','d'};則下所述正確的是數(shù)組cl和數(shù)組c2等價(jià)數(shù)組cl和數(shù)組c2的長(zhǎng)度相同數(shù)組cl的長(zhǎng)度大于數(shù)組c2的長(zhǎng)度以上都不對(duì)【例4.12】下面程序的運(yùn)行結(jié)果是〇#include<stdio.h>main()(charstr[]ゴSSSWLIA”,c;intk;for(k=2;(c=str[k])!=,\O,;k++)(switch(c)(caseT:++k;break;case'L':continue;default:putchar(c);continue;)putcharC*');)}A.SSW*B.SW*C.SW*AD.SW【例4.13]已知:charstring1[10]=,,abcde,\string2[10]=,,xyzM:則下列C語(yǔ)句輸出結(jié)果是ーprintf("%d”,strlen(strcpy(stringl,string2)));A.3 B.5C.8 D.9【例4.14】有以下程序:#include<stdio.h>#include<string.h>main()(charsロゴ\nl23ド;printf(u%d,%d\n”,strlen(s),sizeof(s));)執(zhí)行后的輸出結(jié)果是A.賦初值的安符串有錯(cuò) B.6,7C.5,6 D.6,6【例4.15】下面程序的功能是將字符串s中所有的字符c刪除。請(qǐng)選擇填空。#include<stdio.h>main。(chars[80];intij;gets(s);for(i=j=0;sロ]!=へ(T;i++)if(s[i]!='c')s[j]=,\O,;puts(s);}A.sg++]=s[i| B.s[++j]=s[i]C.sU]=s[i];j++ D.s|j|=s[il【例4.16】以下程序的輸出結(jié)果是ー#include<stdio.h>main()(intb[3][3]={0,l,2,0,l,2,0,l,2},i,j,t=0;for(i=0;i<3;i++)for(j=l;j<=i;j++)t=t+b[i][b[j][j]];printf("%d\n”,t);)A.3 B.4C.1 D.9【例4.17】有如下程序:#include<stdio.h>main()staticinta[3][3]={{l,2},{3,4},{5,6}},i,j,s=0;for(i=0;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(u%d\n,*,s);)該程序的輸出結(jié)果是A.18 B.19C.20 D.21【例4.18】有以下程序main(){inti;for(i=0;i<3;i++)switch(i){caseI:primf(”%d”,i);case2:printf(M%du,i);default:printf(H%d';i);))執(zhí)行后輸出結(jié)果是。A)011122 B)OI2 0012020 D)1202、填空題【例4.19]若有定義:staticinta[3][4]={{1,2},{〇},{4,6,8,10}};則初始化后,a[l][2]=.,a[2][l]=?【例4.20]在C語(yǔ)言中,二維數(shù)組元素在內(nèi)存中的存放順序是〇【例4.21】若二維數(shù)組a有m列,則在前的元素個(gè)數(shù)為0【(列4.22】判斷字符串a(chǎn)和b是否相等,應(yīng)當(dāng)使用?!纠?.23】以下程序可求出矩陣a的兩條對(duì)角線上的元素之和,請(qǐng)?zhí)羁铡?include<stdio.h>main()(inta[3][3]={1,3,6,7,911,14,15,17),suml=0,sum2=0,i,j;for(i=0;i<3;i++)for0=O;j<3;j++)if(i==j)suml=suml+a[i][j];for(i=0;i<3;i++)for(;;j-)if((i+j)==2)sum2=sum2+a[i][j];printf(4*suml=%d,sum=%d\n,,,sum1,sum2);)【例4.24】設(shè)數(shù)組a包括10個(gè)整型元素,下面程序的功能是求出a中各相鄰兩個(gè)元素的和,并將這些和存在數(shù)組b屮,按每行3個(gè)元素的形式輸出。請(qǐng)?zhí)羁?。a[10],b[10],i;for(i=0;i<10;i-H-)scanf("%d”,&a[i]);for(;i<10;i++)for(i=l;i<10;i-H-){prinlf("%3d”,b[i]);if(==0)printfC4\nM);)1【例4.25】下面程序中的數(shù)組a包括10個(gè)整數(shù)元素,從a中第二個(gè)元素起,分別將后項(xiàng)減前項(xiàng)之差存入數(shù)組b,并按每行3個(gè)元素輸出數(shù)組b,請(qǐng)?zhí)羁?。main()(inta[10],b[10],i;for(i=0;;i++)scanf("%d”,&aロ]);for(i=l;;i++)b[i]=a[i]-a[i-l];for(i=l;i<10;i++){printf(“%3d”,b[i]);>f()printf('ゝn");}}【例4.26】以下程序可求出所有的水仙花數(shù),(提示:所謂水仙花數(shù)是指一個(gè)三位正整數(shù),其各位數(shù)字的立方之和等于該正整數(shù)。例如:407=4*4*4+0*0*0+7*7*7,故407是ー個(gè)水仙花數(shù))請(qǐng)?zhí)羁?。main()(intx,y,z,a[8],m,i=0;printf('Thespecialnumbersare(inthearrangeof1000:\n),,);for(;m++){x=m/100;y=;z=m%10;if(x*100+y*10+z==x*x*x+y*y*y+z*z*z)i++;}for(x=0;x<i;x++)printfC%6d”,a[xD;)【例4.2フ】下面程序的功能是生成并打印某數(shù)列的前20項(xiàng),該數(shù)列第!,2項(xiàng)分別為。和1,以后每個(gè)奇數(shù)編號(hào)的項(xiàng)是前兩項(xiàng)之和,偶數(shù)編號(hào)的項(xiàng)是前兩項(xiàng)差的絕對(duì)值。生成的20個(gè)數(shù)存在ー維數(shù)組x中,并按每行4項(xiàng)的形式輸出,請(qǐng)?zhí)羁?。main()(intx[21],ij;x[l]=0;x[2]=l;i=3;do{x[i]=.x[i+l]=;}while(i<=20);for(i=l;i<=20;i++)(printf("%5d”,x[iD;if(i%4==0)printf(4S\nM);}1【例4.28】や面程序的功能是輸入5個(gè)整數(shù),找出最大數(shù)和最小數(shù)所在的位置,并把二者對(duì)調(diào),然后輸出調(diào)整后的5個(gè)數(shù)。請(qǐng)?zhí)羁?。main()(inta(5],max,min,i,j,k;for(i=0;i<5;i++)scanf("%d”,&a[i]);min=a[0];for(i=l;iv5;i++)if(a[i]<min)(min=a[i];max=a[0];for(i=l;i<5;i++)if(a|i]>nax)max=a[i];printf(4t\nThepositionofminis:%3d\n”,k);printf(AnThepositionofmaxis%3d\nM,j);for(i=0;i<5;i++)printf("%5d”,a[i]);}【例4.29】下面程序的運(yùn)行結(jié)果是main()(inti,f[10];f|O]=f[l]=l;for(i=2;i<10;i++)f[i]=f[i-2]+f[i-l];for(i=0;i<10;i++)(if(i%4==0)printfCへn");printf("%3d”,f[i]);})【例4.30】設(shè)數(shù)組a中的元素均為整數(shù),以下程序是求a中偶數(shù)的個(gè)數(shù)和偶數(shù)的平均值。請(qǐng)?zhí)羁?。main()(inta[10]={1,2,3,4,5,6,7,8,9,10};intk,s,i;floatave;for(k=s=i=0;i<10;i++)(if(a[i]%2!=0)s+=;k++;}if(k!=O){ave=s/k;printf(t4%d,%f\n,,,k,ave);)【例4.31】當(dāng)從鍵盤輸入18并回車后,下面程序的運(yùn)行結(jié)果是.main()(intx,y,i,a[8],j,u,v;scanf(t4%d*\&x);y=x;i=0;do{u=y⑵a[i]=y%2;i++;y=u;}while(y>=l);for(j=i-l;j>=0;j-)printf("%d'',a|jD;}【例4.32]下面程序的功能是檢査一個(gè)二維數(shù)組是否對(duì)稱(即:對(duì)所有i和j都有請(qǐng)?zhí)羁铡ain()(inta[4][4]={1,2,3,42,2,5,6,3,5,3,7,4,6,7,4};inti,j,found=0;for(j=0;j<4;j++)for(;i<4;i++)if(aU][i]!=a[i]|j])break;)if(found)printf("NO”);elseprintf(“YES”);)【例4.33】以下程序是求矩陣a,b的乘積,結(jié)果存入矩陣c中并按矩陣形式輸出。請(qǐng)?zhí)羁?。main()(inta[3M2]={2,?l,40,3,1};intb[2M2)={7,-9,?8,10};intijjc,s,c[3][2];for(i=0;i<3;i++)for(j=0;j<2;j++)(for(;k<2;k++)s+=;c[i][j]=s;)for(i=0;i<3;i++)(for(j=0;j<2;j++)printfC*%6d'\c[i]U]);))【例4.34】下面程序的功能是求出矩陣x的上三角元素之積,其中矩陣x的行、列數(shù)和元素值均由鍵盤輸入,請(qǐng)?zhí)羁铡?defineM10main()(intx[M][M];intn,ij;longs=l;printf(44Enterainteger(<=10):\n^);scanf("%d”,&n);printf(4*Enter%ddataoneachlineforthearrayx\n",n);for()for(j=O;j<n;j++)scanf("%ザ,for(i=0;i<n;i++)for() ,prinlf("%ld\n”,s);}【例4.35】下面程序的運(yùn)行結(jié)果是〇#include<stdio.h>main()(chara[2][6]={,,SunVMoon,,J;intij,len[2];for(i=0;i<2;i++)(for(j=0;j<6;j++)if(a[i][j]=='、0'){len[i]=j;break;)printf("%6s:%d\n”,a[i],len[i]);))【例4.36】下面程序的運(yùn)行結(jié)果是.#include<stdio.h>main(){inti=5;charc[6]=''abcd”;do{c[i]=c[i-l];}while(—i>0);puts(c);1【例4.37】下面程序的運(yùn)行結(jié)果是。#include<stdio.h>#defineLEN4main()(intj.c;staticcharn⑵[LEN+1]={"898〇”,"9198”};for(j=LEN-l;j>=0;j-){c=n[O][j]+n[l][j]-2*'O,;n[0][j]=c%10+,0,;}for(j=0;j<=l;j++)puts(n[j]);)【例4.38】下面程序的功能是將字符串a(chǎn)中下標(biāo)值為偶數(shù)的元素由小到大排序,其它元素不變。請(qǐng)?zhí)羁铡?include<stdio.h>main()(chara[]=,,labchmfye,,,t;intij;for(i=0;i<7;i+=2)fbr(j=i+2;j<9;)if(){t=a[i];a[i]=a[j];a[j]=t;}puts(a);printf(^^\n^^);)【例4.39】有十個(gè)字符串,下面程序的功能是在每個(gè)字符串中,找出最大字符按ーー對(duì)應(yīng)的順序存入ー維數(shù)組a中,即第i個(gè)字符串中的最大字符放入a[i]中,輸出每個(gè)字符串中的最大字符。請(qǐng)?zhí)羁铡?include<stdio.h>main()(chars[10][20];inta[10],i,j;for(i=0;i<10;i++)gets(s[i]);for(i=0;i<10;i++)forG=l;s[i]|j]!=AO\j++)if(叫vs口田])}for(i=0;i<10;i++)printf("%d%c9\i,a[i]);}【例4.40]若從鍵盤輸入52,則下面程序的運(yùn)行結(jié)果是main()(inta[8]={6,12,l8,42,44,52,67,94);intlow=0,high=7,mid,found=0,x;scnaf("%d”,&x);while((low<=high)&&(found=0))(mid=(low+high)/2;if(x>a[mid])low=mid+l;elseif(x<a[mid])high=mid-l;else(found=1;break;)}if(found=l)printf("Searchsuccessful!Theindexis%d:\n”,mid);elseprintf("Can'tsearch!\n,5);}【例4.41】下面程序的運(yùn)行結(jié)果是〇#include<stdio.h>main()charc,s[]=,,ABCCDAM;intk;for(k=l;(c=s[k])!=,\O,;k++)(switch(c)(case'A':putchar('%');continue;caseB:++k;break;default:putcharC**);case'C':putchar(t&,);continue;)putchar(‘#');)}【例4?42]下面程序的運(yùn)行結(jié)果是〇#include<stdio.h>main()(inti=0;chara[]ゴabm",b[]=''aqid”,c[10];while(a[i]!=,\0,&&b[i]!=,\0,){if(a[i]>=b[i])c[i]=a[i]-32;elsec[i]=b[i]-32;++i;)c[i]=>\0,;puts(c);)【例4.43】程序填空,以下程序用于統(tǒng)計(jì)字符串中最長(zhǎng)単詞的長(zhǎng)度及其在字符串中的位置,其中單詞全由字母組成。#include<stdio.h>intalph(charc){if((c>='a'&&c<='z')II(c>='A'&&c<='Z'))elsemain()staticcharstring1|={'*1amh叩py."};intlen=O,i,length=O,flag=l,p,pl;for(i=0;;i++)if(alph(string[i]))if(flag)(pl=i;; /?將取位置標(biāo)記flag置為0*/len++;)else; /?單詞長(zhǎng)度增1*/else{flag=l;if(len>length)/?將最大單詞長(zhǎng)度放入!ength*/Ilength=len;p=pl;)Len=0;)printf("最長(zhǎng)的單詞:つ;for(i=p;i<p+length;i++)printf("%c”,stringロ]);printf('へrT);)【例4.44]有以下程序,執(zhí)行后輸出結(jié)果是〇#include<stdio.h>main(){inta[4H4]={{123?4},{0,.12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};inti,j,s=O;for(i=0;i<4;i++)(for(j=0;j<4;j++){if(a[i]UJ<0)continue;if(a[i][j]==O)break;s+=a[i]Q];printf("%d\n”,s);)【例4.45】下面程序?qū)⒍S數(shù)組a的行和列元素互換后存到另一個(gè)二維數(shù)組b中,請(qǐng)?zhí)羁?。main()(inta[2][3]={{l,2,3},{4,5,6});intb[3][2],i,j;printf(*'arraya:\n");for(i=0;i<=l;i++){for(j=0;;j++){printf("%5d”,a[i][jD;}printf('へn");)printf("arrayb:\n");for(i=0;;i++)(for(j=0;j<=l;j++)printfC4%5d,\b[i][j]);printf(’ヘn");})[例4.46]下面程序的運(yùn)行結(jié)果是〇main(){inta[6][6],i,j;for(i=l;i<6;i++)for(j=l;j<6;j++)a[i]U]=(i/j)*G/i);for(i=l;i<6;i++)(for(j=l;j<6;j++)printf("%2d”,a國(guó)5);printf("\n");))【例4.47]ド面程序的功能是從鍵盤上輸入一個(gè)大寫字母,要求按字母的順序打印出3個(gè)相鄰的字母,指定的字母在中間.若指定的字母為Z,則打印YZA;若指定的字母為A則打印ZAB.請(qǐng)?zhí)羁?#include<stdio.h>main()chara[3],c;inti;c=getchar();a[l]=c;if(c==Z*)(a[2]=A,;elseif(c=,A,){a[O]=Z;elsefor(i=0;i<3;i++)putchar(a[i]);}【例4.48】下面程序的運(yùn)行結(jié)果是.#include<stdio.h>main()(inti,r;charsl[8O]="bus";chars2[80]=,,book,\for(i=i^O;s1[i]!=,\0,&&s2[i]!=,\O,;i++)if(sl[i]==s2[i])i++;else(r=sl[i]-s2[i];break;}printf(,,%d,\r);)【例4.49]下面程序的運(yùn)行結(jié)果是.#include<stdio.h>main()inta[9]={0,6,12,18,42,44,52,67,94);intx=52,i,m,n=9;i=n/2+1;m=n/2;while(m!=O)(if(x<a[i]){i=i-m/2-l;m=m/2;}elseif(x>a[i]){i=i+m/2+l;m=m/2;)elsebreak;}printffTheindexis:%d”,i);)【例4.50】下面程序的運(yùn)行結(jié)果是.#include<stdio.h>main()(charaロゴmorning”4;inti,j=O;for(i=1;i<7;i++)if(a[j]<a[i])j=i;t=a[j];a[j]=a[7];a[7]=t;puts(a);)【例4.51]下面程序的功能是將二維數(shù)組a中每個(gè)元素右移一列,最右一列換到最左一列,移后的數(shù)組存到另ー數(shù)組b中,并按矩陣形式輸出b。請(qǐng)?zhí)羁?。main(){inta[2][3]={4,5,6,l,2,3},b[2][3];inti,j;printf(*'arraya:\n");for(i=0;i<=l;i++)for(j=l;j<3;j++)for(;i++)b[i][0]=a[i][2];printf(4tarrayb:\n“);for(i=0;i<2;i++){for(j=0;j<3;j++)printf('l%5d",b[i][j]);【例4.52】從鍵盤輸入一行句子,統(tǒng)計(jì)其中單詞的個(gè)數(shù),補(bǔ)充程序使之完整ユ#include<stdio.h>main()(chars[80];inti,num=O;gets(s);while(s[i]!=,\O,)(if((i==O)&&(s[i]!=,4))num++;elseif(&&)num++;i++;)printfC6num=%d,,,num);)[例夂53]下列count函數(shù)用于計(jì)算子串substr在母串st『中出現(xiàn)的次數(shù)。intcount(char*strTchar*substr)(intx,y,z;intnum=0;for(x=O;str|x]!==;x++)for(y=,z=0;substr[z]==str[y];z++,y++)if(substr[]=ニへ。')(num++;break;)return();}【例4?54]下面程序的運(yùn)行結(jié)果是。#include<stdio.h>main()(intij;staticinta|10]={1,14,1,1,1,1,1,1,1);for(i=0;i<l0;i++)for(j=0;j<i;j++)a[i]=a[i]+a[j];for(i=0;i<10;i++)printfC'%d",a[i]);printf(ヽ”);)第五章指針【要點(diǎn)歸納】1、指針變量在C語(yǔ)言中允許用ー個(gè)變量來(lái)存放指針,這種變量稱為指針變量。在C語(yǔ)言中,提供了兩種指針運(yùn)算符:*:取指針目標(biāo)運(yùn)算符&:取地址運(yùn)算符2、指針的說(shuō)明和初始化指針說(shuō)明的一般形式如下:數(shù)據(jù)類型?指針名;說(shuō)明:與普通變量不同的是,說(shuō)明指針時(shí)指定的數(shù)據(jù)類型并不是指針變量本身的數(shù)據(jù)類型,而是其目標(biāo)的數(shù)據(jù)類型。無(wú)論目標(biāo)數(shù)據(jù)類型如何,所有指針都是具有相同格式的地址量,隨著機(jī)器硬件不同,地址量的數(shù)據(jù)箕度也丕(可員指針初始化的一般形式如下:數(shù)據(jù)類型?指針名=初始地址值:說(shuō)明:指針初始化的過(guò)程是:系統(tǒng)按照給出的數(shù)據(jù)類型,在ー定的存儲(chǔ)區(qū)域?yàn)樵撝羔樂(lè)峙浯鎯?chǔ)空間,同時(shí)把初始值置入指針的存儲(chǔ)空間內(nèi),從而該指針就指向了初始地址值所給定的內(nèi)査空回ユ3、指針運(yùn)算⑴指針與整數(shù)的加減運(yùn)算C語(yǔ)言的地址計(jì)算規(guī)定,ー個(gè)地址量加上或減去ー個(gè)整數(shù)n,其計(jì)算結(jié)果仍然是ー個(gè)地址量,它是以運(yùn)算量為基點(diǎn)的前方或后方第n個(gè)數(shù)據(jù)的地址。對(duì)于目標(biāo)類型為type的指針p,p+n表示的實(shí)際位置的地址值是:p-i-n*sizeof(type)〇⑵指針相減在C語(yǔ)言中,兩個(gè)地址量相減,并非它們的兩個(gè)地址值之間直接做減法運(yùn)算,兩個(gè)指

溫馨提示

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