C語言程序設(shè)計(jì)輔導(dǎo)資料(不帶自測題)_第1頁
C語言程序設(shè)計(jì)輔導(dǎo)資料(不帶自測題)_第2頁
C語言程序設(shè)計(jì)輔導(dǎo)資料(不帶自測題)_第3頁
C語言程序設(shè)計(jì)輔導(dǎo)資料(不帶自測題)_第4頁
已閱讀5頁,還剩108頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

第二章數(shù)據(jù)類型及其運(yùn)算符【要點(diǎn)歸納】1、基本數(shù)據(jù)類型C語言的數(shù)據(jù)類型有基本數(shù)據(jù)類型和非基本數(shù)據(jù)類型之分。(基本類型字符型浮點(diǎn)型枚舉類型(基本類型字符型浮點(diǎn)型枚舉類型單精度型

I雙精度型數(shù)據(jù)類型< !數(shù)組類型構(gòu)造類型結(jié)構(gòu)體類型

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

位)取反得到。對于用補(bǔ)碼表示的數(shù)據(jù),還原為原碼的方法如下:對于正數(shù)(補(bǔ)碼表示的符號(hào)位為0),原碼與補(bǔ)碼相同。對于負(fù)數(shù),原碼一定為負(fù)數(shù),其絕對值為除符號(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)常量四種類型。字符型常量字符型常量是指用ー對單引號(hào)括起來的一個(gè)字符。字符串常量字符串常量是指用ー對雙引號(hào)括起來的一串字符。轉(zhuǎn)義字符轉(zhuǎn)義字符是C語言中一種特殊形式的字符。1 1字符形式功能i5換行! ?\t橫向跳格(即跳到下ー個(gè)輸出區(qū))c\v豎向跳格M>遇格?碑為び慎工マ刎?ー河)V回車(軒扌徳??!しの%ルケ升共?V走抵換貝(存オぐ值到T黃畀.1\\反鮮杠字符"ぐV單引號(hào)(?號(hào))字符w1到S位8進(jìn)修我所代表的字符\xhh1到2位16進(jìn)制敷所代我的字符圖2.8各種字符格式.例:\ddd三位ハ進(jìn)制\xhh二位十六進(jìn)制符號(hào)常量C語言允許將程序中的常量定義為ー個(gè)標(biāo)識(shí)符,稱為符號(hào)常量。例:#definePI3.14159264、運(yùn)算符運(yùn)算符:狹義的運(yùn)算符是表示各種運(yùn)算的符號(hào)。表達(dá)式:使用運(yùn)算符將常量、變量、函數(shù)連接起來,構(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)算符<、<=,>、>=,=、!=⑹邏輯運(yùn)算符!、&&、||⑺逗號(hào)運(yùn)算符表達(dá)式1,表達(dá)式2,…⑻條件運(yùn)算符c?el:e2⑼長度運(yùn)算符sizeof()(ゆ位運(yùn)算符?、&、|、3>>、?5、類型轉(zhuǎn)換⑴數(shù)據(jù)的混合運(yùn)算和類型自動(dòng)轉(zhuǎn)換C語言允許不同類型的數(shù)據(jù)混合運(yùn)算,但此時(shí)要遵循一定的規(guī)則,將運(yùn)算符兩邊的操作數(shù)轉(zhuǎn)換成共同的類型,具體轉(zhuǎn)換原則是將運(yùn)算符兩邊的數(shù)據(jù)轉(zhuǎn)換成為它們之中數(shù)據(jù)最長的數(shù)據(jù)類型,以保證運(yùn)算的精度不會(huì)低。double*—floatunsignedint-?—char,short⑵強(qiáng)制類型轉(zhuǎn)換(類型名稱)(表達(dá)式)注:(1)類型說明和表達(dá)式都需要加括號(hào)(單個(gè)變量可以不加括號(hào)):(2)無論隱式轉(zhuǎn)換,強(qiáng)制轉(zhuǎn)換都是臨時(shí)轉(zhuǎn)換,不改變數(shù)據(jù)本身的類型和值。6、C語言語句ー個(gè)C程序應(yīng)包括數(shù)據(jù)描述(由數(shù)據(jù)聲明部分來實(shí)現(xiàn))和數(shù)據(jù)操作(由執(zhí)行語句來實(shí)現(xiàn))兩部分。C語句分為以下五類:控制語句(9種)函數(shù)調(diào)用語句表達(dá)式語句空語句復(fù)合語句7、數(shù)據(jù)輸出在C語言中可以使用printfi(卜putchart()>puts()等函數(shù)進(jìn)行數(shù)據(jù)輸出。注:在primf()語句中,是從右向左計(jì)算輸出表達(dá)式的值。8、數(shù)據(jù)輸入在C語言中可以使用scanR)、getchar()>gets()等函數(shù)進(jìn)行數(shù)據(jù)輸入。注:(Dscanf〇函數(shù)中沒有精度控制。⑵gets(str);與scanf("%s",str);的差別是:使用gets。函數(shù)輸入的字符串可以含有空格,而scanf("%s",str);不能輸入含空格字符的字符串?!颈竟?jié)例題選編】1、選擇題【例2.1]若x、i、j和k都是int型變量,則計(jì)算下面表達(dá)式后,x的值為x=(i=4j=16,k=32)A.4B.16C.32D.52【例2.2]若有代數(shù)式辿,則不正確的C語言表達(dá)式是A.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*3【例2.3]已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語法的表達(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語言的類型的是〇A.signedshortint B.unsignedlongintC.unsignedint D.longshort【例2.5】下列定義中合法的是〇A.shor_a=l-.le-l; B.doubleb=l+5e2.5;C.longdo=0xfdaL; D.float2_end=l-e-3;【例2.6】?8在內(nèi)存中的存儲(chǔ)形式是〇A.1111111111111000 B.1000000000001000C.0000000000001000 D.1111111111110111【例2.7]數(shù)值029是一個(gè)0A,ハ進(jìn)制數(shù) B?十六進(jìn)制數(shù)C.十進(jìn)制數(shù) D.非法數(shù)【例2.8】在C語言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是A./B.++C.!=D.%【例2.9】以下符合C語言語法的賦值表達(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語言中,關(guān)于自增自減運(yùn)算符使用正確的是〇A.10~H+B.(x+y)—C.d+++d+++d++D.-H-(a-b)【例2.11】設(shè)有intx=ll;則表達(dá)式(x++*1/3)的值是〇A,3B.4C.11D.12【例2.12]已知:inti=6,j;則語句j=(++i)+(iH)后的j值是。A.4B.14C.13D.15【例2.13】設(shè)x、y、t均為int型變量,則執(zhí)行語句:x=y=3;t=-H-x||++y后,y的值為A.不定值 B.4C.3D.1【例2.14】當(dāng)c的值不為〇時(shí),以下能將c的值賦給變量a,b的是〇A.c=b=a B.(a=c)||(b=c)C.(a=c)&&(b=c)D.a=c=b【例2.15】已有定義:intx=3,y=4,z=5,則表達(dá)式!(x+y)+z_1&&y+z/2的值是0A.6B.0C.2D.1【例2.16】下列運(yùn)算符中,哪個(gè)運(yùn)算符的優(yōu)先級最高〇A.<=B.+C.||D.>=【例2.17]在C語言中,int、char和short三種類型數(shù)據(jù)所占用的內(nèi)存是。A.均為2個(gè)字節(jié) B.由用戶自己定義C,由所用機(jī)器的機(jī)器字長決定的 D.是任意的【例2.18】若有說明語句:(:1^1^=へ72,;則變量?A.包含1個(gè)字符 B.包含2個(gè)字符C.包含3個(gè)字符D.說明不合法,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è)有說明:charw;intx;floaty;doublez!則表達(dá)式w設(shè)+z-y值的數(shù)據(jù)類型為 A.floatB.charC.intD.double【例2.21】以下程序的執(zhí)行結(jié)果是〇#include<stdio.h>main()|inti=2;printfT%d,%d\n”,++i,-i);}A.1,1B.2,1C.1,2D.2,2【例2.22】當(dāng)接受用戶輸入的含空格的字符串時(shí),應(yīng)使用的函數(shù)是0A.scanf()B.gets()C.getchar()D.getc()【例2.23】下列敘述中正確的是C語言中既有邏輯類型也有集合類型C語言中沒有邏輯類型但有集合類型C語言中有邏輯類型但沒有集合類型C語言中既沒有邏輯類型也沒有集合類型【例2.24】以下錯(cuò)誤的敘述是。A.在C程序中,逗號(hào)運(yùn)算符的優(yōu)先級最低B.在C程序中,APH和aph是兩個(gè)不同的變量C.若a和b類型相同,在計(jì)算了賦值表達(dá)式a=b后b中的值將放入a中,而b中的值不變D.當(dāng)從鍵盤輸入數(shù)據(jù)時(shí),對于整型變量只能輸入整型數(shù)值,對于實(shí)型變量只能輸入實(shí)型數(shù)值【例2.25】長整型!ong數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式是A.ASCII碼B.原碼C.反碼D.補(bǔ)碼【例2.26】字符型常量在內(nèi)存中存放的是A.ASCII碼B.BCD碼C,內(nèi)部碼 D.十進(jìn)制碼【例2.27】字符串常量“\\\22a,0\n”的長度是A.8 B.7 C.6 D.5【例2.28】設(shè)intx=l,y=l;表達(dá)式(!x||y-)的值是A.0 B.1 C.2 D.-1【例2.29】已知:intx;則使用逗號(hào)表達(dá)式(x=4*5,x*5),x+25的結(jié)果是,變量x的值為0A.20B.100C.45D,表達(dá)式不合法【例2.30I邏輯運(yùn)算符兩側(cè)運(yùn)算對象的數(shù)據(jù)類型 。A.只能是〇或1 B.只能是〇或非〇正數(shù)C.可以是整型或字符型數(shù)據(jù) D.可以是任何類型的數(shù)據(jù)【例2.31】以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main()(printfT%f\n”,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("%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語句后,x的值是〇【例2.36]若w=l,x=2,y=3,z=4J則條件表達(dá)式w>x?w:y<z?y:z的結(jié)果是〇【例2.37]在C語言中,ー個(gè)int型數(shù)據(jù)在內(nèi)存屮占2個(gè)字節(jié),則int型數(shù)據(jù)的取值范圍為?【例2.38]要將一個(gè)!6位二進(jìn)制的整型變量的高8位清零,只保其留低8位,可用的方法是。【例2.39]若x和n均是int型變量,且x和n的初值均為5,則計(jì)算表達(dá)式后x的值為,n的值為〇x+=n++【例2,40]已知字母a的ASCII碼為十進(jìn)制數(shù)971目.設(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.44]若有定義:厠2=2那=3;£!〇@1乂=3.5,尸2.5;則ド面表達(dá)式的值為(float)(a+b)/2+(mt)x%(int)y【例2.45I若有定義: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);pril!氓"%d,%d\n”,mJ);}【例2.47】有以下程序,輸入123456789,其輸出結(jié)果是。#include<stdio.h>main(){inta,b;floatf;scanrt%2d%*2d%2d%f\&a,&b,&f);printfT%d,%d,%f\n'',a,b,f);}【例2.48】以下程序的執(zhí)行結(jié)果是〇#include<stdio.h>main()(inta,b,c;a=b=l;c=a++-l;printff'%d,%dJ,a,c);c+=-a+++(++b||-H-c);printfC'%d,%d\n”,a,c);)【例2.49】以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main()(inti=10;printf("%d,%d,%d”,i--,Ji--);)【例2.50】以下程序的執(zhí)行結(jié)果是〇#include<stdio.h>main()inta=-32768,b;b=a-l;printf(tta=%d,b=%d,\a,b);}【例2.51】以下程序的執(zhí)行結(jié)果是〇#include<stdio.h>main(){intx=042,y=067,z;z=(x?2)&(y?3);printグ%}【例2.52】以下程序的執(zhí)行結(jié)果是0#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;print或“%d,%d,%d\n”,a,b,c);第三章選擇語句和循環(huán)語句【要點(diǎn)歸納】1、if語句If語句有三種使用形式⑴單分支if語句。if(條件)語句;⑵雙分支if語句。if(條件)語句1;else語句2;(3)多分支if語句。if(〈條件1〉)語句1;elseif(〈條件2〉)語句2;elseif(〈條件n》)語句n;else語句n+1;2、switch(開關(guān))語句switch語句用于方便地從多個(gè)語句中選擇ー個(gè)或多個(gè)語句執(zhí)行。switch(〈表達(dá)式〉){case常量表達(dá)式1:語句!;case常量表達(dá)式2I語句2;case常量表達(dá)式n:語句n;default:語句n+1;}注:表達(dá)式的值一定是整型值,若為其他類型,最后都要轉(zhuǎn)換為整型數(shù)。3、while循環(huán)語句while(條件)語句;注:先判斷條件,后執(zhí)行語句;4、do—while循環(huán)語句do語句;while(條件);注:先執(zhí)行ー次循環(huán)體,再判斷條件。While和do?while語句的差別是,后者至少執(zhí)行“語句”一次,而前者有時(shí)一次也不執(zhí)行語句。5、fbr循環(huán)語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句;注:省略各個(gè)表達(dá)式時(shí),應(yīng)能夠知道其意義。⑴“表達(dá)式1”可以省略,此時(shí)應(yīng)在該語句之前給循環(huán)變量賦初值。其后的分號(hào)不能省略。(2)“表達(dá)式2”可以省略,即無判定條件,循環(huán)無終止進(jìn)行下去。需要在循環(huán)體中用break等語句退出循環(huán)。⑶“表達(dá)式3”可以省略,這樣需要在循環(huán)體“語句”中讓循環(huán)變量變化,以保證循環(huán)能正常結(jié)束?!氨磉_(dá)式ド和’‘表達(dá)式3”可以同時(shí)省略,這樣為⑴和⑶兩種情況同時(shí)出現(xiàn),需要使用相關(guān)語句保證循環(huán)結(jié)束。(5)三個(gè)表達(dá)式都可省略,這樣為⑵和⑷兩種情況同時(shí)出現(xiàn),需要使用相關(guān)語句保證循環(huán)結(jié)束。6、break語句break語句的使用格式很簡單,由關(guān)鍵字break和分號(hào)構(gòu)成,其功能如下:在switch語句中,break用來使程序流程跳出switch語句,繼續(xù)執(zhí)行switch后的語句:在循環(huán)語句中,break用來從最近的循環(huán)體內(nèi)跳出來。7、continue語句continue語句只能用于循環(huán)語句中,作用為結(jié)束本次循環(huán),即跳過循環(huán)體中尚末執(zhí)行的語句,接著進(jìn)行是否執(zhí)行下一次循環(huán)的判定?!颈竟?jié)例題選編】1、選擇題【例3.1I以下語句錯(cuò)誤的是A.if(x>y); B.if(x=y)&&(x!=O)x+=y;C.if(x!=y)scanf("%d'',&x);eslescanf("%d”,&y);D.igxvy){x++;#+;}【例3.2]C語言的if語句中,用作判斷的條件表達(dá)式為A.任意表達(dá)式 B.邏輯表達(dá)式 C.關(guān)系表達(dá)式 D.算術(shù)表達(dá)式【例3.3]為了避免在嵌套的條件語句if-else中產(chǎn)生二義性,C語言規(guī)定:else了?句總是與一配對。A.縮排位置相同的ifB.同一行上的ifC.其之后最近的if D.其之前最近的if【例3.4】以下程序的輸出結(jié)果是#include<stdio.h>main()(inti=lj=l,k=2;if((j++||k++)&&i++)printf(tl%d,%d,%d\n,,,ij,k);}A.1,1,2 B.2,2,1C.2,2,2 D.2,2,3【例3.5]已知intx=10,y=20,z=30;以下語句執(zhí)行后x,y,z的值是。氓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=20,y=30,z=20【例3.6】以下程序的運(yùn)行結(jié)果是〇main()(intm=5;if(m++>5)printH"%d\n”,m);elseprintf(tt%d\n,,,m—);}A.4 B.5C.6D.7【例3フ】以下程序的輸出結(jié)果是。main()(inta=100,x=10,y=20,ok1=5,ok2=0;氓xvy)if(y!=10)if(!okl)a=l;elseif(ok2)a=10;a=-l;

printiT%d\n”,a);A.1B.0C.-1 D.值不確定【例3.8]若a,b均是整型變量,正確的switch語句是A.switch(a)]A.switch(a)]caseLO:prin氓“case2:printf("you\n");}C.switch(a+b)(case1:printR"i\n");case2*a:printf("you\n");B.switch(a)(caseb:prin氓"i\n");case1:printff'you\n'');}D.switch(a+b)(printR"i\n'');printf("you\n");【例3.9】對fbr(表達(dá)式1;;表達(dá)式3),可理解為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-H-)?—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("%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.12】下面程序中循環(huán)體的執(zhí)行次數(shù)是0a=10;b=0;do{b+=2;a-=2+b;}while(a>=0);A.1B.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,有語法錯(cuò)誤【例3.14】以下程序的執(zhí)行結(jié)果是#include<stdio.h>main()(inta=0,i;for(i=l;i<5;i-F+){switch(i){case0:case3:a+=2;a+=3;a+=5;}printfCt%d\n,,,a);)A.31B.13C.10D.20【例3.15】下面程序的運(yùn)行結(jié)果是#include<stdio.h>main()(int戸10;do{y—;}while(—y);primfT%d'n”,y—);)A.-1B.1C.8D.0【例3.16】下面程序的功能是輸出以下金字塔圖案的是:********#include<stdio.h>main(){inti,j;fbi(i=l;i<=4;i++)(for(j=1;jv=4-i;j++)printf(4iつ;for(j=l;j<=;j++)printfT*");prin氓叭n");

)在下劃線處應(yīng)填入的是A.iB.2*i-lC.2*i+lD.i+2【例3.17】下面程序段。for(t=l;t<=100;t++){scanf("%d”,&x);if(x<0)continue;printグ%3d”,t);)A.當(dāng)x<0時(shí)整個(gè)循環(huán)結(jié)束 B.x>=0時(shí)什么也不做C.printf函數(shù)永遠(yuǎn)也不執(zhí)行 D,最多允許輸出100個(gè)非負(fù)整數(shù)【例3.18I若w,x,y,z,m均為int型變量,則執(zhí)行以下語句后的m值是0w=l;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;D.4B.D.4B.可以通過編譯但不能通過連接D,輸出$$$A.1B.2C.3【例3.19】請讀以下程序:main(){inta=5,b=0,c=0;if(a=b+c)prin氓“***\n*);elseprtatfT$$$\n”);)以上程序0A.有語法錯(cuò)誤不能通過編譯C.輸出***【例3.20】下面程序段不是死循環(huán)的是inti=100;while(1)(i=i%100+l;ifi(i>100) break;}for(;;);intk=0;do{++k;}while(k<=0);ints=36;While(s);-s;【例3.21】有一堆零件(100到200之間),如果分成4個(gè)零件ー組的若干組,則多2個(gè)零件,若分成7個(gè)零件ー組,則多3個(gè),若分成9個(gè)零件ー組,則多5個(gè)零件,下面程序是求這堆零件總數(shù),請選擇填空。#includc<stdio.h>main()(inti;for(i=100;i<200;i-H-)if((i-2)%4==0)if(!((i-3)%7))ifi[)printf(tt%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;fbr(i=l;i<=5;i-H-){if(i%2)prin氓“*”);elsecontinue;printfT#”);)printR"$\n");)A.*#*#*#$ B.#*#*#*$C.*#*#$ D.#*#*$【例3.23】下面程序的運(yùn)行結(jié)果是。#include<stdio.h>main(){intij,x=O;fbr(i=0;i<2;i-H-)(X++;for(j=0;j<=3;j++)(if(j%2)continue;x++;)X-H-;}printf,x=%d\rT,x);}A.x=4 B.x=8C.x=6D.x=122、填空題【例3.24】C語言中,break語句只能用于語句和語句中?!纠?.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的值是?!纠?.27I下列程序計(jì)算2?100的偶數(shù)的累加和,請?zhí)羁铡?include<stdio.h>main()(inti,sum=0;for()sum+=i;printfpsum=%d\n",sum);}【例3.28】以下程序的輸出結(jié)果是#include<stdio.h>main()(intx=15;while(x>10&&x<50){X-H-;if(x/3){x++;break;}elsecontinue;}print出"%d\n”,x);}【例3.29】下面程序段是找出整數(shù)的所有因子,請?zhí)羁?。scanf("%d",&x);i=l;for(;;)(if(x%i==0)prin氓"%3d”,i);i++;)【例3.30】ド面程序段是從鍵盤輸入的字符中統(tǒng)計(jì)數(shù)字字符的個(gè)數(shù),用換行符結(jié)束循環(huán)。請?zhí)羁?。intn=0,c;c=getchar();whilefc!=?\n,)(if( )n++;c=getchar();}【例3.31]等差數(shù)列的第一項(xiàng)a=2,公差d=3,下面程序的功能是在前n項(xiàng)和中,輸出能被4整除的所有的和。請?zhí)羁铡?include<stdio.h>main()(inta,d,sum;a=2;d=3;sum=O;do{sum+=a;a+=d;if()printfT%d\n”,sum);}while(sum<200);}【例3.32]請讀程序:#include<stdio.h>main()(intx=l,y=O,a=O,b=O;switch(x)(switch(y)(case0:a++;break;case1:b++;break;}a++;b++;break;)print食“a=%d,b=%d”,a,b);}上面程序的運(yùn)行結(jié)果是?!纠?.33】以ド程序?qū)斎氲末`個(gè)小寫字母,將字母循環(huán)后移5個(gè)位置后輸出,如‘a(chǎn)‘變成‘f',‘w'變成'b'。請?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è)沒有重復(fù)的三位偶數(shù)。請?zhí)羁铡?include<stdio.h>main(){intn,ij,k;n=O;fbr(i=l;i<=9;i-H-)fbr(k=0;k<=8;)if(k!=i)fbr(j=0;j<=9ij++) )n-H-;printfTn=%d\n”,n);}【例3.35】下面程序的功能是輸出1至100之間每位的乘積大于每位數(shù)的和的數(shù)。請?zhí)羁铡?include<stdio.h>main(){intn,k=l,s=O,m;fbr(n=l;n<=100;n-H-)(k=l;s=0;while( ){k*=m%10;s+=m%10;if(k>s)printfT%d”,n);【例3.36】下面程序的功能是求1000以內(nèi)的所有完全數(shù)。請?zhí)羁铡?說明:ー個(gè)數(shù)如果恰好等于它的因子之和(除自身外),則稱該數(shù)為完全數(shù),例如:6=1+2+3,6為完全數(shù))#include<stdio.h>main()(inta,i,m;fbr(a=l;a<=1000;a++){for(;i<=a/2;i++)if(!(a%i))=a)printf,%4d”,a);))【例3.3フ】下面程序的運(yùn)行結(jié)果是#include<stdio.h>main()(inti=l;while(i<=15)氓++i%3!=2)continue;elseprintfT%d”,i);printfTヽn");)【例3.38】下面程序的運(yùn)行結(jié)果是〇#include<stdio.h>main(){inti,j,k=19;while(i=k-l)(k=3;iRk%5=0)(i++;continue;elseif(k<5)break;i++;}printf「i=%d,k=%d\n”工k);}【例3.39】下面程序的運(yùn)行結(jié)果是。#include<stdio.h>main(){inty,a;y=2;a=l;while(y—!=-l){do)a*=y;a-H-;}while(y—);)print耳“%d,%d”,a,y);}【例3.40]以下程序的功能是根據(jù)公式e=l+丄+丄+丄+…求e的近似值,精度要求為1011!2!3!請?zhí)羁铡?include<stdio.h>main(){inti;doublee,new;new=1.0;fbr(i=l;;i++){new/=(double)i;e+=new;}prin<lte=%f\n,,,e);)【例3.41】下面程序的功能是打印!00以內(nèi)個(gè)位數(shù)為6且能被3整除的所有數(shù)。請?zhí)羁铡?include<stdio.h>main(){intij;for(i=0;;i++)j=i*10+6;ifl )continue;printf("%d"j);)}【例342】下面程序的功能是計(jì)算100到1000之間有多少個(gè)數(shù)其各位數(shù)字之和是5.請?zhí)羁铡?include<stdio.h>main()(inti,s,k,count=0;for(i=100;i<=1000;i-HF){s=0;k=i;while()(s+=k%10; k=;}if(s!=5)elsecount++;}print出"%d”,count);)【例3.43】下面程序的運(yùn)行結(jié)果是#include<stdio.h>main()(inti=5;do{switch(i%2){case4:i--;break;case6:i--;continue;}i-printfT%d”,i);}while(i>0);【要點(diǎn)歸納】1、i維數(shù)組任何數(shù)組在使用之前必須先說明,即指定數(shù)組名稱,大小和元素類型。一旦說明了一個(gè)數(shù)組,系統(tǒng)就會(huì)為它在內(nèi)存中分配ー個(gè)所申請大小的存儲(chǔ)空間。⑴ー維數(shù)組的說明類型說明符數(shù)組名[常量表達(dá)式];說明:①數(shù)組名是ー個(gè)地址常量,不允許對其值進(jìn)行修改。②“常量表達(dá)式”表示該數(shù)組擁有多少個(gè)元素,即數(shù)組的大小,它必須是正數(shù)數(shù)。⑵ー維數(shù)組元素的引用數(shù)組名[下標(biāo)]說明:下標(biāo)是某個(gè)數(shù)組元素到數(shù)組開始元素的位置偏移量;數(shù)組下標(biāo)從0開始。⑶維數(shù)組的初始化對數(shù)組的全部元素賦初始值;對數(shù)組的部分元素賦初始值;在對數(shù)組的全部元素賦初值時(shí),也可以將數(shù)組定義為ー個(gè)不確定長度的數(shù)組。2、二維數(shù)組⑴二維數(shù)組的說明類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];注:①二維數(shù)組中元素的順序是:按行優(yōu)先存放,即在內(nèi)存中先順序存放第一行的元素,再存放第二行的元素,依此類推。②二維數(shù)組可看成是ー個(gè)特殊的一維數(shù)組,它的元素又是ー維數(shù)組。⑵二維數(shù)組元素的引用數(shù)組名[下標(biāo)1][下標(biāo)2]例:intA[M][N]其元素A[i][j]排在第i*N+j+l個(gè)存儲(chǔ)位置上。⑶二維數(shù)組的初始化分行給二維數(shù)組賦初始值;按數(shù)組存儲(chǔ)的排列順序賦初始值:? 允許省略第一維長度說明來給二維數(shù)組賦初始值。3、字符數(shù)組字符數(shù)組是用來存放若干個(gè)字符的數(shù)組,其定義和引用方式與其它數(shù)組相同。4、字符串?dāng)?shù)組字符串?dāng)?shù)組的每個(gè)元素又都是ー個(gè)字符串。字符串?dāng)?shù)組是二維數(shù)組。4、字符串處理函數(shù)⑴puts(字符數(shù)組)⑵gets(字符數(shù)組)⑶strcat(字符數(shù)組1,字符數(shù)組2)⑷strcpy(字符數(shù)組1,字符數(shù)組2)(5)strcmp(字符串1,字符串2)(6)strlen(字符串)⑺strlwr(字符串)(8)strupr(字符串)【本節(jié)例題選編】1、選擇題【例4.1】以下有關(guān)C語言中數(shù)組的說法正確的是數(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]若有說明:inta[][3]={0,0};則下列所述正確的是數(shù)組a的每個(gè)元素都可得到初值0;二維數(shù)組a的第一維的大小為4;數(shù)組a的行數(shù)為2;只有元素a⑼⑼和a⑼ロ]可得到初值〇,其余元素均得不到初值【例4.3】以下對一維數(shù)組a的正確說明是〇A.inta(10); B.intn=10,a[n];C.intn; D.#defineSIZE10scanf("%d'',&n); inta[SIZE];inta[n];【例4.4]若有說明:inta[3][4];則對a數(shù)組元素的正確引用是A.a[2][4] B.a[l,3]C.a[l+l][0]D.a(2)(l)【例4.5】以下錯(cuò)誤的語句是static charword[ ]={'C','h','i','n','a'};static charword口={"China"};static charword[ ]="China";static charword[ ]=,China';【例4.6]下面程序(每行程序前面的數(shù)字表示行號(hào))main(){floata[10]={0.0};inti;fbr(i=O;i<3;i++)scanf(tt%d,,,&a[i]);fbr(i=l;i<10;i++) a[0]=a[0]+a[i];printff%f\n",a[〇]);}A.沒有錯(cuò)誤 B.第3行有錯(cuò)誤C.第5行有錯(cuò)誤D.第7行有錯(cuò)誤【例4.7]下面程序的運(yùn)行結(jié)果是〇main()inta[6],i;fbr(i=l;i<6;i-H-)|a[i]=9*(i-2+4*(i>3))%5;printfT%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]以下對C語言字符數(shù)組的描述錯(cuò)誤的是A.字符數(shù)組可以存放字符串字符數(shù)組中的字符串可以進(jìn)行整體輸入輸出可以在賦值語句中通過輸值運(yùn)算符“=”對字符數(shù)組整體賦值D.字符數(shù)組的下標(biāo)從〇開始【例4.9】有下面的程序段chara[3],b[尸’China”;a=b;printfp%s”,a);則〇A,運(yùn)行后將輸出ChinaB,運(yùn)行后將輸出ChC.運(yùn)行后將輸出Chi D.編譯出錯(cuò)【例4.10】判斷字符串si是否大于字符串s2,應(yīng)當(dāng)使用〇A.if(sl>s2) B.if(strcmp(sl,s2))C.ifi(strcmp(s2,s1)>0) D.if(strcmp(s1,s2)>0)【例4.11]已知:charcl[]={MabcdM);charc2[]={4a\,b\,c,,,d,}?則下所述正確的是數(shù)組cl和數(shù)組c2等價(jià)數(shù)組cl和數(shù)組c2的長度相同數(shù)組cl的長度大于數(shù)組c2的長度以上都不對【例4.12】下面程序的運(yùn)行結(jié)果是〇#include<stdio.h>main()(charstr[]="SSSWLIA”,c;intk;fbr(k=2;(c=str[k])!=,\O,;k++){switch(c)|caseT:++k;break;case'L':continue;default:putchar(c);continue;}putchar('*');})A.SSW*B.SW*C.SW*AD.SW【例4.13】已知:charstring![10]=^^abcde^^,st^ing2[10]=^^xyz^^:則下列C語句輸出結(jié)果是ーprintfi("%d”,strlen(strcpy(stringl,string2)));A.3 B.5

C.8 D.9【例4.14】有以下程序:#include<stdio.h>#include<string.h>main()chars[]=,\nl23\V,;printf("%d,%d\n,,Jstrlen(s),sizeofifs));B.6,7D.6,6執(zhí)行后的輸出結(jié)果是ーA.賦初值的安符串有錯(cuò)C.B.6,7D.6,6【例4.15】下面程序的功能是將字符串s中所有的字符c刪除。請選擇填空。#include<stdio.h>main()chars[80];inti,j;gets(s);for(i=j=O;s[i]!=,\0,;i++)if(s[i]!=,c,)sU]=へ?!?puts(s);A.s[j++]=s[i]C.s[j]=s[i];j-nFA.s[j++]=s[i]C.s[j]=s[i];j-nFB.s[+4j]=s[i]D.sU]=s[i]【例4.16】以下程序的輸出結(jié)果是.#include<stdio.h>main()intb[3][3]={0/20,l20,1ヤ0;fbr(i=O;i<3;i-H-)for(j=l;j<=i;j++)E+b[i][b[j]皿;printfT%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;fbr(i=O;i<3;i++)for(j=O;j<=i;j++)s+=a[i][j];primfT%d\n”,s);該程序的輸出結(jié)果是A.18 B.19C.20 D.21【例4.18】有以下程序main(){inti;fbr(i=0;iv3;i++)switch(i){case1:printf(M%d",i);case2:printf(M%d",i);default:printf("%d”,i);}}執(zhí)行后輸出結(jié)果是〇A)011122 B)012 C)012020 D)1202、填空題【例4.19]若有定義:staticinta[3][4]={{l,2},{0},{4,6,8,10));則初始化后,a[l][2]=,a[2][l]=。【例4.20]在C語言中,二維數(shù)組元素在內(nèi)存中的存放順序是?!纠?.21]若二維數(shù)組a有m列,則在a[i]用前的元素個(gè)數(shù)為?!纠?.22]判斷字符串a(chǎn)和b是否相等,應(yīng)當(dāng)使用〇【例4.23】以下程序可求出矩陣a的兩條對角線上的元素之和,請?zhí)羁铡?include<stdio.h>main()(inta[3][3]={L3,6,7,911,14,15,17),sum1=0,sum2=0,i,j;fbr(i=O;i<3;i++)for(j=0;j<3;j++)if(i=弓)sum1=sum1+a[i][j];fbr(i=0;i<3;i++)for(;;j-)尸=2)sum2=sum2+a[i][j];printfC^sum1=%d,sum=%d\n,\sum1,sum2);}【例4.24]設(shè)數(shù)組a包括10個(gè)整型元素,下面程序的功能是求出a中各相鄰兩個(gè)元素的和,并將這些和存在數(shù)組b中,按每行3個(gè)元素的形式輸出。請?zhí)羁?。main()inta[10],b[10],i;fbr(i=O;i<10;i++)scanfC%d'',&a[i]);fbr(;i<10;i++)fbr(i=l;i<10;i-H-)(printf("%3d”,b[i]);iff ==0)printfTW");}}【例4.25】下面程序中的數(shù)組a包括10個(gè)整數(shù)元素,從a中第二個(gè)元素起,分別將后項(xiàng)減前項(xiàng)之差存入數(shù)組b,并按每行3個(gè)元素輸出數(shù)組b,請?zhí)羁?。main(){intaU〇],bu〇],i;fbr(i=O;;i++)scanfC%d”,&a[i]);fbr(i=l;;i-H-)b[i]=a[i]-a[i-l];fbr(i=l;i<10;i++)(printf(“%3d”,b[i]);if()printfTXn");【例4.26】以下程序可求出所有的水仙花數(shù),(提示:所謂水仙花數(shù)是指一個(gè)三位正整數(shù),其各位數(shù)字的立方之和等于該正整數(shù)。例如:407=4*4*4+0*0*0+7*7*7,故407是ー個(gè)水仙花數(shù))請?zhí)羁?。main(){intx,y,z,a[8],m,i=O;printf("Thespecialnumbersare(inthearrangeof1000:\n)");fbr(;m++)(x=m/100;y= ;z=m%10;ififx*100+y*10+z==x*x*x+y*y*y+z*z*z)i++;fbr(x=O;x<i;x++)printfC4%6dM,a[x]);}【例4.27】下面程序的功能是生成并打印某數(shù)列的前20項(xiàng),該數(shù)列第1,2項(xiàng)分別為0和1,以后每個(gè)奇數(shù)編號(hào)的項(xiàng)是前兩項(xiàng)之和,偶數(shù)編號(hào)的項(xiàng)是前兩項(xiàng)差的絕對值。生成的20個(gè)數(shù)存在ー維數(shù)組x中,并按每行4項(xiàng)的形式輸出,請?zhí)羁?。main(){intx[21],ij;x[l]=O;x[2]=l;i=3;do{x[i]=.x[i+l]=;}while(i<=20);fbr(i=l;i<=20;i-H-)(printf,%5d”,x[i]);if(i%4==0)【例4.28】下面程序的功能是輸入5個(gè)整數(shù),找出最大數(shù)和最小數(shù)所在的位置,并把二者對調(diào),然后輸出調(diào)整后的5個(gè)數(shù)。請?zhí)羁?。main()(inta[5],max,min,i,j,k;fbr(i=0;i<5;i++)scanfC*%dM,&a[i]);min=a[0];fbr(i=l;i<5;i-H-)ifi[a[i]<min)(min=a[i];max=a[0];fbr(i=l;i<5;i-H-)ifi[a[i]>nax)max=a[i];printf{t4\nThcpositionofminis:%3d\n,,,k);printfi(u\nThepositionofmaxis%3d\n,,j);fbr(i=0;i<5;i-H-)printf("%5d”,a[i]);)【例4.29】下面程序的運(yùn)行結(jié)果是main(){inti,f[10];no]=fii]=i;fbr(i=2;i<10;i-H-)fIi]=f[i-2]+f[i-l];for(i=0;i<10;i-H-){iRi%4==0)printfi("\n”);printfC%3d”,f[i]);))【例4.30】設(shè)數(shù)組a中的元素均為整數(shù),以下程序是求a中偶數(shù)的個(gè)數(shù)和偶數(shù)的平均值。請?zhí)羁?。main()(inta[l0]={1,2,3,4,5,6,7,8,9,10);intk,s,i;floatave;fbr(k=s=i=0;i<10;i++){if(a[i]%2!=0)s+=;k++;)if(k!=0)(ave=s/k;printfT%d,%f\n”,k,ave);【例4.31】當(dāng)從鍵盤輸入18并回車后,下面程序的運(yùn)行結(jié)果是0main(){intx,y,i,a[8]j,u,v;scanfT%d”,&x);y=x;i=0;do{u=y/2;a[i]=y%2;i++;y=u;}while(y>=l);fbr(j=i-l;j>=Oy-)printfT%d”,a[jD;)【例4.32】下面程序的功能是檢查ー個(gè)二維數(shù)組是否對稱(即:對所有i和j都有a[i皿請?zhí)羁铡ain()(inta[4][4]={1,2,3,4,2,2,5,6,353,7,4,6,7,4};inti,j,found=O;fbr(j=0;j<4j++)fbr(;i<4;i++)if(a[j][i]!=a[i]U])break;if(found)printfCNO");elseprin氓“YES”);)【例4.33】以下程序是求矩陣a,b的乘積,結(jié)果存入矩陣c中并按矩陣形式輸出。請?zhí)羁?。main(){inta[3][2]={2,-1,-4,0,3,1);intb[2][2]={7,-9,-8,10};intij,k,s,c[3][2];for(i=0;i<3;i++)fbr(j=0u<2y-H-){fbr(;k<2;k++)s+=:c[i]U]=s;)fbr(i=0;i<3;i-H-){fbr(j=0;j<2;j++)printfT%6d”,c皿]);【例4.34l下面程序的功能是求出矩陣x的上三角元素之積,其中矩陣x的行、列數(shù)和元素值均由鍵盤輸入,請?zhí)羁铡?defineM10main()|intx[M][M];intn,ij;longs=l;printf(4tEnterainteger(v=10):\n");scanfp%d'',&n);printfif"Enter%ddataoneachlineforthearrayx\n",n);for()for(j=O;j<n;j-H-)scanfr%d”,&x[i][j]);for(i=0;i<n;i-H-)fort ) ,printff%ld\n”,s);)【例4.35】下面程序的運(yùn)行結(jié)果是〇#include<stdio.h>main(){chara[2][6]={“Sun”,“Moon''};intij,len[2];for(i=0;i<2;i-H-)(fbr(j=0;j<6;j-H-)if(a[i]U]=,\O,){len[i]=j;break;printfi("%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);}【例4.37】下面程序的運(yùn)行結(jié)果是〇#include<stdio.h>#defineLEN4main(){intj.c;staticcharn[2][LEN+l]={"8980'',''9198”};for(j=LEN-l;j>=O;j-)(c=n[0][j]+n[l][j]-2*'0';叫〇]LH=c%10+‘〇';}fbr(j=O;j<=l;j++)puts(n[j]);)【例4.38】下面程序的功能是將字符串a(chǎn)屮下標(biāo)值為偶數(shù)的元素山小到大排序,其它元素不變。請?zhí)羁铡?include<stdio.h>main(){chara[尸'labchmfye”,t;inti,j;for(i=0;i<7;i+=2)for(j=i+2y<9;)if(){t=a[i];a[i]=a[j];a[j]=t;}puts(a);printグ\n");)【例4.39】有十個(gè)字符串,下面程序的功能是在每個(gè)字符串中,找出最大字符按ーー對應(yīng)的順序存入ー維數(shù)組a中,即第i個(gè)字符串中的最大字符放入a國中,輸出每個(gè)字符串中的最大字符。請?zhí)羁铡?include<stdio.h>main()(chars[10][20];inta[10],iJ;fbr(i=O;i<10;i++)gets(s[i]);fbr(i=O;i<10;i卄)fbr(i=0;i<10;i-H-)printロ“%d%c”,i,a[i]);}【例4.40]若從鍵盤輸入52,則下面程序的運(yùn)行結(jié)果是main(){inta[8]={6,l2,18,42,44,52,67,94);intlow=0,high=7,mid,fbund=0,x;scnaf(tt%d,,,&x);while((low<=high)&&(found==0))(mid=(low+high)/2;if(x>a[mid])low=mid+1;elseifi(x<a[mid])high=mid?l;else(fbund=1;break;))if(fbund=l)printff'Searchsuccessful!Theindexis%d:\n”,mid);elseprintfC'Can'tsearch!\n^^);}【例4.41]下面程序的運(yùn)行結(jié)果是?#include<stdio.h>main()charc同尸’ABCCDA”;intk;fbr(k=l;(c=s[k])!='\O';k++)(switch(c)(case'A':putcharC%');continue;case'B':++k;break;default:putcharC*');case,C':putchar(,&');continue;)putchar(4#');}}【例4?42I下面程序的運(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]=‘、〇';puts(c);)【例4.43】程序填空,以下程序用于統(tǒng)計(jì)字符串中最長單詞的長度及其在字符串中的位置,其中單詞全由字母組成。#include<stdio.h>intalph(charc){if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))elsemain()staticcharstring[]={MIamhappy."};intlcn=O,i,length=O,flag=l,p,pl;fbr(i=O;;i-H-)if(alph(string[i]))if(flag){Pl=i;; /?將取位置標(biāo)記flag置為0*/len++;)else; /?單詞長度增1*/else{flag=l;if(len>length)/?將最大單詞長度放入!ength*/(length=len;P=P1;|Len=0;}printf,最長的單詞:つ;fbr(i=p;i<p+length;i-H-)printロ"%c”,string。]);printf("\n");}【例4.44]有以下程序,執(zhí)行后輸出結(jié)果是〇#include<stdio.h>main(){inta[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0));intij,s=O;for(i=0;i<4;i-H-)(fbr(j=0j<4j-H-){i?a[i][j]<0)continue;iRa[i][j]==O)break;s+=a[i][j];printf("%d\n",s);}【例4.45】下面程序?qū)⒍S數(shù)組a的行和列元素互換后存到另一個(gè)二維數(shù)組b中,請?zhí)羁?。main()(inta[2][3]={{l,2,3},{4,5,6}};intb[3][2],ij;printff'arraya:\rT);fbr(i=O;i<=l;i++)(for(j=O;;j++){printf("%5d”,a皿i]);printfT\n");}printf("arrayb:\n");for(i=O;;i++)(for(j=O;j<=l;j++)prin氓‘%5d”,b[i皿);printfC'\iT);))【例4.46I下面程序的運(yùn)行結(jié)果是.main()(inta[6][6],ij;for(i=l;i<6;i-H-)fdr(j=lj<6;j++)for(i=l;i<6;i++)(for(j=l;j<6;j++)printf("%2d”,a[i][jD;printf("\n”);【例4.47】下面程序的功能是從鍵盤上輸入一個(gè)大寫字母,要求按字母的順序打印出3個(gè)相鄰的字母,指定的字母在中間.若指定的字母為Z,則打印YZA;若指定的字母為A則打印ZAB.請?zhí)羁?#include<stdio.h>main()chara[3],c;inti;c=getchar();a[l]=c;if(c=,Z,)(a[2]=,A<elseifi(c='A'){a[O]=Z;}elsefbr(i=0;i<3;i-H-)putchar(a[i]);}【例4.48]下面程序的運(yùn)行結(jié)果是.#include<stdio.h>main()(inti,r;charsl[80]=,,busM;chars2[80]=''book";fbr(i=r=0;sl[i]!=,\0,&&s2[i]!=,\0,;i++)if(sl[i]=s2[i])i++;else(r=sl[i]-s2[i];break;}printf(,,%d,,,r);}【例4.49I下面程序的運(yùn)行結(jié)果是.#include<stdio.h>main()inta[9]={0,6J2,18,42,44,52,67,94);intx=52,i,m,n=9;i=n/2+l;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;)printff'Theindexis:%d”,i);}【例4?50]下面程序的運(yùn)行結(jié)果是.#include<stdio.h>main(){chara[]=''moming”,t;intij=0;fbr(i=l;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。請?zhí)羁?。main()(inta[2][3]={4,5,6,l,2,3},b[2][3];intij;printf("arraya:\n");fbr(i=0;i<=l;i++)fbr(j=ly<3J-H-)fbr(;i++)b[i][0]=a[i][2];printfparrayb:\nM);fbr(i=0;i<2;i++)(fbr(j=0;j<3;j++)printfT*%5d”,b[i皿);)【例4.52】從鍵盤輸入一行句子,統(tǒng)計(jì)其中單詞的個(gè)數(shù),補(bǔ)充程序使之完整。#include<stdio.h>main(){chars[80];inti,num=O;gets(s);while(s[i]!=,\O,){iR(i==O)&&(s[ロ!=-))num++;elseif(&&)num++;i++;}printfV'num=%d”,num);}【例4.53]下列count函數(shù)用于計(jì)算子串substr在母串str中出現(xiàn)的次數(shù)。intcount(char*str,char*substr){intx,y,z;intnum=0;fbr(x=O;str[x]!=;x-H-)fbr(y=,z=0;substr[z]==str[y];z++,y++)if(substr[]==へ0')(num++;break;)retum();}【例4.54l下面程序的運(yùn)行結(jié)果是0#include<stdio.h>main(){intij;staticint };fbr(i=O;ivlO;i++)fbr(j=Oy<i;jH-4-)a[i]=a[i]+a[j];fbr(i=0;i〈10;i++)printf("%d"聲[i]);printfit'、");;第五章指針【要點(diǎn)歸納】1、指針變量在C語言中允許用ー個(gè)變量來存放指針,這種變量稱為指針變量。在C語言中,提供了兩種指針運(yùn)算符:*:取指針目標(biāo)運(yùn)算符&:取地址運(yùn)算符2、指針的說明和初始化指針說明的一般形式如下:數(shù)據(jù)類型?指針名;說明:與普通變量不同的是,說明指針時(shí)指定的數(shù)據(jù)類型并不是指針變量本身的數(shù)據(jù)類型,而是其目標(biāo)的數(shù)據(jù)類型。無論目標(biāo)數(shù)據(jù)類型如何,所有指針都是具有相同格式的地址量,隨著機(jī)器硬件不同,地址量的數(shù)據(jù)長度也不同。指針初始化的一般形式如下:數(shù)據(jù)類型?指針名=初始地址值:說明:指針初始化的過程是:系統(tǒng)按照給出的數(shù)據(jù)類型,在ー定的存儲(chǔ)區(qū)域?yàn)樵撝羔樂峙浯鎯?chǔ)空間,同時(shí)把初始值置入指針的存儲(chǔ)空間內(nèi),從而該指針就指向了初始地址值所給定的內(nèi)存空間。3、指針運(yùn)算⑴指針與整數(shù)的加減運(yùn)算C語言的地址計(jì)算規(guī)定,ー個(gè)地址量加上或減去ー個(gè)整數(shù)n,其計(jì)算結(jié)果仍然是ー個(gè)地址量,它是以運(yùn)算量為基點(diǎn)的前方或后方第n個(gè)數(shù)據(jù)的地址。對于目標(biāo)類型為type的指針p,p+n表示的實(shí)際位置的地址值是:p+n*sizeof(type)o⑵指針相減在C語言中,兩個(gè)地址量相減,并非它們的兩個(gè)地址值之間直接做減法運(yùn)算,兩個(gè)指針相減的結(jié)果是整數(shù),表示該兩指針?biāo)傅刂分g的數(shù)據(jù)個(gè)數(shù)。⑶指針的關(guān)系運(yùn)算目標(biāo)類型相同的兩個(gè)指針之間的關(guān)系運(yùn)算,表示的是它們指向的地址位置之間的關(guān)系。4、指針和一維數(shù)組在C語言中,指針與數(shù)組之間的關(guān)系ト分密切,它們都可以處理內(nèi)存中連續(xù)存放的ー系列數(shù)據(jù)。數(shù)組與指針在訪問內(nèi)存時(shí)采用統(tǒng)一的地址計(jì)算方法。C語言中規(guī)定,數(shù)組名代表數(shù)組的首地址,也就是說,可以將數(shù)組名(即在內(nèi)存中存放該數(shù)組的首地址)賦給指針。注:以下四種關(guān)系等價(jià)inta[10]>*pa=a;a[i]?*(a+i),pa[i],*(pa+i).5、字符指針和字符串字符指針變量和字符數(shù)組的區(qū)別如下:⑴字符數(shù)組由若干個(gè)元素組成,每個(gè)元素中放一個(gè)字符,而字

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論