2006年9月國(guó)家二級(jí)(C語(yǔ)言)筆試真題試卷(題后含答案及解析)_第1頁(yè)
2006年9月國(guó)家二級(jí)(C語(yǔ)言)筆試真題試卷(題后含答案及解析)_第2頁(yè)
2006年9月國(guó)家二級(jí)(C語(yǔ)言)筆試真題試卷(題后含答案及解析)_第3頁(yè)
2006年9月國(guó)家二級(jí)(C語(yǔ)言)筆試真題試卷(題后含答案及解析)_第4頁(yè)
2006年9月國(guó)家二級(jí)(C語(yǔ)言)筆試真題試卷(題后含答案及解析)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(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)介

2006年9月國(guó)家二級(jí)(C語(yǔ)言)筆試真題試卷(題后含答案及解析)題型有:1.選擇題2.填空題選擇題(1-10、21-40每題2分,11-20每題1分,共70分)下列各題A、B、C、D四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的,請(qǐng)將正確選項(xiàng)涂寫在答題卡相應(yīng)位置上。1.下列選項(xiàng)中不符合良好程序設(shè)計(jì)風(fēng)格的是______。A.源程序要文檔化B.?dāng)?shù)據(jù)說(shuō)明的次序要規(guī)范化C.避免濫用goto語(yǔ)句D.模塊設(shè)計(jì)要保證高耦合、高內(nèi)聚正確答案:D解析:良好的程序設(shè)計(jì)風(fēng)格可以使程序結(jié)構(gòu)清晰合理,使程序代碼便于維護(hù),因此,程序設(shè)計(jì)風(fēng)格對(duì)保證程序的質(zhì)量很重要。主要應(yīng)注意和考慮下述—些因素:1、源程序要文擋化;2、數(shù)據(jù)說(shuō)明的次序要規(guī)范化;3、語(yǔ)句的結(jié)構(gòu)應(yīng)該簡(jiǎn)單直接,不應(yīng)該為提高效率而把語(yǔ)句復(fù)雜化,避免濫用goto語(yǔ)句。模塊設(shè)計(jì)要保證低耦合、高內(nèi)聚。2.從工程管理角度,軟件設(shè)計(jì)—般分為兩步完成,它們是______。A.概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)B.過(guò)程控制C.軟件結(jié)構(gòu)設(shè)計(jì)與數(shù)據(jù)設(shè)計(jì)D.程序設(shè)計(jì)與數(shù)據(jù)設(shè)計(jì)正確答案:A解析:從工程管理角度看,軟件設(shè)計(jì)分為兩步完成:概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)(義稱結(jié)構(gòu)設(shè)計(jì))將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu)、確定系統(tǒng)級(jí)接口、全局?jǐn)?shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫(kù)模式;詳細(xì)設(shè)計(jì)確立每個(gè)模塊的實(shí)現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用適當(dāng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。3.下列選項(xiàng)中不屬于軟件生命周期開發(fā)階段任務(wù)的是______。A.軟件測(cè)試B.概要設(shè)計(jì)C.軟件維護(hù)D.詳細(xì)設(shè)計(jì)正確答案:C解析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件維護(hù)。其中軟件開發(fā)階段的任務(wù)中軟件設(shè)計(jì)階段可分解成概要設(shè)計(jì)階段和詳細(xì)設(shè)計(jì)骱段;軟件維護(hù)不屬于軟件開發(fā)階段。4.在數(shù)據(jù)庫(kù)系統(tǒng)中,用戶所見數(shù)據(jù)模式為______。A.概念模式B.外模式C.內(nèi)橫式D.物理模式正確答案:B解析:數(shù)據(jù)庫(kù)管理系統(tǒng)的三級(jí)模式結(jié)構(gòu)由外模式、模式和內(nèi)模式組成。夕模式,或子模式,或用戶模式,是指數(shù)據(jù)庫(kù)用戶所看到的數(shù)據(jù)結(jié)構(gòu),是用戶看到的數(shù)據(jù)視圖。模式,或邏輯模式,是數(shù)據(jù)庫(kù)中對(duì)全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述,是所有用戶所見到的數(shù)據(jù)視圖的總和。外模式是模式的—部分。內(nèi)模式,或存儲(chǔ)模式,或物理模式,是指數(shù)據(jù)在數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)的存儲(chǔ)介質(zhì)上的表示,即對(duì)數(shù)據(jù)的物理結(jié)構(gòu)和存取力式的描述。5.?dāng)?shù)據(jù)庫(kù)設(shè)計(jì)的四個(gè)階段是:需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)和______。A.編碼設(shè)計(jì)B.測(cè)試階段C.運(yùn)行階段D.物理設(shè)計(jì)正確答案:D解析:數(shù)據(jù)庫(kù)設(shè)計(jì)方法和步驟:需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)的相關(guān)策略。數(shù)據(jù)庫(kù)設(shè)計(jì)以下6個(gè)設(shè)計(jì)階段:需求分析階段、概念設(shè)計(jì)階段、邏輯設(shè)計(jì)階段、物理設(shè)計(jì)階段、實(shí)施階段及數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)階段。6.設(shè)有如下三個(gè)關(guān)系表下列操作中正確的是______。A.T=R∩SB.R∪SC.T=R×SD.T=R/S正確答案:C解析:從圖中可以看出,關(guān)系T是關(guān)系R和關(guān)系S的簡(jiǎn)單擴(kuò)充,而擴(kuò)充的符號(hào)為×,所以答案為T=R×S。7.下列敘述中正確的______。A.一個(gè)算法的空間復(fù)雜度大,則其時(shí)間復(fù)雜度也必定大B.一個(gè)算法的空間復(fù)雜度大,則其時(shí)間復(fù)雜度必定小C.一今算法的時(shí)間復(fù)雜度大,則其空間復(fù)雜度必定小D.上述三種說(shuō)法都不對(duì)正確答案:D解析:算法的復(fù)雜度主要包括時(shí)間復(fù)雜度和空間復(fù)雜度:算法在運(yùn)行過(guò)程中需輔助存儲(chǔ)空間的大小稱為算法的空間復(fù)雜度;算法的時(shí)間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量,即算法執(zhí)行過(guò)程中所需要的基本運(yùn)算次數(shù),為了能夠比較客觀地反映出—個(gè)算法的效率,在度量—個(gè)算法的工作量時(shí),不僅應(yīng)該與所使用的計(jì)算機(jī)、程序設(shè)計(jì)語(yǔ)言以及程序編制者無(wú)關(guān),而且還應(yīng)該與算法實(shí)現(xiàn)過(guò)程中的許多細(xì)節(jié)無(wú)關(guān)。為此,可以用算法在執(zhí)行過(guò)程中所需基本運(yùn)算的執(zhí)行次數(shù)來(lái)度量算法的工作量。8.在長(zhǎng)度為64的有序線性表中進(jìn)行順序查找,最壞情況下需要比較的次數(shù)為______。A.63B.64C.6D.7正確答案:B解析:在進(jìn)行順序查找過(guò)程中,如果線性表中的第1個(gè)元素就是被查找元素,則只需做—次比較就查找成功,查找效率最高;但如果被查找的元素是線性表中的最后—個(gè)元素,或者被查找的元素根本就不在線性表中,則為了查找這個(gè)元素需要與線性表中所有的元素進(jìn)行比較,這是順序查找的最壞情況。所以對(duì)長(zhǎng)度為n的線性表進(jìn)行順序查找,在最壞情況下需要比較n次。9.?dāng)?shù)據(jù)庫(kù)技術(shù)的根本目標(biāo)是解決數(shù)據(jù)的______。A.存儲(chǔ)問題B.共享問題C.安全問題D.保護(hù)問題正確答案:B解析:由于數(shù)據(jù)的集成性使得數(shù)據(jù)可為多個(gè)應(yīng)用所共享,特SU是在網(wǎng)絡(luò)發(fā)達(dá)的今天,數(shù)據(jù)庫(kù)與網(wǎng)絡(luò)的結(jié)合擴(kuò)大了數(shù)據(jù)關(guān)系的應(yīng)用范圍。數(shù)據(jù)的共享本身又可極大地減少數(shù)據(jù)冗余性,不僅減少了不必要的存儲(chǔ)空間,更為重要的是可以避免數(shù)據(jù)的不—致性。因此,數(shù)據(jù)庫(kù)設(shè)計(jì)的根本目標(biāo)是要解決數(shù)據(jù)共享問題。10.對(duì)下列二叉樹進(jìn)行中序遍歷的結(jié)果是______。A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG正確答案:A解析:二叉樹的中序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;并且遍歷左、右子樹時(shí),仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。11.下列敘述錯(cuò)誤的是______。A.一個(gè)C語(yǔ)言程序只能實(shí)現(xiàn)—種算法B.C程序可以由多個(gè)程序文件組成C.C程序可以由—個(gè)或多個(gè)函數(shù)組成D.一個(gè)C函數(shù)可以單獨(dú)作為—個(gè)C程序文件存在正確答案:A解析:一個(gè)C語(yǔ)言程序可以實(shí)現(xiàn)多種算法?!獋€(gè)C程序可以由—個(gè)或多個(gè)源程序文件組成,—個(gè)源程序文件由—個(gè)或多個(gè)函數(shù)組成,構(gòu)成C語(yǔ)言程序的基本單位是函數(shù),函數(shù)也是C程序中模塊化程序設(shè)計(jì)的基礎(chǔ),C函數(shù)可分為標(biāo)準(zhǔn)庫(kù)函數(shù)和用戶定義函數(shù)兩類。12.下列敘述中正確的是______。A.每—個(gè)C程序文件中都必須要有—個(gè)main()函數(shù)B.在C程序中main()函數(shù)的位置是固定的C.C程序中所有函數(shù)之間都可以相互調(diào)用,與函數(shù)所在位置無(wú)關(guān)D.在C程序的函數(shù)中不能定義另—個(gè)函數(shù)正確答案:D解析:每—個(gè)C程序由多個(gè)C程序文件組成,而每個(gè)C程序都必須有一個(gè)main()函數(shù),故每—個(gè)C程序文件中都必須有—個(gè)main()函數(shù)的說(shuō)法是錯(cuò)誤的。在C程序中所有函數(shù)都是平行的,即在定義函數(shù)時(shí)是相互獨(dú)立的,—個(gè)函數(shù)并不能從屬于另—個(gè)函數(shù),即函數(shù)不能嵌套定義,函數(shù)間可以相互調(diào)用,但不能調(diào)用main()函數(shù),main()函數(shù)的位置也不是固定的。13.下列定義變量的語(yǔ)句中錯(cuò)誤的是______。A.int_int;B._;C.charFor;D.floatUS$;正確答案:D解析:C語(yǔ)言中用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列稱為標(biāo)識(shí)符,C語(yǔ)言規(guī)定標(biāo)識(shí)符能由字母、數(shù)字和下劃線三種字符組成,且第—個(gè)字符必須為字母或下劃線。選項(xiàng)D中含有“$”,故不符合標(biāo)識(shí)符的定義。14.若變量x、y己正確定義并賦值,以下符合C語(yǔ)言語(yǔ)法的表達(dá)式是______。A.++x,y=x-B.x+1=yC.x=x+10=x+yD.double(x)/10正確答案:A解析:賦值表達(dá)式的左邊不能為算式,故選項(xiàng)B、c錯(cuò)誤;選項(xiàng)D為強(qiáng)制類型的轉(zhuǎn)換,其書寫形式為:(類型名)(表達(dá)式),即正確書寫應(yīng)為:(double)x/10或(double)(x/10);選項(xiàng)A為逗號(hào)表達(dá)式符合C語(yǔ)言語(yǔ)法。15.以下關(guān)于邏輯運(yùn)算符兩側(cè)運(yùn)算對(duì)象的敘述中正確的是______。A.只能是整數(shù)0或1B.只能是整數(shù)0或非0整數(shù)C.可以是結(jié)構(gòu)體類型的數(shù)據(jù)D.可以是任意合法的表達(dá)式正確答案:D解析:邏輯運(yùn)算符兩側(cè)的運(yùn)算對(duì)象不但可以是0和1,也可以是任意基本類型或指針類型的數(shù)據(jù),還可以是任意合法表達(dá)式。16.若有定義intx,y;并已正確給變量賦值,則以下選項(xiàng)中與表達(dá)式(x-y)?(x++):(y++)中的條件表達(dá)式(x-y)等價(jià)的是______。A.(x-y>O)B.(x-y<O)C.(x-y<0||x-y>0)D.(x-y=0)正確答案:C解析:“(x-y)?(x++):(y++)”的求解順序是:先判斷x-y的值,如果為非0(真),則執(zhí)行X++,從而表達(dá)式返回X++的值;如果0(假),則執(zhí)行y++,從而表達(dá)式返回y++的值。相當(dāng)于“或”的關(guān)系,所以選項(xiàng)C正確。17.有以下程序main(){intx,y,z;x=y=1;z=x++,y++,++y;printf(“%d,%d,%d\n”,x,y,z);}程序運(yùn)行后的輸出結(jié)果是______。A.2,3,3B.2,3,2C.2,3,1D.2,2,1正確答案:C解析:x++:表示在使用x之后,使x的值加1;y++:表示在使用y之后,使y的值加1;++y:表示在使用y之前,使y的值加1。此題中執(zhí)行z=x++,是將x的值先賦給z,所以z=1,接下來(lái)x自行加1,其結(jié)果為2:執(zhí)行y++后,y=2,執(zhí)行++后,y=3;故答案選C。18.設(shè)有定義:inta;floatb;執(zhí)行scanf(“%2d%f”,&a,&b);語(yǔ)句時(shí),若從鍵盤輸入876543.0<回車>,a和b的值分別是______。A.876和543.000000B.87和6.000000C.87和543.000000D.76和543.000000正確答案:B解析:對(duì)于unsigned型數(shù)據(jù)可以指定數(shù)據(jù)的輸入域?qū)抴,系統(tǒng)秒將自動(dòng)按w值截取所需長(zhǎng)度的數(shù)據(jù),此題中指定輸入域?qū)挒?,所以把前兩個(gè)數(shù)送給a,即a=87.后面的數(shù)值應(yīng)送給變量b,由于6后面是空格分隔符,所以系統(tǒng)認(rèn)為該數(shù)據(jù)到此結(jié)束,即將6賦給了b,所以答案選B。19.有以下程序main(){inta=0,b=0;a=10;/*給a賦值b=20;給b賦值*/printf(“a+b=%d\n”,a+b);/*輸出計(jì)算結(jié)果*/}程序運(yùn)行后的輸出結(jié)果是______。A.a(chǎn)+b=10B.a(chǎn)+b=30C.30D.出錯(cuò)正確答案:A解析:在C語(yǔ)言中,注釋是用于協(xié)助讀者更好地理解程序,它不會(huì)被系統(tǒng)編譯執(zhí)行,此題中第—處的注釋內(nèi)容包括:“/*給a賦值b=20;給b賦值*/”,故本題中“b=20;”在程序中不起作用,所以輸出語(yǔ)句執(zhí)行的a+b的值為10+0的值,即輸出為“a+b=10”。20.在嵌套使用if語(yǔ)句時(shí),C語(yǔ)言規(guī)定else總是______。A.和之前與其具有相同縮進(jìn)位置的if配對(duì)B.和之前與其最近的if配對(duì)C.和之前與其最近的且不帶else的if配對(duì)D.和之前的第—個(gè)if配對(duì)正確答案:C解析:在嵌套使用if語(yǔ)句時(shí),C語(yǔ)言規(guī)定else總是和之前與其最近的且不帶else的if配對(duì)。21.下列敘述中正確的是______。A.break語(yǔ)句只能使用switch語(yǔ)句B.在switch語(yǔ)句中必須使用defaultC.break語(yǔ)句必須與switch語(yǔ)句中的case配對(duì)使用D.在switch語(yǔ)句中,不一定使用break語(yǔ)句正確答案:D解析:在switch語(yǔ)句中,break語(yǔ)句主要起到在執(zhí)行一個(gè)case分支后,使流程跳出switch結(jié)構(gòu),即終止switch語(yǔ)句的執(zhí)行,但最后—個(gè)分支(default)可以不加break語(yǔ)句。22.有以下程序main(){intk=5;while(-k)printf(“%d”,k-=3);printf(“\n”);}執(zhí)行后的輸出結(jié)果是______。A.1B.2C.4D.死循環(huán)正確答案:A解析:此題中首先給k賦初值5,執(zhí)行while語(yǔ)句:中的表達(dá)式“--k”,k先自行減1結(jié)果為4,滿足while執(zhí)行條件輸出:k=k-3=4-3=1;此時(shí)輸出結(jié)果為1。返回執(zhí)行while語(yǔ)句,重復(fù)上面的操作,while后的表達(dá)式為0,退出循環(huán),所以最后的輸出結(jié)果為1。23.有以下程序main(){inti;for(i=1;i<=40;i++){if(i++%5=0)if(++i%8=0)printf(“%d”,i);}printf(“\n”);}A.5B.24C.32D.40正確答案:C解析:在滿足for語(yǔ)句條件下,第—個(gè)if語(yǔ)句的條件是指i先對(duì)5取余后,再自行加1;第二個(gè)if語(yǔ)句的條件是指:i=i+1后,再對(duì)8取余。設(shè)可以滿足第—個(gè)if語(yǔ)句的值為:x,那么可以滿足第二個(gè)if語(yǔ)句的值為:x+2,轉(zhuǎn)換為方程組:x=32,所以答案選C。24.以下選項(xiàng)中,值為1的表達(dá)式是______。A.1-’0’B.1-’、0’C.’1’-0D.’\0’-’0’正確答案:B解析:‘0’代表ASCⅡ碼為48的字符,‘\0’代表ASCⅡ碼為0的字符,‘1’代表ASCⅡ碼為49的字符,所以只有選項(xiàng)B的表達(dá)式的值為1。25.有以下程序fun(intx,inty){return(x+y);}main(){inta=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf(“%d\n”,sum);}A.6B.7C.8D.9正確答案:C解析:在fun((a++,b++,a+b),c++)中,先算括號(hào)內(nèi)的(a++,b++,a+b)逗號(hào)運(yùn)算,即先算出a++的值,a=2;再算出b++的值,b=3;最后算出a+b的值,a+b=2+3=5,整個(gè)逗號(hào)表達(dá)式的值為最后a+b的值即為5;接下來(lái)調(diào)用fun函數(shù),此時(shí)原語(yǔ)句變?yōu)椋簊mn=fun(5,C++);進(jìn)行運(yùn)算,c++表示在使用c以后再將c的值加1,所以結(jié)果為:5+3=8。26.有以下程序main(){chars[]=“abcde”;s+=2;printf(“%d\n”,s[0]);}執(zhí)行后的結(jié)果是______。A.輸出字符a的ASCⅡ碼B.輸出字符c的ASCⅡ碼C.輸出字符cD.程序出錯(cuò)正確答案:D解析:此題中s是—個(gè)字符數(shù)組,而字符數(shù)紐是在編繹時(shí)為它分配內(nèi)存單元的,即此字符數(shù)組的地址在編譯時(shí)是確定的,所以對(duì)此地址變量并不能賦值,故語(yǔ)句“s+=2;”錯(cuò)誤,故程序出錯(cuò)。27.有以下程序fun(intx,inty){m=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf(“%d,”,k);k=fun(j,m);printf(“%d\n”,k);}執(zhí)行后的輸出結(jié)果是______。A.5,5B.5,11C.11,11D.11,5正確答案:B解析:將j和m的值帶入函數(shù)fun中,第—次調(diào)用完fun()后,m和i的值分別為5和3且要保留,并在第二次調(diào)用時(shí)使用,這是因?yàn)閮烧叨际蔷植快o態(tài)變量。所以最后的結(jié)果是5和11。28.有以下程序fun(intx){intp;if(x=0||x=1)return(3);p=x-fun(x-2);returnp;}main0{printf(“%d\n”,fun(7));}執(zhí)行后的輸出結(jié)果是______。A.7B.3C.2D.0正確答案:C解析:函數(shù)fun是—個(gè)遞歸調(diào)用函數(shù),首先主函數(shù)將實(shí)參7傳遞給函數(shù)fun中的形參x,由于7≠0,7≠1,不滿足if條件,所以執(zhí)行下面的p=x-fun(x-2);語(yǔ)句,此語(yǔ)句繼續(xù)調(diào)用它本身,直到當(dāng)x=1時(shí),返回函數(shù)值3代入到調(diào)用它的表達(dá)式中,依此類推……,最終p的值為2。29.在16位編譯系統(tǒng)上,若有定義inta[]={10,20,30},*p=&a;,少逗號(hào)當(dāng)執(zhí)行p++;后,下列說(shuō)法錯(cuò)誤的是______。A.p向高地址移了一個(gè)字節(jié)B.p向高地址移了一個(gè)存儲(chǔ)單元C.p向高地址移了兩個(gè)字節(jié)D.p與a+1等價(jià)正確答案:A解析:題目中p=&a表示指針p指向第—個(gè)元素a[0],執(zhí)行p++是指使p指向下—個(gè)數(shù)據(jù)對(duì)象的地址,也就是向高地址移了—個(gè)存儲(chǔ)單元;因?yàn)閕nt數(shù)據(jù)占兩個(gè)字節(jié),所以p相當(dāng)于向高地址移了兩個(gè)字節(jié),所以選項(xiàng)A錯(cuò)誤。30.有以下程序main0{inta=l,b=3,c=5;int*p1=&a,*p2--&b,*p=&c;*p-~pl*(*p2);print~”%dXn”,c);}執(zhí)行后的輸出結(jié)果是______。A.1B.2C.3D.4正確答案:C解析:p1=&a表示指針變量p1指向元素1的地址;p2=&b表示指針變量p2指向元素3的地址;p=&c表示指針變量p指向元素5的地址;執(zhí)行*p=*p1*(*p2)=1*3=3,所以最后的結(jié)果為:3。31.若有定義:intw[3][5];,則以下不能正確表示該組元素的表達(dá)方式是______,A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)正確答案:B解析:選項(xiàng)A:*(*w+3)=*(*(w+0)+3)=*(w[0]+3)=w[0][3],符合數(shù)組定義的范圍可以正確表示數(shù)據(jù)元素。選項(xiàng)B:*(w+1)[4]=*(*(w+1)4=*w[5]=w[5][0],超出了數(shù)據(jù)定義的范圍。選項(xiàng)C:*(*(w+1))=*w[1]=w[1][0],符合數(shù)組定義的范圍可以正確表示數(shù)據(jù)元素。選項(xiàng)D:*(&w[0][0]+1);=*(w[0]+1)w[0][1],符合數(shù)組定義的范圍可以正確表示數(shù)據(jù)元素。32.若有以下函數(shù)首部intfun(doublex[lO],int*n)則下面針對(duì)此函數(shù)的函數(shù)聲明語(yǔ)句中正確的是______。A.intfun(doublex,int*n);B.intfun(double,int);C.intfun(double*x,intn);D.ihtfun(double*,int*);正確答案:D解析:函數(shù)聲明可以照寫已定義的函數(shù)的首部,再加一個(gè)號(hào)就成為了對(duì)函數(shù)的聲明,在函數(shù)聲明中也可以不寫形參名,而只寫形參的類型,但要保證與函數(shù)首部寫法上的—致,即函數(shù)類型、函數(shù)名、參數(shù)個(gè)數(shù)、參數(shù)類型和參數(shù)順序相同。字符數(shù)組可用指針來(lái)表示,所以選頂D正確。33.若有定義語(yǔ)句:intk[2][3],*pk[3];,則以下語(yǔ)句中正確的是______。A.pk=k;B.pk[0]=&k[1][2];C.pk=k[0];D.pk[1]=k;正確答案:B解析:*pk[3]:由于[]比*優(yōu)先級(jí)高,因此p先與[3]結(jié)合,形成p[3]數(shù)組,有3個(gè)元素。然后再與p前面的“*”結(jié)合,“*”表示此數(shù)組是指針類型的,每個(gè)數(shù)組元素(相當(dāng)于—個(gè)指針變量)都可以指向—個(gè)整型變量。34.有以下程序voidchange(intk[]){k[0]=k[5];}main(){intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4){change(&x[n]);n++;}for(n=0;n<5;n++)printf(“%d”,x[n]);printf(“\n”);}程序運(yùn)行后輸出的結(jié)果是______。A.678910B.13579C.12345D.62345正確答案:A解析:本題考點(diǎn)為數(shù)組名作函數(shù)參數(shù),當(dāng)n=O時(shí),把x[0]的地址傳紿被調(diào)函數(shù)change,即將形參k與實(shí)參x指向同一個(gè)存儲(chǔ)單元x[0],執(zhí)行被調(diào)函數(shù)后,k[0]=6,即x[0]=6:當(dāng)n=1時(shí),形參k指向x數(shù)組的第1個(gè)數(shù)組元素所在單元,即k[0]與x[1]共用同一存儲(chǔ)單元,執(zhí)行被調(diào)函數(shù)后,k[0]=7,即x[1]=7,依次類推得出x[0]到x[4]的值分別為6、7、8、9、10。35.若要求定義具有1O個(gè)int型元素的一維數(shù)組a,則以下定義語(yǔ)句中的錯(cuò)誤的是______。A.#defineN10inta[N];B.#a[2*n]C.inta[5+5];D.intn=10,a[n];正確答案:D解析:—維數(shù)組的定義方式為:類型說(shuō)明符數(shù)組名[常量表達(dá)式];常量表達(dá)式表示元素的個(gè)數(shù),即數(shù)組的長(zhǎng)度。常量表達(dá)式可以包括常量和符號(hào)常量,但不能包含變量。所以選項(xiàng)D錯(cuò)誤。36.有以下程序main(){intx[3][2]={0},i;for(i=0;i<3;i++)scanf(“%d”,x[i]);printf(“%3d%3d%3d\n”,x[0][0],x[0][1],x[1][0]);}若運(yùn)行時(shí)輸入:246<回車>,則輸出結(jié)果為______。A.200B.204C.240D.246正確答案:B解析:此題中“scanf(“%d”,x[i]);”相當(dāng)于“scarf(“%d”,x[i][0]);”。輸入246,執(zhí)行for語(yǔ)句也就是x[0][0]=2,x[1][0]=4,x[2][0]=6,其余的數(shù)組元素為0:所以x[0][0]=2,x[0][1]=0,x[1][0]=4。37.有以下程序main(){chars[]={“aeiou”},*ps;ps=s;printf(“%c\n”,*ps+4);}程序運(yùn)行后輸出的結(jié)果是______。A.a(chǎn)B.eC.uD.元素s[4]的地址正確答案:B解析:此題中先定義一個(gè)指針變量ps,并將s的首地址賦給此指針變量,*ps+4相當(dāng)于先從指針變量ps指向的地址中取出相應(yīng)數(shù)據(jù)“a”后,對(duì)此數(shù)據(jù)加4,a的ASCⅡ碼為32,32+4=36,對(duì)應(yīng)于字符e,所以答案選B。38.在以下語(yǔ)句中存在語(yǔ)法錯(cuò)誤的是______。A.charss[6][20];ss[1]=“right?”;B.charss[][20]={“fight?”};C.char*ss[6];ss[1]=“right?”;D.char*ss[]={“right?”};正確答案:A解析:此題需要了解字符數(shù)組和字符指針變量的區(qū)別,字符數(shù)組由若干個(gè)元素組成,每個(gè)元素中放一下字符,而字符指針變量中放的是地址(字符串的首地址),決不是將字符串放到指針變量中,選項(xiàng)D是指在定義字符指針變量時(shí)讓字符指針指向字符串“right?”的首地址;選項(xiàng)C是先定義字符指針數(shù)組,再讓指針數(shù)紐指向字符串”right?”的首地址;選項(xiàng)B是在定義數(shù)組時(shí)將字符賦給數(shù)組,而選項(xiàng)A的這種先定義,再用賦值語(yǔ)句賦值的形式是錯(cuò)誤的,因?yàn)閿?shù)組可以在變量定義時(shí)整體賦初值,而不能在賦值語(yǔ)句中整體賦值。39.若有定義:char*x=“abcdefghi”;,以下選項(xiàng)中正確運(yùn)用了strcpy函數(shù)的是______。A.chary[10];strcpy(y,x[4]);B.chary[10];strcpy(++y,&x[1]);C.chary[10],*s;strcpy(s=y+5,x);D.chary[10],*s;strcpy(s=y+1,x+1);正確答案:D解析:選項(xiàng)A中x[4]是取字符e,也就是將字符復(fù)制到y(tǒng)中,strcpy實(shí)現(xiàn)的是地址的復(fù)制所以選項(xiàng)A錯(cuò)誤;選項(xiàng)B中++y是錯(cuò)誤的,不允許對(duì)常量進(jìn)行自加運(yùn)算(y是—個(gè)確定的地址值),所以選項(xiàng)B錯(cuò)誤;選項(xiàng)C指針變量s指向了y向后的第5位,則存放x時(shí)會(huì)出現(xiàn)越界問題,所以選項(xiàng)C錯(cuò)誤;選項(xiàng)D中,指針變量s指向了y向后的第—位,此時(shí)s可存放數(shù)據(jù)的長(zhǎng)度為9,而地址“x+1”起的字符串的地址長(zhǎng)度也剛好為9(包括“\0”),所以開始復(fù)制不會(huì)出現(xiàn)地址越界問題,故選項(xiàng)D正確。40.有以下程序ihtadd(inta,intb){return(a+b);}mian(){intk,(*f)(),a=5,b=10;f=add;…}則以下函數(shù)調(diào)用語(yǔ)句錯(cuò)誤的是______。A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);正確答案:C解析:此題定義了指向函數(shù)的指針變量f指向了函數(shù)add的入口地址,所以,要調(diào)用函數(shù),可以通過(guò)函數(shù)名(選項(xiàng)B的形式)或函數(shù)指針變量(選項(xiàng)A、D的形式)調(diào)用即可,而選項(xiàng)C中是先進(jìn)行函數(shù)調(diào)用,然后對(duì)調(diào)用后返回的整型值求其指針值,事實(shí)上,對(duì)常量求指針值是不合理的,所以選項(xiàng)C錯(cuò)誤。41.有以下程序#include<string.h>main(intargc,char*argv[]){inti=1,n=0;while(i<argc){n=n+strlen(argv[i]);i++;}printf(“%d\n”,n);}該程序生成的可執(zhí)行文件名為:proc.exe。若運(yùn)行時(shí)輸入命令行:proc1234567則程序的輸出結(jié)果是______。A.3B.5C.7D.11正確答案:C解析:main()可以帶有參數(shù),并且參數(shù)只能有兩個(gè),第一個(gè)參數(shù)(argc)類型為整型用來(lái)記下命令行的參數(shù)個(gè)數(shù),第二個(gè)參數(shù)(argv)為—個(gè)字符型指針數(shù)組,其各個(gè)元素用來(lái)記下命令行各參數(shù)字符串的首地址。此題執(zhí)行時(shí),argc的值為4,在循環(huán)中依次使用strlen()函數(shù)求出argv(1)、argv(2)、argv(3)指向的字符串(123、45、67)的長(zhǎng)度并把他們加到變量n中,得到n的值為7。42.有以下程序voidfun2(chara,charb){printf(“%c%c”,a,b);}chara=‘A’,b=‘B’;voidfun1(){a=‘C’;b=‘D’;}main(){fun1();printf(“%c%c”,a,b);fun2(‘E’,’F’);}程序的運(yùn)行結(jié)果是______。A.CDEFB.ABEFC.ABCDD.CDAB正確答案:A解析:本題主要是要區(qū)分全局變量和局部變量,全局變量是指在函數(shù)之外定義的變量,它的有效范圍是從定義變量的位置開始到本源文件結(jié)束,函數(shù)fun1中用的變量a、b就是全局變量,雖然在定義時(shí)給a、b分別賦值為A、B,但在fun1函數(shù)中對(duì)其值進(jìn)行了改變,所以調(diào)用fun1后輸出的a、b的值為’C’和’D’;而fun2中輸出的是兩個(gè)局部形參變量a、b的值,這兩變量的值由主函數(shù)在調(diào)用時(shí)賦給它,故輸出結(jié)果為:E、F。43.有以下程序#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2)i2=f(1+1);printf(“%d%d\n”,i1,i2);}程序的運(yùn)行結(jié)果是______。A.1212B.117C.1111D.127正確答案:B解析:在編譯時(shí)預(yù)處理程序用“替換文本”來(lái)替換宏,并用對(duì)應(yīng)的實(shí)參來(lái)替換“替換文本”。此題中的替換文本分別為:N+1、(x*M)。引用帶參的宏名i1=f(2),在經(jīng)過(guò)宏替換后i1=2’N+1=2’5+1=11(注:因?yàn)閷?duì)宏M的替換中N+1沒有加括號(hào),所以對(duì)宏f(x)的替換文本展開后就變?yōu)椋簒*N+1形式);與上相同i2在引用帶參的宏名并替換展開后變?yōu)椋篿2=1+1*N+1=1+1*5+1=7,所以答案選B。44.設(shè)有以下語(yǔ)句typedefstructTT{charc;inta[4];}CIN;則下面敘述中正確的是______。A.可以用TT定義結(jié)構(gòu)體變量B.TT是struct類型的變量C.可以用CIN定義結(jié)構(gòu)體變量D.CIN是structTT類型的變量正確答案:D解析:此題中說(shuō)明了—個(gè)結(jié)構(gòu)體類型structTT的同時(shí),定義了一個(gè)結(jié)構(gòu)體變量CIN,結(jié)構(gòu)體變量中的各成員在內(nèi)存中按說(shuō)明中的順序依次排序。45.有以下結(jié)構(gòu)體說(shuō)明、變量定義和賦值語(yǔ)句structSTD{[10];intage;charsex;}s[5],*ps;ps=&s[0];則以下scanf函數(shù)調(diào)用語(yǔ)句中錯(cuò)誤引用結(jié)構(gòu)體變量成員的是______。A.scanf(“%s”,s[0].name);B.scanf(“%d”,&s[0].age);C.scanf(“%c”,&(ps->sex));D.scanf(“%d”,ps->age);正確答案:D解析:要給結(jié)構(gòu)體成員輸入數(shù)據(jù),在scanf語(yǔ)句中需要使用結(jié)構(gòu)體成員的地址。函數(shù)scanf是C語(yǔ)言的標(biāo)準(zhǔn)輸入函數(shù),其作用是在終端設(shè)備上輸入數(shù)據(jù),而且要求輸入項(xiàng)必須是某個(gè)存儲(chǔ)地址。選項(xiàng)A中是引用結(jié)構(gòu)體數(shù)組s的第0個(gè)元素s[0]的name成員,name是包含10個(gè)元素的數(shù)組,數(shù)組名就表示數(shù)組的地址,也就代表s[0].name的地址,所以選項(xiàng)A是正確的。選項(xiàng)B顯然也是正確的,選項(xiàng)C是先用指針變量引用結(jié)構(gòu)體的成員sex后取它的地址,也是正確的。選項(xiàng)D用指針變量引用結(jié)構(gòu)體的成員sex后沒有再繼續(xù)取其地址,所以是錯(cuò)誤的。46.若有以下定義和語(yǔ)句uniondate{inti;charc;fioatf;}x;inty;則以下語(yǔ)句正確的是______。A.x=10.5;B.x.c=101;C.y=x;D.printf(“%d\n”,x);正確答案:B解析:本題定義了共用體變量x及整型變量y,需要說(shuō)明的是共用體變量不能直接引用,而只能用共用體變量中的成員,故選項(xiàng)A、C、D均錯(cuò)誤。47.程序中已構(gòu)成如下圖所示的不帶頭結(jié)點(diǎn)的單向鏈表結(jié)構(gòu),指針變量s、p、q均已正確定義,并用于指向鏈表結(jié)點(diǎn),指針變量s總是作為頭指針向鏈表的第—個(gè)結(jié)點(diǎn)。若有以下程序段q=s;s=s->next;p=s;while(p->next)p=p->next;P->next=q;q->next=NULL;該程序段實(shí)現(xiàn)的功能是______。A.首結(jié)點(diǎn)成為尾結(jié)點(diǎn)B.尾結(jié)點(diǎn)成為首結(jié)點(diǎn)C.刪除首結(jié)點(diǎn)D.刪除尾結(jié)點(diǎn)正確答案:A解析:根據(jù)語(yǔ)句q=s得知指針q指向結(jié)點(diǎn)a;由s=s->next;p=s得知指針p和s均指向接點(diǎn)b;在滿足while語(yǔ)句的情況下,抽行p=p->next;得知p現(xiàn)在指向結(jié)點(diǎn)c;由p->next=q得知p指向的結(jié)點(diǎn)是a,a移到c的后面;由q->next=NULL得知結(jié)點(diǎn)a與結(jié)點(diǎn)b的指針斷開。移動(dòng)后的結(jié)構(gòu)圖如圖所示:48.若變量已刪除正確定義,則以下語(yǔ)句的輸出結(jié)果是______。件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋C.在—千程序中當(dāng)對(duì)文件進(jìn)行了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1個(gè)數(shù)據(jù)D.當(dāng)對(duì)文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導(dǎo)致數(shù)據(jù)丟失正確答案:D解析:C語(yǔ)言中,有兩種對(duì)文件的存取方式:順序存取和直接存取,所以選項(xiàng)A錯(cuò)誤;在對(duì)文件進(jìn)行讀、寫操作前,先要使用庫(kù)函數(shù)fopen“打開”文件來(lái)實(shí)現(xiàn)程序中要讀、寫的文件與實(shí)際數(shù)據(jù)文件間的聯(lián)系。在進(jìn)行打開文件操作時(shí)可以指定其打開方式,如果使用“r+”方式則在寫新數(shù)據(jù)時(shí),只覆蓋新數(shù)據(jù)所占的空間,其后的老數(shù)據(jù)并不丟失,所以選項(xiàng)B錯(cuò)誤;在對(duì)文件進(jìn)行操作后關(guān)閉文件是為了防止文件緩沖區(qū)中的剩余數(shù)據(jù)的丟失,所以選項(xiàng)D正確。50.有以下程序#include<stdio.h>main(){FILE*fp;inti;charch[]=“abcd”,t;fp=fopen(“abc.dat”,”wb++”);for(i=O;i<4;i++)fwrite(&ch[i],1,1,fp);fseek(fp,-2L,SEEK_END);fread(&t,1,1,fp);fclose(fp);printf(“%c\n”,t);}程序執(zhí)行后的輸出結(jié)果是______。A.dB.cC.bD.a(chǎn)正確答案:A解析:此題考核的是文件的讀寫,定義—個(gè)FILE類型結(jié)構(gòu)體的指針fp,以“可以由位置函數(shù)設(shè)置讀和寫”方式打開一個(gè)abc.dat文件,并向文件輸入數(shù)組變量ch指向的字符串,則文件內(nèi)的內(nèi)容為“abcd”,執(zhí)行fseek函數(shù),則文件類型指針fp指向文件尾向前移動(dòng)2個(gè)字節(jié)的位置處,即指針指向“b”,所以最后的輸出結(jié)果為b,答案選C。填空題(每空2分,共30分)請(qǐng)將每一個(gè)空的正確答案寫在答題卡上。注意:以命令關(guān)鍵字填空的必須拼寫完整。51.下列軟件系統(tǒng)結(jié)構(gòu)圖的寬度為[]。正確答案:3解析:軟件系統(tǒng)結(jié)構(gòu)圖的寬度:整體控制跨度(最大模塊數(shù)的層)的表示。52.[]的任務(wù)是診斷和改正程序中的錯(cuò)誤。正確答案:程序調(diào)試解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯(cuò)誤。它與軟件測(cè)試不同,軟件測(cè)試是盡可能多地發(fā)現(xiàn)軟件中的錯(cuò)誤。先要發(fā)現(xiàn)軟件的錯(cuò)誤,然后借助于一定的調(diào)試工具去找出軟件錯(cuò)誤的具體位置。軟件測(cè)試貫穿整個(gè)軟件生命期,調(diào)試主要在開發(fā)階段。53.—個(gè)關(guān)系表的行稱為[]。正確答案:元組解析:設(shè)計(jì)數(shù)據(jù)庫(kù)的目的實(shí)質(zhì)上是設(shè)計(jì)出滿足實(shí)際應(yīng)用需求的實(shí)際關(guān)系模型;關(guān)系中的行稱為元組,對(duì)應(yīng)存儲(chǔ)文件中的記錄,關(guān)系中的列稱為屬性,對(duì)應(yīng)存儲(chǔ)文件中的字段。54.按“先進(jìn)后出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是[]。正確答案:棧解析:棧和隊(duì)列都是—種特殊的操作受限的線性表,只允許在端點(diǎn)處進(jìn)行插入和刪除。二者的區(qū)別是:棧只允許在表的—端進(jìn)行插入或刪除操作,是—種“先進(jìn)后出”的線性表;而隊(duì)列只允許在表的—端進(jìn)行插入操作,在另—端進(jìn)行刪除操作,是—種“先進(jìn)先出”的線性表。55.?dāng)?shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊(duì)列屬于[]。正確答案:線性結(jié)構(gòu)解析:與棧類似,隊(duì)列也是線性表,也町以采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。56.設(shè)有定義:floatx=123.4567;,則執(zhí)行以下語(yǔ)句后的輸出結(jié)果是[]。printf(“%f\n”(int)(x*100+0.5)/100.1;正確答案:123.46解析:輸出語(yǔ)句的表達(dá)式:(int)(x*100+0.5)/100.0是指先運(yùn)算表達(dá)式中的“x*100+0.5”,然后將其結(jié)果強(qiáng)制轉(zhuǎn)換為int型,即:(int)(l23.4567*100+O.5)=(int)12346.17=12346,接下來(lái)進(jìn)行”/100.0”的運(yùn)算即:12346/100.0=123.46,原因是除運(yùn)算是雙目運(yùn)算,當(dāng)—邊是整型數(shù),—邊是實(shí)型數(shù)時(shí),系統(tǒng)自動(dòng)將整型轉(zhuǎn)換為實(shí)型數(shù),然后進(jìn)行運(yùn)算,又因?yàn)樽詈蟮牡妮敵龈袷绞莊loat類型的實(shí)數(shù),所以結(jié)果為123.460000。57.以下程序運(yùn)行后的輸出結(jié)果是[]。main(){intm=011,n=11;printf(“%d%d\n”,++m,n++);}正確答案:1011解析:此題中定義兩個(gè)變量m和n,首先將一個(gè)八進(jìn)制數(shù)賦給m,十進(jìn)制數(shù)賦給n;在輸出之前先進(jìn)行運(yùn)算,++n:是指在輸出變量m前先對(duì)其進(jìn)行加1,(011)8+l=(9)10+1=10;n++:是指在進(jìn)行輸出操作后n再進(jìn)行加1操作,所以輸出時(shí)n=11?!?d%d”表示輸出的是兩個(gè)帶符號(hào)的十進(jìn)制整型數(shù),所以最后的輸出結(jié)果為:1011。58.以下程序運(yùn)行后的輸出結(jié)果是[]。main(){intx,a=1,b=2,c=3,d=4;x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;printf(“%d\n”,x);}正確答案:1解析:條件運(yùn)算符優(yōu)先于賦值運(yùn)算,但低于邏輯運(yùn)算、關(guān)系運(yùn)算、算術(shù)運(yùn)算。條件運(yùn)算的一般形式為(表達(dá)式1)?(表達(dá)式2):(表達(dá)式3),當(dāng)(表達(dá)式1)值為真時(shí),(表達(dá)式2)的值為整個(gè)表達(dá)式的值;當(dāng)(表達(dá)式1)的值為假時(shí),(表達(dá)式3)的值為整個(gè)表達(dá)式的值。題中執(zhí)行表達(dá)式“x=(a<b)?a:b”后,x=1;再執(zhí)行表達(dá)式“x=(x<c)?x:c”后,x=1,將此值代入后—個(gè)表達(dá)式“x=(d>x)?x:d”,由于“d>x”值為真,故x的值為1。59.有以下程序,若運(yùn)行時(shí)從鍵盤輸入:18,11<回車>,則程序的輸出結(jié)果是[]。main(){inta,b;printf(“Entera,b:”);scanf(“%d,%d”,&a,&b);while(a!=b){while(a>b)a-=b);white(b>a)b-=a;}printf(“%3d%3d\n”,a,b);}正確答案:11解析:此題中定義兩個(gè)變量a和b并通過(guò)scanf語(yǔ)句對(duì)其進(jìn)行賦值,當(dāng)滿足“a!=b”循環(huán)條件時(shí)進(jìn)行其下的條件的判斷,直到最外層的條件不再被滿足后進(jìn)行數(shù)據(jù)的輸出。自先給a和b分別賦值18和11。條件:18!=11,所以執(zhí)行其下的條件判斷“a>b”條件滿足,a=a-b=18-7=7,然后繼續(xù)判斷條件a>b是否成立,此時(shí)7>11不成立,退出內(nèi)循環(huán)中的第一個(gè)while循環(huán),執(zhí)行內(nèi)循環(huán)的第二個(gè)while循環(huán),比較其條件b>a是否成立,此條件成立,所以b=b-a=4,繼續(xù)判決條件b>a是否成立,若成立,則繼續(xù)執(zhí)行b-=a;,否則退出內(nèi)循環(huán)的第二個(gè)while循環(huán),同時(shí)繼續(xù)比較外循環(huán)條件a!=b是否成立,依此類推,直到a=1,b=1條件不再被滿足后進(jìn)行數(shù)據(jù)的輸出,所以最后的結(jié)果為:11。60.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請(qǐng)?zhí)羁铡?include<stdio.h>main(){intn,s;printf(“Enteranumber:”);scanf(“%d”,&n);printf(“Output:“);do{s=n%10;printf(“%d”,s);[];}while(n!=0);printf(“\n’);}正確答案:n/=10或n=n/10或n=(n-s)/10或n=(n-n%10)/10解析:根據(jù)s=n%10可知:此操作可以將輸入的數(shù)據(jù)n的最后—位賦給s,根據(jù)題目的要求是要將輸入的數(shù)據(jù)逆序輸出,現(xiàn)在已經(jīng)將原數(shù)據(jù)的個(gè)位輸出,在其后如果執(zhí)行n/=10司將原數(shù)據(jù)的個(gè)位數(shù)去掉,滿足do....while的條件繼續(xù)s=n%10操作,此時(shí)可求出十位上的數(shù)進(jìn)行輸出,繼續(xù)執(zhí)行n/=10操作,與上相同最后將百位上的數(shù)進(jìn)行輸出,所以該題答案為:n/=10。61.下面程序的運(yùn)行結(jié)果是[]。#include<stdio.h>intf(inta[],intn){if(n>1)returna[0]+f(a+1,n-1);elsereturna[0];}main(){intaa[10]={12,3,4,5,6,7,8,9,10},s;s=f(aa+2,4);printf(“%d\n”,s);}正確答案:18解析:實(shí)參中aa+2是指將數(shù)組元素3的地址傳遞紿形參a,應(yīng)當(dāng)注意—點(diǎn),用數(shù)紐名作函數(shù)實(shí)參時(shí),不是把數(shù)組的值傳給形參,而是把實(shí)參數(shù)組的地址傳紿形參數(shù)組,兩個(gè)數(shù)組共用一段內(nèi)存單元。所以a[]={3,4,5,6,7,8,9,10),n=4,a[0]=3。形參中a+1表示數(shù)組元素4的地址傳遞紿形參a,所以a[0]+f(a+1,n-1)=3+f(a+1)),3),此時(shí)a[]={4,5,6,7,8,9,10),n=3,a[0]=4。n=3同樣滿足n>1的條件a[0]+f(a+1,n-1)=4+f(a+1,2)此時(shí)a[]={5,67,8,9,10},n=2,a[0]=5。n=2同樣滿足n>1的條件a[0]+f(a+1,n-1)=5+f(a+1,2)此時(shí)a[]={6,7,8,9,10},n=1,a[0]=6。n=1不再滿足條件返回a[0]=6,6+5+4+3=18,所以最后的結(jié)果為18。62.下面程序由兩個(gè)源程序文件:t4.h和t4.c組成,程序編譯運(yùn)行的結(jié)果是:[]。t4.h的源程序?yàn)椋?defineN10#definet2(x)(x*N)t4.c的源程序?yàn)椋?include<stdio.h>#defineM8#definef(x)((x)*M)#include“t4.h”main(){inti,j;i=f(1+1);j=f2(1+1);printf(“%d%d\n”,i,j);}正確答案:1611解析:在編譯時(shí)預(yù)處理程序用“替換文本”來(lái)替換宏,并用劉應(yīng)的實(shí)參來(lái)替換“替換文本”。此題中的替換文本分別為:x*N、(x)*M。弓,用帶參的宏名i=f(1+1),在經(jīng)過(guò)宏替換后將成為:i=(1+1)*M=2*8=16。與上相同j在引用帶參的宏名并替換展開后變?yōu)?;j=1+1*N=1+1*10=11(注:因?yàn)樵趯?duì)宏f2(x)的替換中x沒有加括號(hào),所以對(duì)宏f2(x)的替換文本展開后就變?yōu)椋?+1*N形式),所以答案為1611。63.下面程序的功能是建立一個(gè)有3個(gè)結(jié)點(diǎn)的單循環(huán)鏈表,然后求各個(gè)結(jié)點(diǎn)數(shù)值域data中數(shù)據(jù)的和,請(qǐng)?zhí)羁铡?include<stdio.h>#include<stdlib.h>structNODE{intdata;structNODE*next;};main(){structNODE*p,*q,*r;intsum=0;p=(structNODE*)malloc(sizeof(structNODE));q=(structNODE*)malloc(sizeof(structNODE));r=(structNODE*)malloc(sizeof(structNODE));p->data=100;q->data=200;r->data=300;p->next=q;q->next=r;r->next=p;sum=p->data+p->next->data+r->next->next[];printf(“%d\n”,sum);}正確答案:->next->data解析:自定義結(jié)構(gòu)體類型名為Node,并定義指向結(jié)點(diǎn)類型的指針*p,*q,*r。它們共有兩個(gè)成員:成員data是整型,成員next是指針類型,題目要求求結(jié)點(diǎn)數(shù)值域的和,也就是求p->data+q->data+r->data的值,p->data表示取p所指結(jié)點(diǎn)的值,p->next->data表示取q指針?biāo)附Y(jié)點(diǎn)中的值,現(xiàn)在p所指結(jié)點(diǎn)和q所指結(jié)點(diǎn)的值已經(jīng)取到,就差r所指結(jié)點(diǎn)中的值,題目中已知r->next指向的是p->data,如果想得到r指針?biāo)附Y(jié)點(diǎn)的值需要將最后的指針指向r->data,所以答案為->next->data。64.有以下程序,其功能是:以二進(jìn)制”寫”方式打開文件d1.dat,寫入1~100這100個(gè)整數(shù)后關(guān)閉文件。再以二進(jìn)制“讀”方式打開文件d1.dat,將這100個(gè)整數(shù)讀入到另一個(gè)數(shù)組b中,并打印輸出。請(qǐng)?zhí)羁铡?include<stdio.h>main(){FILE*fp;inti,a[100],b[100];fp=fopen(“d1.dat”,”wb”);for(i=0;i

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論