




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
國家二級(C語言)筆試模擬試卷13(共9套)(共572題)國家二級(C語言)筆試模擬試卷第1套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、下列選項中不符合良好程序設(shè)計風(fēng)格的是()。A、源程序要文檔化B、數(shù)據(jù)說明的次序要規(guī)范化C、避免濫用goto語句D、模塊設(shè)計要保證高耦合、高內(nèi)聚標(biāo)準(zhǔn)答案:8知識點解析:良好的設(shè)計風(fēng)格包括:程序文檔化,選項A的說法正確:數(shù)據(jù)說明次序規(guī)范化,選項B的說法正確:功能模塊化,即把源程序代碼按照功能劃分為低耦合,高內(nèi)聚的模塊,選項D的說法錯誤:注意goto語句的使用,選項C的說法正確。2、下列關(guān)于隊列的敘述中正確的是()。A、在隊列中只能插入數(shù)據(jù)B、在隊列小只能刪除數(shù)據(jù)C、隊列是先進(jìn)先出的線性表D、隊列是先進(jìn)后出的線性表標(biāo)準(zhǔn)答案:4知識點解析:隊列是指允許在一端進(jìn)行插入、而在另一端進(jìn)行刪除的線性表,允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭,選項A和選項B錯誤。在隊列中,最先插入的元素將最先能夠被刪除,反之,最后插入的元素將最后才能被刪除,所以,隊列又稱為“先進(jìn)先出”或“后進(jìn)后出”的線性表,它體現(xiàn)了“先來先服務(wù)”的原則,選項C正確,選項D錯誤。3、下列選項中不屬于軟件生命周期開發(fā)階段任務(wù)的是()。A、軟件測試B、概要設(shè)計C、軟件維護D、詳細(xì)設(shè)計標(biāo)準(zhǔn)答案:4知識點解析:軟件開發(fā)周期開發(fā)階段通常由下面5個階段組成:概要設(shè)計、詳細(xì)設(shè)計、編寫代碼、組裝測試和確認(rèn)測試。軟件維護時期的主要任務(wù)是使軟件持久地滿足用戶的需要。選項C中的軟件維護不是軟件生命周期開發(fā)階段的任務(wù)。4、下列敘述中正確的是()。A、線性鏈表中的各元素在存儲空間中的位置必須是連續(xù)的B、線性鏈表中的表頭元素一定存儲在其他元素的前面C、線性鏈表中的各元素在存儲空間中的位置不一定是連續(xù)的,但表頭元素一定存儲在其他元素的前面D、線性鏈表中的各元素在存儲空間中的位置不一定是連續(xù)的,且各元素的存儲順序也是任意的標(biāo)準(zhǔn)答案:8知識點解析:在線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)中,各數(shù)據(jù)結(jié)點的存儲位置不連續(xù),選項A錯誤。各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致,選項B和選項C錯誤。選項D正確。5、下列敘述中正確的是()。A、線性鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)B、棧與隊列是非線性結(jié)構(gòu)C、雙向鏈表是非線性結(jié)構(gòu)D、只有根結(jié)點的二叉樹是線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:1知識點解析:線性鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu),選項A的說法是正確的。棧與隊列是特殊的線性表,它們也是線性結(jié)構(gòu),選項B的說法足錯誤的;雙向鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu),其對應(yīng)的邏輯結(jié)構(gòu)也是線性結(jié)構(gòu),而不是非線性結(jié)構(gòu),選項c的說法是錯誤的;二叉樹是非線性結(jié)構(gòu),而不是線性結(jié)構(gòu),選項D的說法是錯誤的。6、下列敘述中正確的是()。A、黑箱(盒)測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征B、黑箱(盒)測試方法主要考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征C、白箱(盒)測試不考慮程序內(nèi)部的邏輯結(jié)構(gòu)D、上述3種說法都不對標(biāo)準(zhǔn)答案:1知識點解析:黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例,選項A是正確的,選項B錯誤。白箱測試是根據(jù)對程序內(nèi)部邏輯結(jié)構(gòu)的分析來選取測試用例,選項C錯誤。7、下列敘述中正確的是()。A、接口復(fù)雜的模塊,其耦合程度一定低B、耦合程度弱的模塊,其內(nèi)聚程度一定低C、耦合程度弱的模塊,其內(nèi)聚程度一定高D、上述3種說法都不對標(biāo)準(zhǔn)答案:4知識點解析:影響模塊之間耦合的主要因素有兩個:模塊之間的連接形式,模塊接口的復(fù)雜性。一般來說,接口復(fù)雜的模塊,其耦合程度要比接口簡單的的模塊強,所以選項A的說法錯誤:耦合程度弱的模塊,其內(nèi)聚程度一定高,選項B錯誤:選項C正確。8、下列描述中正確的是()。A、程序就是軟件B、軟件開發(fā)不受計算機系統(tǒng)的限制C、軟件既是邏輯實體,又是物理實體D、軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合標(biāo)準(zhǔn)答案:8知識點解析:計算機軟件是計算機系統(tǒng)中與硬件相耳依存的另一部分,包括程序、數(shù)據(jù)及相關(guān)文檔的完拄集合。9、用樹形結(jié)構(gòu)來表示實體之間聯(lián)系的模型稱為()。A、關(guān)系模型B、層次模型C、網(wǎng)狀模型D、數(shù)據(jù)模型標(biāo)準(zhǔn)答案:2知識點解析:目前常用的數(shù)據(jù)模型有3種:層次模型、網(wǎng)狀模型和關(guān)系模型。在層次模型中,實體之間的聯(lián)系是用樹結(jié)構(gòu)來表示的。10、數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。A、DB包含DBS和DBMSB、DBMS包含DB和DBSC、DBS包含DB和DBMSD、沒有任何關(guān)系標(biāo)準(zhǔn)答案:4知識點解析:數(shù)據(jù)庫管理系統(tǒng)DBMS是數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件。它負(fù)責(zé)數(shù)據(jù)庫中所有數(shù)據(jù)的存儲、檢索、修改以及安全保護等,數(shù)據(jù)庫內(nèi)的所有活動都是在其控制下進(jìn)行的。所以,DBMS包含數(shù)據(jù)庫DB。操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)與應(yīng)用程序在一定的硬件支持下就構(gòu)成了數(shù)據(jù)庫系統(tǒng)DBS。所以,DBS包含DBMS,也就包含DB。二、選擇題(1分)(本題共10題,每題1.0分,共10分。)11、算法具有5個特性,以下選項中不屬于算法特性的是()oA、有窮性B、簡潔性C、可行性D、確定性標(biāo)準(zhǔn)答案:2知識點解析:一個算法應(yīng)當(dāng)具有以下’5個特性:有窮性;確定性;可行性;有零個或多個輸入;由一個或多個輸出。簡潔性不屬于這5個特性,所以本題應(yīng)該選擇B。12、以下選項中可作為C語言合法整數(shù)的是()。A、10110BB、386C、0XffaD、x2a2標(biāo)準(zhǔn)答案:4知識點解析:在C語言中,整數(shù)常量可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制來表示,選項A為二進(jìn)制表示,故選項A不正確;選項B是八進(jìn)制表示法,但在八進(jìn)制數(shù)中,各個位數(shù)只能為數(shù)字0到7中的一個,而在選項B中,有一個數(shù)字8,故選項B不正確:選項C為十六進(jìn)制表示法正確;選項D中也為十六進(jìn)制表示法,但十六進(jìn)制數(shù)以ox開頭,故選項D不正確,所以,4個選項中選項C符合題意。13、以下不合法的字符常量是()。A、’\018’B、’\’’’C、’\\’D、’\xcc\標(biāo)準(zhǔn)答案:1知識點解析:在選項A中,“\”后跟著三個數(shù)字,是表示一個ASCII碼值等于這三位數(shù)字所組成的八進(jìn)制數(shù)數(shù)值的字符,但是八進(jìn)制數(shù)只能是由0-7這八個數(shù)字表示,而選項A中出現(xiàn)了數(shù)字8所以是不合法的。選項B是表示一個雙引號的轉(zhuǎn)義字符表示方法;選項C表示的是一個反斜桿;選項D表示一個ASCII值為十六進(jìn)制值“的字符。故應(yīng)該選擇A。14、表達(dá)式3.6-5/2+1.2+5%2的值是()。A、4.3B、4.8C、3.3D、3.8標(biāo)準(zhǔn)答案:8知識點解析:*、/和%的優(yōu)先級要高于+和—,同級別的運算符從左至右運算。所以本題首先計算5/2和5%2,雖然我們都知道5/2的結(jié)果應(yīng)該是2.5,但C語言中規(guī)定了兩個整數(shù)相除的結(jié)果為整數(shù),而且是截尾取整,所以5/2的結(jié)果是2;5%2表示的是5除以2所得的余數(shù),其結(jié)果為1。計算完后,表達(dá)式變?yōu)?.6-2+1.2+1,從左至右計算不難得出結(jié)果為3.8,故應(yīng)該選擇D。15、以下非法的賦值語句是()。A、n=(i=2,++i)B、j++;C、++(i+1)D、x=j>0;標(biāo)準(zhǔn)答案:4知識點解析:選項A為復(fù)合表達(dá)式,首先計算(i=2,++i)的值,然后賦值給n,故選項A正確;選項B為簡單自加運算,故選項B正確;選項c在表達(dá)式++(i+1);中,(i+1)不是變量,該表達(dá)式的值為常量,而在什運算中,其運算對象必須為變量,故選項C錯誤,選項D中為復(fù)合賦值表達(dá)式,正確。所以應(yīng)當(dāng)選擇C。16、若有以下程序段(n所賦的是八進(jìn)制數(shù)):intm=32767,n=032767;printf("%d,%\n",m,n);執(zhí)行后輸出結(jié)果是()。A、32767,32767B、32767,032767C、32767,77777D、32767,077777標(biāo)準(zhǔn)答案:1知識點解析:程序在定義時,以十進(jìn)制形式為m賦初值,以八進(jìn)制的形式為n賦初值。輸出的時候m以十進(jìn)制形式輸出,n以八進(jìn)制形式輸出,因此輸出的結(jié)果為32767和32767。所以,A選項為所選。17、設(shè)有定義:floata=2,b=4,h=3;以下c語言表達(dá)式中與代數(shù)式(a+B)h計算結(jié)果不相符的是()。A、(a+B)*h/2B、(1/2)*(a+B))*hC、(a+B)*h*1/2D、h/2*(a+B)標(biāo)準(zhǔn)答案:2知識點解析:選項B中由于1和2都是整型,其1/2的運算結(jié)果為0,故整個表達(dá)式的值為0,所以它的結(jié)果和題目中要求的代數(shù)式的討算結(jié)果不相符,所以,4個選項中選項B符合題意。18、以下程序段的輸出結(jié)果是()。inta=1234;printf("%2d\n",A);A、12B、34C、1234D、提示出錯,無結(jié)果標(biāo)準(zhǔn)答案:4知識點解析:當(dāng)整數(shù)的值超過格式要求輸出范圍時,原樣輸出。本題中要求輸出兩個有效數(shù)字,而實際上a有4個有效數(shù)字,故原樣輸出,輸出1234。所以,4個選項中C為所選。19、有以下程序:main(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);print("%d%d%d\n",m,n,p);}若想從鍵盤上輸入數(shù)據(jù),使變量m中的值為123,n中的值為456,p中的值為789,則正確的輸入是()。A、m=123n=456P=789B、m=123n=456p=789C、m=123,n=456,p=789D、123456789標(biāo)準(zhǔn)答案:1知識點解析:本題若想使變量m的值為123、n為456、p為789,則應(yīng)該輸入的字符串為:用這三個數(shù)據(jù)按m、n、p出現(xiàn)在scaaf()函數(shù)中的位置順序替換掉scant()函數(shù)格式控制串中的格式控制符后所得到的格式控制串,即"m=123n=456p=789"。所以,4個選項十選項A符合題意。20、設(shè)有定義:inta,*pa=&a;以下scanf語句中能正確為變量a讀入數(shù)據(jù)的是()。A、scanf("%d",pA);B、scanf("%d",A);C、scanf("%d",&pA);D、seanf("%d",*pA);標(biāo)準(zhǔn)答案:1知識點解析:本題中定義了整型變量a和一個指向整型數(shù)據(jù)的指針變量pa,并定義pa是一個存放a的地址的變量。選項B是應(yīng)該將a改為&a,故選項B不正確;選項c應(yīng)該將&pa改為pa,因為pa已經(jīng)表示存放:的地址,故選項C不正確:選項D中*pa表示的是指針p8所指向存儲空間的變量的值,而不是一個地址,故選項D不正確,所以,4個選項十選項A符合題意。三、選擇題(2分)(本題共30題,每題1.0分,共30分。)21、在以下給出的表達(dá)式中,與while(E)中的(E)不等價的表達(dá)式是()。A、(!E==0)B、(E>0||E<0)C、(E==0)D、(E!=0)標(biāo)準(zhǔn)答案:4知識點解析:題目中的while(E)循環(huán)是當(dāng)E等于0時,循環(huán)結(jié)束,E不等于0時,繼續(xù)循環(huán)。選項C中,當(dāng)E等于0時,表達(dá)式“E==0”為真繼續(xù)循環(huán),而E不等于。時,表達(dá)式為假循環(huán)結(jié)束,這與題目中的條件不等價,故應(yīng)該選擇C。22、若有如下程序段,其中s、a、b、c均已定義為整型變量,且a、c均已賦值(c大于0)s=a;for(b=1;b<=c;b++)s=s+1;則與上述程序段功能等價的賦值語句是()。A、s=a+b;B、s=a+c;C、s=s+c;D、s=b+c;標(biāo)準(zhǔn)答案:2知識點解析:本程序中for循環(huán)的次數(shù)為c-1+1共循環(huán)了c次,而每循環(huán)一次s的值加1,所以s的值為s+c。而最開始s的值為a,故4個選項中選項B符合題意。23、已有定義:charc;,程序前面已在命令行中包含ctype.h文件。不能用于判斷c中的字符是否為大寫字母的表達(dá)式是()。A、isupper(c)B、’A’<=c<=’Z’C、’A’<=c&&c<=’Z’D、c<=(’z’-32)&&(’a’-32)<=c標(biāo)準(zhǔn)答案:2知識點解析:大寫字母從’A’~’Z’的ASCII碼是連續(xù)的,所以如果當(dāng)—個字符大于等于’A’且小于等于’z’時,那這個字符就一定是一個大寫字母,故選項C正確。C語言中的庫函數(shù)isupper()的作用也正是判斷一個字符是否為大寫字母的,故選項A正確。在ASCII碼中,小寫字母的編碼也是連續(xù)的,對應(yīng)的小寫字符比大寫字符的ASCII碼值大32,所以選項D經(jīng)過小寫字符-32后,換算成了對應(yīng)的大寫字母’Z’和’A’,所得到結(jié)果和選項C是一致的,故也是正確的。選項B中,C語言的邏輯表達(dá)式不能直接連寫,而應(yīng)該寫成選項C那樣,故是錯誤的,應(yīng)該選擇B。24、以下選項中,值為1的表達(dá)式是()。A、1-’0’B、1-’\0’C、’1’-0D、’\0’-’0’標(biāo)準(zhǔn)答案:2知識點解析:在ASCII碼中,字符串結(jié)束符’\0’的ASCII碼為0,字符’0’的ASCII碼的值為48,字符’1’的ASCII碼的值為49。由此可見,選項A的值為-47;選項B的值為1;選項C的值為49;選項D的值為-48。故應(yīng)該選擇B。25、若變量已正確定義,要求程序段完成求5!的計算,不能完成此操作的程序段是()。A、for(i=1,p=1;i<=5;i++)p*=i;B、for(i=1;i<=5;i++){p=1;p*=i;}C、i=1;p=1;while(i<=5){p*=i;i++;}D、i=1;p=1;do{p*=i;i++;}while(1<=5)標(biāo)準(zhǔn)答案:2知識點解析:選項B中for循環(huán)了5次,而每次循環(huán)的時候,都將p的值重新賦值為1后,再乘以當(dāng)前數(shù)字i,最后的結(jié)果為5,顯然不是5!的值,同樣的分析可知選項A、選項C和選項D計算的都是5!。所以,4個選項中選項B符合題意。26、有以下程序:main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若運行時從鍵盤上輸入:6,5,65,66<回車>。則輸出結(jié)果是()。A、6,5,A,BB、6,5,65,66C、6,5,6,5D、6,5,6,6標(biāo)準(zhǔn)答案:1知識點解析:主函數(shù)中首先定義了4個字符變量a、b、cd,然后通過scanf()函數(shù)輸入a、b、c、d輸入中a和b是按字符格式c輸入的,c和d是按整型符號d輸入的。在看下面的printf()函數(shù)中,要求a、b、c、d都按字符輸出,故a和b原樣輸出為6、5,c和d將把與其ASCII碼對應(yīng)的字符輸出,65和66的ASCII碼對應(yīng)字符A和B,故最后的輸出為6,5,A,B。所以,4個選項中選項A符合愿意。27、有以下程序:fun(intx,inty){staticintm=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標(biāo)準(zhǔn)答案:2知識點解析:本題的fun()函數(shù)中定義的變量m和i是靜態(tài)局部變量,第1次調(diào)用fun()函數(shù)時m=0、i=2,執(zhí)行i+=m+1后,i的值變?yōu)?,再執(zhí)行m=i+x+y后,m的值變?yōu)?,所以第1次輸出的整數(shù)是5。第2次調(diào)用fun()函數(shù)時m=5、i=3,執(zhí)行i+=m+1,i變?yōu)?,再執(zhí)行m=i+x+y,m變?yōu)?1,所以第2次輸出的整數(shù)是11。故本題應(yīng)該選擇B。28、設(shè)有定義:intn1=0,n2,*p=&n2,*q=&n1;,以下賦值語句中與n2=n1;語句等價的是()。A、*p=*q;B、p=q;C、*p=&n1;D、p=*q;標(biāo)準(zhǔn)答案:1知識點解析:題目中定義了兩個變量n1和n2,又定義了兩個指針p和q分別指向變量n2和n1。要通過指針實現(xiàn)n2=n1,就是要將q所指內(nèi)容賦給p所指內(nèi)容,即*p=*q。所以應(yīng)該選擇A。29、有以下程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf(%c%c%c%c,&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf(%c%c\n,c5,c6);}程序運行后,若從鍵盤輸入(從第1列開始)123<回車>45678<回車>則輸出結(jié)果是()。A、1267B、1256C、1278D、1245標(biāo)準(zhǔn)答案:8知識點解析:在題目中,程序執(zhí)行到scanf()函數(shù)時,會暫停等待用戶輸入4個字符,按題意輸入123<回車>后,字符1~3被分別輸入到c1~c3中,而c4會得到一個換行符’\n’。然后執(zhí)行第1個getchar()函數(shù),由于前面的scanf()函數(shù)讀完了緩沖區(qū)中的所有字符,所以此時程序會又暫停等待用戶輸入,按題意輸入45678<回車>后,緩沖區(qū)第1個字符’4’被讀入并賦給c5,第2個getchar()函數(shù)會讀入緩沖區(qū)第2個字符’5’。所以最后依次輸出c1、c2、c5、c6的值后,屏幕上的結(jié)果是1245。故應(yīng)該選擇D。30、有以下程序:#include<stdio.h>main(){printf("%d\n",NULL);}程序運行后的輸出結(jié)果是()。A、0B、1C、-1D、NULL沒定義,出錯標(biāo)準(zhǔn)答案:1知識點解析:在C語言中NULL的ASCII碼值為0,而輸出函數(shù)要求以整形格式輸出,故最后的輸出數(shù)為0。所以,4個選項中選項A符合愿意。31、以下程序中函數(shù)sort的功能是對a所指數(shù)組中的數(shù)據(jù)進(jìn)行由大到小的排序;voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1,j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)print("%d,",aa[i]);printf(’\n");}程序運行后的輸出結(jié)果是()。A、1,2,3,4,5,6,7,8,9,10B、10,9,8,7,6,5,4,3,2,1,C、1,2,3,8,7,6,5,4,9,10D、1,2,10,9,8,7,6,5,4,3,標(biāo)準(zhǔn)答案:4知識點解析:本題中首先定義一個長度為10的一個整型數(shù)組,并初始化為“1,2,3,4,5,6,7,8,9,10”,然后調(diào)用排序函數(shù)sort(),通過分析不難看出,sort()函數(shù)是對具有n個元素的a數(shù)組進(jìn)行從大到小排序。由于函數(shù)的第一個參數(shù)是數(shù)組名,其對應(yīng)的實參可以是函數(shù)名或地址。本題在調(diào)用該函數(shù)時,實參是&aa[3]的地址,即把aa[3]的地址傳給了行參數(shù)組名a,函數(shù)也就是對aa[3]開始的5個元素進(jìn)行從大到小的摔序,aa[0]、aa[1]、aa[2]、aa[8]、aa[9]并沒有變化。Sort()執(zhí)行完畢后,接著執(zhí)行后面的for語句輸出數(shù)組aa中各個元素的值,由于函數(shù)sort()只是對aa[3]開始的5個元素進(jìn)行從大到小的排序,aa[0]、aa[1]、aa[2]、aa[8]、aa[9]并沒有變化,所以輸出為“1,2,3,8,7,6,5,4,9,10”。所以4個選項中C正確。32、有以下程序:main(){charp[]={’a’,’b’,’c},q[]="abc";printf("%d%d\n",sizeof(p),sizeof(q));}程序運行后的輸出結(jié)果是()。A、44B、33C、34D、43標(biāo)準(zhǔn)答案:4知識點解析:字符數(shù)組即可以用{初始化列表}來初始化,也可以用一個字符串常量來初始化。但字符串常量系統(tǒng)會自動為其添加結(jié)束標(biāo)記’\0’,故比實際長度要多一位,所以本題輸出為34,應(yīng)該選擇C。33、若有定義語句:inta[2][3],*p[3];,則以下語句中正確的是()。A、p=a;B、p[0]=a;C、p[0]=&a[1][2];D、p[1]=&a;標(biāo)準(zhǔn)答案:4知識點解析:選項A中,p為數(shù)組名,其值是不能被改變的,故非法;選項B中,p[0]的類型是int*,而a是二維數(shù)組名(類型為int[][3]),兩者無法賦值,故非法:選項C中,p[0]為int型指針,&a[1][2]是int型變量的地址,可以合法賦值;選項D中,p[1]是int型指針,而&a是二維數(shù)組的地址(類型為int(*)[2][3]),兩者無法賦值,故非法。所以本題應(yīng)該選擇C。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");}程序運行后輸出的結(jié)果是()。A、678910B、13579C、12345D、62345標(biāo)準(zhǔn)答案:1知識點解析:本題的change()函數(shù)實現(xiàn)的是:將傳入的地址值的高5個單位的地址中的內(nèi)容復(fù)制到傳入的地址當(dāng)中,即等價于*k=*(k+5)。在主函數(shù)中,首先通過while循環(huán),循環(huán)5次調(diào)用change()函數(shù),依次將x[0]~x[4]的地址傳入,所以while循環(huán)結(jié)束后,x[0]~x[4]中的內(nèi)容等于x[5]~x[9]中的內(nèi)容。所以輸出結(jié)果為678910,故應(yīng)該選擇A。35、有以下程序:#include<stdio.h>main(){charc1=’1’,c2=’2’;c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運行時輸入:a<回車>后,以下敘述正確的是()。A、變量c1被賦予字符a,c2被賦予回車符B、程序?qū)⒌却脩糨斎氲?個字符C、變量c1被賦予字符a,c2中仍是原有字符2D、變量c1被賦予字符a,c2中將無確定值標(biāo)準(zhǔn)答案:1知識點解析:getchar()函數(shù)執(zhí)行時將從鍵盤緩沖區(qū)中讀取用戶的輸入,而不管輸入的是否可打印字符。所以當(dāng)輸入a<回車>后,鍵盤緩沖區(qū)被輸入的實際上是兩個字符:’a’和’\n’。故選項A的說法是正確的。36、有以下程序:main(){chars[]="\n123\\";printf("%d,%d\n",strlen(s),sizeof(s));}執(zhí)行后輸出結(jié)果是()。A、賦初值的字符串有錯B、6,7C、5,6D、6,6標(biāo)準(zhǔn)答案:4知識點解析:本題在定義字符數(shù)組時沒有定義數(shù)組長度,但是給數(shù)組賦了初值,這時初值的個數(shù)即為數(shù)組的長度,故數(shù)組長度為6(包括’\0’)。字符串的長度為有效字符的個數(shù)5。因此printf語句中輸出的結(jié)果為5,6。所以,C選項為所選。37、閱讀以下函數(shù):fun(char*s1,char*s2){inti=0;while(s1[i]==s2[i]&&s2[i]!=’\0’)i++;return(s1[i]==’\0’&&s2[i]==’\0’);}此函數(shù)的功能是()。A、將s2所指字符串賦給s1B、比較s1和s2所指字符串的大小,若s1比s2的大,函數(shù)值為1,否則函數(shù)值為0C、比較s1和s2所指字符串是否相等,若相等,函數(shù)值為1,否則函數(shù)值為0D、比較s1和s2所指字符串的長度,若s1比s2的長,函數(shù)值為1,否則函數(shù)值為0標(biāo)準(zhǔn)答案:4知識點解析:在函數(shù)fun()中有兩個字符型指針變量s1和s2,在函數(shù)中程序執(zhí)行while循環(huán),該循環(huán)退出條件有兩個:一個是s1[i]!=s2[i](兩個字符串不相等):第二個是s1[i]和s2[i]相等均為“\0”(兩個字符串相等)。循環(huán)退出后,執(zhí)行return語句,即兩個字符串相等則返回1,不相等則返回0。所以,C選項為所選。38、以下敘述中正確的是()。A、全局變量的作用域一定比局部變量的作用域范圍大B、靜態(tài)(static)類別變量的生存期貫穿于整個程序的運行期間C、函數(shù)的形參都屬于全局變量D、未在定義語句中賦初值的auto變量和static變量的初值都是隨機值標(biāo)準(zhǔn)答案:2知識點解析:若在函數(shù)中定義與全局變量名字相同局部變量,則全局變量在該函數(shù)中將不起作用,因此全局變量的作用域并不一定比局部變量的作用域大,故選項A不正確;靜態(tài)變量一旦定義,將在整個程序的運行期間都存在,故選項B正確;函數(shù)的形參只在函數(shù)調(diào)用的時候分配存儲空間,在退出函數(shù)時收回存儲空間,因此是局部的,故選項C不正確;沒有賦值的auto型變量的初值是隨機的,沒有賦值的static型變量的初值是0,故選項D不正確。所以,B選項為所選。39、有以下程序:#include<string.h>voidf(charp[][10],intn)/*字符串從小到大排序*/{chart[10];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[5][10]={"abc","aabdog","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[0]));}程序運行后的輸出結(jié)果是()。A、2B、4C、6D、3標(biāo)準(zhǔn)答案:4知識點解析:題目中已告知函數(shù)f()的作用是將字符串從小到大排序,因此主函數(shù)中調(diào)用完f(p,5);后,二維數(shù)組p中的內(nèi)容為("aabdfg","abbd","abc","cd","dcdbc"}。輸出的結(jié)果是strlen(p[0]),即p中第1個字符串的長度,所以結(jié)果是6。故本題應(yīng)該選擇C。40、設(shè)有如下說明:typedefstructST{longa;intb;charc[2];}NEW;則下面敘述中正確的是()。A、以上的說明形式非法B、ST是一個結(jié)構(gòu)體類型C、NEW是一個結(jié)構(gòu)體類型D、NEW是一個結(jié)構(gòu)體變量標(biāo)準(zhǔn)答案:4知識點解析:將題目中的定義語句去掉前面的typedef和后面的NEW(分號保留),就是一條完整的結(jié)構(gòu)體定義語句,其中struct是說明符,ST是結(jié)構(gòu)體名,大括號里面的是結(jié)構(gòu)體成員的定義。此時要聲明該結(jié)構(gòu)體變量時需要使用struct加結(jié)構(gòu)體名一起來聲明,structST一起構(gòu)成一個結(jié)構(gòu)體類型,就好像字符類型char。若只去掉前面的typedef,就是一條結(jié)構(gòu)體定義同時聲明一個結(jié)構(gòu)體變量NEW的語句,因為NEW的前面部分是structST的完整寫法,可以看作是structST。C語言允許用typedef說明一種新類型名,其語法格式為:typedef類型名標(biāo)識符;以后就可以用該標(biāo)識符來代替被說明的類型名了。因此,當(dāng)前面存在typedef時,該語句就變成了給structST的完整寫法定義一個新的名稱NEW。所以,此時的NEW是一個結(jié)構(gòu)體類型,它相當(dāng)于structST,即可以和char一樣單獨用來聲明該結(jié)構(gòu)體變量,而ST只是一個結(jié)構(gòu)體名,不能單獨用來聲明變量。所以,4個選項中C符合題意。41、有以下程序:#include<string.h>main(){charp[]={’a’,’b’,’c’},q[10]={’a’,’b’,’c’};printf("%d%d\n",strlen(p),strlen(q));}以下敘述中正確的是()。A、在給p和q數(shù)組置初值時,系統(tǒng)會自動添加字符串結(jié)束符,故輸出的長度都為3B、由于p數(shù)組中沒有字符串結(jié)束符,長度不能確定;但q數(shù)組中字符串長度為3C、由于q數(shù)組中沒有字符串結(jié)束符,長度不能確定;但p數(shù)組中字符串長度為3D、由于p和q數(shù)組中都沒有字符串結(jié)束符,故長度都不能確定標(biāo)準(zhǔn)答案:2知識點解析:使用初始化列表對字符數(shù)組賦初值,系統(tǒng)不會自動為其添加字符串結(jié)束符,使用字符串初始化時才會自動添加,所以選項A是錯的。數(shù)組長度在未指定的情況下由初始化列表項中數(shù)據(jù)的個數(shù)決定,若已指定且初始化項數(shù)不足時,多出部分會自動初始化為0,0等價于寧符串結(jié)束符’\0’。所以選項B是正確的,C和D都是錯誤的。本題應(yīng)該選B。42、有以下程序:inta=4;intf(intn){intt=0;staticinta=5;if(n%2){inta=6;t+=a++;}else{inta=7;t+=a++;}returnt+a++;}main(){ints=a,i=0;for(;i<2;i++)s+=f(i);printf("%d\n",s);}程序運行后的輸出結(jié)果是()。A、24B、28C、32D、36標(biāo)準(zhǔn)答案:2知識點解析:題目中第1行聲明了一個全局變量a,在函數(shù)f()中,也聲明了一個靜態(tài)變量a,這時全局變量被屏蔽,即在f()函數(shù)中用到的a是其內(nèi)部定義的這個靜態(tài)變量a,而不是全局變量。但f()函數(shù)的if子句和else子句又分別了局部變量a,這時靜態(tài)變量a又被屏蔽,即在if子句中使用的是if子句自己定義的a,else子句也是這樣。在主函數(shù)中,通過for語句連續(xù)執(zhí)行了2次f()函數(shù),并將返回值累加到s中,且s被全局變量a初始化,即初始值是4。第1次調(diào)用f(),參數(shù)值為0,0能被2整除,執(zhí)行if子句,t被自增6,a增1不會影響外面的變量a。函數(shù)返回t和靜態(tài)變量a的和,即11,此時,靜態(tài)變量a被增1,這次對a的改變會帶入到下一次f()函數(shù)的調(diào)用小去。第2次調(diào)用f(),參數(shù)值為1,1不能被2整除,執(zhí)行else子句,t被自增7,a增1不會影響外面的變量a。函數(shù)返回t和靜態(tài)變量a的和,此時a的值為上次調(diào)用f()時增1后的值6,即返回7+6=13。所以,主函數(shù)中s現(xiàn)在的值為4+11+13=28。故應(yīng)該選擇B。43、有以下程序;voidss(char*s,chart){while(*s){if(*s==t)*s=t-’a’+’A’;s++;}}main(){charstr1[100]="abcddfefdbd",c=’d’;ss(str1,c);printf("%s\n",str1);}程序運行后的輸出結(jié)果是()。A、ABCDDEFEDBDB、abeDDfefDbDC、abcAAfefAbAD、Abcddfefdbd標(biāo)準(zhǔn)答案:2知識點解析:本題中的函數(shù)ss()有兩個參數(shù),一個是字符型指針變量s,另一個是字符型變量t。在函數(shù)中通過一個while循環(huán),在循環(huán)中一次取出s指向的字符串并判斷它是否和t中存放的字符相同,若相等,則執(zhí)行“*s=t-’a’+’A’;”(若是小寫字母,則把它轉(zhuǎn)換成大寫字母)語句。在主函數(shù)中執(zhí)行函數(shù)調(diào)用ss(str1,c),很顯然是把str1數(shù)組中所有字符“d”變成大寫字母,其他字符不變。所以4個選項中B正確。44、設(shè)有以下語句:typedefstructTT{charc;inta[4];}CIN;則下面敘述中正確的是()。A、可以用TT定義結(jié)構(gòu)體變量B、TT是struct類型的變量C、可以用CIN定義結(jié)構(gòu)體變量D、CIN是structTT類型的變量標(biāo)準(zhǔn)答案:4知識點解析:將題目中的定義語句去掉前面的typedef和后面的CIN(分號保留),就是一條完整的結(jié)構(gòu)體定義語句,其中struct是說明符,TT是結(jié)構(gòu)體名,大括號里面的是結(jié)構(gòu)體成員的定義。此時要聲明該結(jié)構(gòu)體變量時需要使用struct加結(jié)構(gòu)體名一起來聲明,structTT一起構(gòu)成一個結(jié)構(gòu)體類型,就好像字符類型char。若只去掉前面的typedef,就是一條結(jié)構(gòu)體定義同時聲明個結(jié)構(gòu)體變量CIN的語句,因為CIN的前面部分是structTT的完整寫法,可以看作是structTT。C語言允許用typedef說明一種新類型名,其語法格式為:typedef類型名標(biāo)識符;以后就可以用該標(biāo)識符來代替被說明的類型名了。因此,當(dāng)前面存在typedef時,該語句就變成了給structTT的定義一個新的名稱CIN。所以,此時的CIN是一個結(jié)構(gòu)體類型,它相當(dāng)于structTT,即可以和char一樣單獨用來聲明該結(jié)構(gòu)體變量,而TT只是一個結(jié)構(gòu)體名,不能單獨用來聲明變量。所以,4個選項中C符合題意。45、有以下程序:#include<stdio.h>stxucttt{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}}程序的運行結(jié)果是()。A、20,30,B、30,17C、15,30,D、20,15,標(biāo)準(zhǔn)答案:8知識點解析:題目中定義了一個全局結(jié)構(gòu)體數(shù)組a,結(jié)構(gòu)體中包含兩個成員;一個int型變量x和一個自身類型指針y。所以,結(jié)構(gòu)體數(shù)組a的初始化列表中每兩個初始化一個結(jié)構(gòu)體元素。主函數(shù)通過一個for循環(huán),連續(xù)調(diào)用了兩次輸出函數(shù)printf(),每次輸出p所指元素的x成員值。p初始化時指向數(shù)組a的首地址,即a[0]的位置,所以第1次輸出的值為20。然后又將a[0]的成員y的值賦給p,y在初始化時是a+1,所以p在第2次輸出時指向的元素是a[1],故第2次輸出的值為15。所以本題最終輸出結(jié)果是“20,15,”,應(yīng)該選擇D。46、有以下程序:main(){intx[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j--)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<8;i++)printf("%d",x[i]);printf("\n");}程序運行后的輸出結(jié)果是()。A、75310246B、1234567C、76310462D、13570246標(biāo)準(zhǔn)答案:1知識點解析:主函數(shù)中定義了一個整型數(shù)組x,并初始化。接著執(zhí)行了一個二重for循環(huán),在該二重循環(huán)的作用是將數(shù)組的前4個元素按從大到小排序,接著用了一個二重循環(huán)(也是冒泡算法)將數(shù)組的后4個元素按從小到大的順序排序,故最后依次輸出數(shù)組的個元素的值為75310246,所以,4個選項中選項A符合題意。47、設(shè)有以下定義:uniondata{intd1;floatd2;}demo;則下面敘述中錯誤的是()。A、變量demo與成員d2所占的內(nèi)存字節(jié)數(shù)相同B、變量demo中各成員的地址相同C、變量demo和各成員的地址相同D、若給demo.d1賦99后,demo.d2中的值是99.0標(biāo)準(zhǔn)答案:8知識點解析:本題中float所占內(nèi)存字節(jié)數(shù)為4,而int類型在VC6.0中占4字節(jié),所以demo就與成員d2所占字節(jié)數(shù)是相同的,選項A的說法正確。聯(lián)合體的所有成員的首地址都是相同的,和聯(lián)合體變量的地址一致。故選項B和C都是正確的。由于int類型數(shù)據(jù)和float類型數(shù)據(jù)在內(nèi)存中的存放格式是不一樣的,所以給d1賦99后,d2中不會得到99.0這個值。故選項D不正確,答案應(yīng)該選擇D。48、有以下程序:#include<stdlib.h>structNODE{intnurn;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->num=1;q->num=2;r->num=3;p->next=q;q->next=r;r->next=NULL;sum+=q->next->num;sum+=p->num;Printf("%d\n",sum);}執(zhí)行后的輸出結(jié)果是()。A、3B、4C、5D、6標(biāo)準(zhǔn)答案:2知識點解析:本題中定義了一個結(jié)點structNODE,在主函數(shù)中定義了三個結(jié)點變量指針p、q和r,接著通過malloc函數(shù)分配了三個結(jié)點并讓p、q和r分別指向他們,再接著給p、q和r所指向的結(jié)點的num域賦值為1、2、3,然后讓結(jié)點p指向小讓q指向r,r指向NULL。顯然q->next->num的值為指針r所指向結(jié)點的num域的值為3,p->num的值為指針p所指向結(jié)點的num域的值為1,故最后輸出s的值為3+1=4。所以,4個選項中選項B符合題意。49、有以下程序:#include<stdlib.h>main(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf("%s%s",p,q);printf("%s%s\n",p,q);}若從鍵盤輸入:abcdef<回車>,則輸出結(jié)果是()。A、defdefB、abcdefC、abedD、dd標(biāo)準(zhǔn)答案:1知識點解析:本題首先定義兩個字符型指針變量p和q,通過malloc()函數(shù)申請20個字符的存儲空間,并把它的首地址賦給p,在把p的值賦給q,p和q指向同一個存儲區(qū)。在scanf()語句中讀取字符串到p和q指向的字符串,先把“abc”讀取到p指向的存儲區(qū)中,第一個空格是結(jié)束標(biāo)記,第二個空格是分隔符,再把“def”存放到q指向的存儲區(qū),把原先的內(nèi)容覆蓋。所以p和q指向的存儲區(qū)中內(nèi)容是“def”,所以最后輸出的def,def所以4個選項中A正確。50、以下程序企圖把從終端輸入的字符輸出到名為abc.txt的文件中,直到從終端讀入字符#號時結(jié)束輸入和輸出操作,但程序有錯。#include<stdio.h>main(){FILE*four;charch;fout=fopen(’abc.txt’,’w’);ch=fgetc(stdin);while(ch!=’#’){fputc(ch,fout);ch=fgetc(stdin);}fclose(fout);}出錯的原因是()。A、函數(shù)fopen調(diào)用形式有誤B、輸入文件沒有關(guān)閉C、函數(shù)fgetc調(diào)用形式有誤D、文件指針stdin沒有定義標(biāo)準(zhǔn)答案:1知識點解析:stdin是標(biāo)準(zhǔn)輸入設(shè)備的文件指針,不需定義直接可以使用,它隨系統(tǒng)的啟動而打開,隨系統(tǒng)的關(guān)閉而關(guān)閉,fgetc()函數(shù)的作用是從某個文件中讀取一個數(shù)據(jù),其參數(shù)為要讀取文件的文件指針,所以本題中的調(diào)用形式是正確的。fopen()函數(shù)有兩個參數(shù),第一個參數(shù)是打開的文件名,第二個參數(shù)是文件打開模式,兩個參數(shù)都是字符串,本例中“fout=fopen(’abc.txt’,’w’);”語句的fopen()函數(shù)參數(shù)是錯誤的,應(yīng)該用雙引號“""”,正確的應(yīng)改為fout=fopen("abc.txt","w");。所以,A選項為所選。四、公共基礎(chǔ)填空題(本題共5題,每題1.0分,共5分。)51、設(shè)一棵完全二叉樹共有700個結(jié)點,則在該二叉樹中有【】個葉子結(jié)點。標(biāo)準(zhǔn)答案:350知識點解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。在根據(jù)完全二叉樹的定義,在一棵完全二叉樹中,最多有1個度為1的結(jié)點。因此,設(shè)一棵完全二叉樹具有n個結(jié)點,若n為偶數(shù),則在該二叉樹中有n/2個葉子結(jié)點以及n/2-1個度為2的結(jié)點,還有1個是度為1的結(jié)點:若n為奇數(shù),則在該二叉樹中有[n/2]+1個葉子結(jié)點以及[n/2]個度為2的結(jié)點,沒有度為1的結(jié)點。本題中,完全二叉樹共有700個結(jié)點,700是偶數(shù),所以,在該二叉樹中有350個葉子結(jié)點以及349個度為2的結(jié)點,還有1個是度為1的結(jié)點。所以,本題的正確答案為350。52、在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。標(biāo)準(zhǔn)答案:類知識點解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對象。53、診斷和改正程序中錯誤的工作通常稱為【】。標(biāo)準(zhǔn)答案:調(diào)試知識點解析:調(diào)試也稱排錯,調(diào)試的目的是發(fā)現(xiàn)錯誤的位置,并改正錯誤。54、對下列二叉樹進(jìn)行中序遍歷的結(jié)果為【】。標(biāo)準(zhǔn)答案:ACBDFEHGP知識點解析:中序遍歷方法的遞歸定義;當(dāng)二叉樹的根不為空時,依次執(zhí)行如下3個操作:①按中序遍歷左子樹。②訪問根結(jié)點。③技中序遍歷右子樹。根據(jù)遍歷規(guī)則來遍歷本題中的二叉樹。首先遍歷F的左子樹,同樣按中序遍歷。先遍歷C的左子樹,即結(jié)點A,然后訪問C,接著訪問C的右子樹,同樣按中序遍歷C的右子樹,先訪問結(jié)點B,然后訪問結(jié)點D,因為結(jié)點D沒有右子樹,因此遍歷完C的右子樹,以上就遍歷完根結(jié)點F的左子樹。然后訪問根結(jié)點F,接下來遍歷F的右子樹,同樣按中序遍歷。首先訪問E的左子樹,E的左子樹為空,則訪問結(jié)點E,然后訪問結(jié)點E的右子樹,同樣按中序遍歷。首先訪問G的左子樹,即H,然后訪問結(jié)點G,最后訪問G的右子樹P。以上就把整個二叉樹遍歷一遍,中序遍歷的結(jié)果為ACBDFEHGP。因此,劃線處應(yīng)填入“ACBDFEHGP”。55、在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖(DFD)中,利用【】對其中的圖形元素進(jìn)行確切解釋。標(biāo)準(zhǔn)答案:數(shù)據(jù)字典或DD知識點解析:數(shù)據(jù)流圖用來對系統(tǒng)的功能需求進(jìn)行建模,它可以用少數(shù)幾種符號綜合地反映出信息在系統(tǒng)中的流動、處理和存儲情況。數(shù)據(jù)詞典(DataDictionary,DD)用于對數(shù)據(jù)流圖中出現(xiàn)的所有成分給出定義,它使數(shù)據(jù)流圖上的數(shù)據(jù)流名字、加工名字和數(shù)據(jù)存儲名字具有確切的解釋。五、填空題(本題共9題,每題1.0分,共9分。)56、若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值是【】。c=(a-=(b-5));c=(a%11)+(b=3);標(biāo)準(zhǔn)答案:3知識點解析:這里:b-5=4,a-=4之后a的值為6,并把它賦給c。此時b的值并未被改變。在第2個表達(dá)式中,也只有賦值表達(dá)式b=3改變了b的值。所以兩行語句執(zhí)行完畢,b的值應(yīng)該為3。57、函數(shù)pi的功能是根據(jù)以下近似公式求π值:(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)現(xiàn)在請你在下面的函數(shù)中填空,完成求π的功能。#include"math.h"{doubles=0.0;longi;for(i=1;i<=n;i++)s=s+【】;return(sqrt(6*S));}標(biāo)準(zhǔn)答案:0/(i*i)或(double)1/(i*i)知識點解析:表達(dá)式1+1/(2*2)+1/(3*3)+...+1(n*n)可寫為1/(1*1)+1/(2*2)+1/(3*3)+...+1(n*n)n即:∑1÷(i×i)i=1對應(yīng)的C語言的表達(dá)式s=s+1.0/(i*i)。注:必須要寫成1.0的形式,否則1/(i,i)返回值為其值截尾取整,即恒為0。58、若輸入字符串:abcde,則以下while循環(huán)體將執(zhí)行【】次。while((ch=getchar())==’e’)printf("*");標(biāo)準(zhǔn)答案:0知識點解析:函數(shù)getchar()是從鍵盤得用戶輸入的一個字符。用戶輸入的第1個字符a,不管后面輸入的是什么ch的值都是’a’,因此條件(ch=getchar())==’e’為假,這個循環(huán)不會被執(zhí)行。59、若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是【】。intw[10]={23,54,10,33,47,98,72,80,61},*p=w;標(biāo)準(zhǔn)答案:p[5]或*(p+5)知識點解析:98是數(shù)組w的第5個元素(最開始的為第0個),而通過*p=w已經(jīng)將p指向了數(shù)組w,要想不移動指針p而引用98,可以有以下兩種寫法:p[5]、*(p+5)。60、設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語句,且fun函數(shù)為void類型;請寫出fun函數(shù)的首部【】。要求形參名為b。main(){double[10][22];intn;......fun(s);}標(biāo)準(zhǔn)答案:voidfun(doubleb[10][22])知識點解析:本題答案:voidfun(doubleb[10][22])。61、有以下程序:intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<3;i++)j+=f(i);printf("%d\n",j);}程序運行后的輸出結(jié)果是【】。標(biāo)準(zhǔn)答案:3知識點解析:i=1時,f(1)=1,j=j+f(1)=0+1=1;i=2時,f(2)=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此時循環(huán)結(jié)束,程序運行后的輸出結(jié)果是3。62、以下程序的輸出結(jié)果是【】。voidfun(){staticinta=0;a+=2;printf("%d",A);}main(){intcc;for(cc=1;CC<4;CC++)fun();printf("\n");}標(biāo)準(zhǔn)答案:246知識點解析:循環(huán)for(cc=1;cc<4;cc++)被執(zhí)行了3次。在函數(shù)fun中,由于a是static型變量,所以函數(shù)第1次調(diào)用后,a=2;第2次調(diào)用后,a=4;第3次調(diào)用后,a=6。63、以下程序的輸出結(jié)果是【】。#defineMAX(x,y)(x)>(y)?(x)L:(y)main(){inta=5,b=2,C=3,d=3,t;t=MAX(a+b,c+D)*10;printf("%d\n",t);}標(biāo)準(zhǔn)答案:7知識點解析:在C語言中,宏定義是直接替換的,所以在對表達(dá)式MAX(a+b,c+d)*10進(jìn)行替換后,表達(dá)式變?yōu)?a+b)>(c+d)?(a+b):(c+d)*10。在這個條件表達(dá)式中,(a+b)>(c+d)為真,所以用(a+b)的值為整個表達(dá)式的值(否則用(c+d)*10的值作為整個表達(dá)式的值),而(a+b)的值為7。所以整個表達(dá)式的值為7。64、實現(xiàn)程序可將磁盤中的一個文件復(fù)制到另一個文件中,兩個文件的文件名在可執(zhí)行命令的命令行中(相當(dāng)于copy命令),假定文件在當(dāng)前目錄下。請補全程序。#include<stdio.h>voidmain(intargc,char*argv[]){FILE*f1,*f2;if(argc<【】){printf("parametererror!\n");exit(0);}n=fopen(argv[1],"r");f2=fopen(argv[2],"w");while(【】)fputc(fgetc(f1),f2);fclose(f1);fclose(f2);}標(biāo)準(zhǔn)答案:3!feof(f1)知識點解析:要實現(xiàn)文件復(fù)制,需要指定源文件及目的文件,因此在命令行下執(zhí)行程序時至少要指定兩個參數(shù),加上程序名本身,故argc的值至少為3,因此第一空應(yīng)填3。while循環(huán)中語句fputc(fgetc(f1),(f2);的目的是將f1中的字符依次讀出并寫入到f2對應(yīng)的文件中去,直至文件f1結(jié)束為止,因此第二空為!feof(f1)。國家二級(C語言)筆試模擬試卷第2套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、下列對于線性鏈表的描述中正確的是______。A、存儲空間不一定是連續(xù),且各元素的存儲順序是任意的B、存儲空間不一定是連續(xù),且前件元素一定存儲在后件元素的前面C、存儲空間必須連續(xù),且各前件元素一定存儲在后件元素的前面D、存儲空間必須連續(xù),且各元素的存儲順序是任意的標(biāo)準(zhǔn)答案:A知識點解析:線性鏈表屬于鏈?zhǔn)酱鎯Y(jié)構(gòu),在鏈?zhǔn)酱鎯Y(jié)構(gòu)中,存儲空間可以不連續(xù),各元素的存儲順序是任意的,元素之間的邏輯關(guān)系是由指針域來決定的。2、下列關(guān)于棧的描述正確的是______。A、在棧中只能插入元素而不能刪除元素B、在棧中只能刪除元素而不能插人元素C、棧是特殊的線性表,只能在一端插入或刪除元素D、棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素標(biāo)準(zhǔn)答案:C知識點解析:棧是特殊的線性表,它的一端封閉,在另一端進(jìn)行插入和刪除操作。3、為了使模塊盡可能獨立,要求______。A、模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強B、模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱C、模塊的內(nèi)聚程度要盡量低,且各模塊問的耦合程度要盡量弱D、模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強標(biāo)準(zhǔn)答案:B知識點解析:為了使模塊盡可能獨立,模塊分解時應(yīng)滿足信息隱蔽原則。盡量使模塊的內(nèi)聚度高,模塊間的耦合度低。模塊的大小適中(通常一個模塊以50~100個語句行最為適宜)。4、下列敘述中,正確的是______。A、用E-R圖能夠表示實體集之間一對一的聯(lián)系、一對多的聯(lián)系、多對多的聯(lián)系B、用E-R圖只能表示實體集之間一對一的聯(lián)系C、用E-R圖只能表示實體集之間一對多的聯(lián)系D、用E-R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型標(biāo)準(zhǔn)答案:A知識點解析:E-R模型可以用一種非常直觀的圖的形式表示,這種圖稱為E-R圖。用E-R圖能夠表示實體集之間一對一的聯(lián)系、一對多的聯(lián)系、多對多的聯(lián)系。5、以下敘述中正確的是______。A、C語言的源程序不必通過編譯就可以直接運行B、C語言中的每條可執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機器指令C、C源程序經(jīng)編譯形成的二進(jìn)制代碼可以直接運行D、C語言中的函數(shù)不可以單獨進(jìn)行編譯標(biāo)準(zhǔn)答案:B知識點解析:C語言編寫的程序必須經(jīng)過編譯、連接后才可以執(zhí)行,選項A錯誤;C語言編譯后生成的二進(jìn)制代碼是目標(biāo)文件,需進(jìn)一步連接生成.exe文件方可執(zhí)行,選項C錯誤;C語言中函數(shù)可以單獨編譯。6、以下有4組用戶標(biāo)識符,其中合法的一組是______。A、For-subCaseB、4dDOSizeC、f2_G3IFabcD、WORDvoiddefine標(biāo)準(zhǔn)答案:C知識點解析:選項A中有非法標(biāo)識符-sub,選項B中有非法標(biāo)識符4d,選項D中有C語言保留字void。7、以下選項中不屬于C語言的類型的是______。A、signedshortintB、unsignedlongintC、unsignedintD、longshort標(biāo)準(zhǔn)答案:D知識點解析:本題考查C語言中整型變量的分類問題,選項D不是C語言合法的數(shù)據(jù)類型。8、有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*P,*q,*r;P=&a;q=&b;r=f(p,q);print("%d,%d,%d\n",*P,*q,*r);}執(zhí)行后的輸出結(jié)果是______。A、7,8,8B、7,8,7C、8,7,7D、8,7,8標(biāo)準(zhǔn)答案:B知識點解析:函數(shù)f是一個返回值為指針的函數(shù),其功能是比較兩個數(shù)中的最小值,并返回最小值的存儲單元地址。main函數(shù)中定義了指針變量p和q,p=&a,q=&b,即*p=7,*q=8,調(diào)用函數(shù){后r=p,所以*r=7,printf函數(shù)的輸出結(jié)果為7,8,7。9、有以下程序:main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若運行時從鍵盤上輸入:6,5,65,66<回車>,則輸出結(jié)果是______。A、6,5,A,BB、6,5,65,66C、6,5,6,5D、6,5,6,6標(biāo)準(zhǔn)答案:A知識點解析:char型數(shù)據(jù)類型以%d的形式輸入時,輸入的是ASCII值。65是字符A的ASCII碼值,66是字符B的ASCII值。10、有以下程序:main(){charstr[][10]={"China","Beijing"),*P=str;printf("%s\n",p+10);}程序運行后的輸出結(jié)果是______。A、ChinaB、BeijingC、ngD、ing標(biāo)準(zhǔn)答案:B知識點解析:本題中p+10表示字符串"Beijing"的地址,故正確答案為B。二、選擇題(1分)(本題共10題,每題1.0分,共10分。)11、有以下定義語句:doublea,b;intw;longc;若各變量已正確賦值,則下列選項中正確的表達(dá)式是______。A、a=a+b=b++B、w%((int)a+b)C、(c+w)%(int)aD、w=a==b;標(biāo)準(zhǔn)答案:C知識點解析:取模運算的操作數(shù)必須是整型或長整數(shù)類型,因此C正確。12、有以下程序:main(){inti=1,j=1,k=2;if((j++‖k++)&&i++)printf("%d,%d,%d\n",i,j,k);}執(zhí)行后的輸出結(jié)果是______。A、1,1,2B、2,2,1C、2,2,2D、2,2,3標(biāo)準(zhǔn)答案:C知識點解析:本題考查“邏輯或”運算的特例。本題中if語句的條件表達(dá)式為(j++||k++)&&i++,首先計算表達(dá)式(j++||k++)的值,++運算符位于右側(cè),因此先取j、k當(dāng)前值進(jìn)行運算,因j=1,所以表達(dá)式(j++||k++)的值為真,k++表達(dá)式不再執(zhí)行,故執(zhí)行完表達(dá)式(j++||k++)&&i++后,j=2、k=2、i=2。13、數(shù)字字符0的ASCII值為48,若有以下程序:main(){chara=’1’,b=’2’;printf("%c,",b++);printf("%d\n",b-a);}程序運行后的輸出結(jié)果是______。A、3,2B、50,2C、2,2D、2,50標(biāo)準(zhǔn)答案:C知識點解析:b++是先使用b再給b賦值1,因此是先輸出2,再將b加1,b=’3’,則第一條語句輸出2,第二條語句輸出2。14、有以下程序:main(){inti=10,j=1;printf("%d,%d\n",i--,++j);}執(zhí)行后的輸出結(jié)果是______。A、9,2B、l0,2C、9,1D、10,1標(biāo)準(zhǔn)答案:B知識點解析:本題中--運算符位于運算變量i右側(cè),++運算符位于變量j的左側(cè),所以先輸出i的當(dāng)前值10,然后i再加1;j先加1得2,然后輸出。15、以下能正確定義且賦初值的語句是______。A、iht=n1=n2=10;B、charc=32;C、floatf=f+1.1;D、doublex=12.3E2.5標(biāo)準(zhǔn)答案:A知識點解析:B選項中32應(yīng)加單引號,C選項中f=f+1.1兩邊都是不定值,不正確;D中E后要用整型數(shù),且E后必須要有數(shù)字。16、有以下程序:main(){charal=’M’a2=’m’;printf("%c\n",(al,a2));}以下敘述中正確的是______。A、程序輸出大寫字母MB、程序輸出小寫字母mC、格式說明符不足,編譯出錯D、程序運行時產(chǎn)生出錯信息標(biāo)準(zhǔn)答案:B知識點解析:輸出項表是一個逗號表達(dá)式,它的值為a2,因此輸出的是a2的值。17、以下程序的功能是進(jìn)行位運算:main(){unsignedchara,b;a=7^3;b=~4&3;printf("%d%d\n",a,b);}程序運行后的輸出結(jié)果是______。A、43B、73C、70D、40標(biāo)準(zhǔn)答案:A知識點解析:a=7^3=00000111^00000011=00000100=4;b=~4&3=~00000100&00000011=11111011&00000011=00000011=318、設(shè)有定義:floata=2,B=4,h=3;,以下C語言表達(dá)式中與代數(shù)式計算結(jié)果不相符的是______。A、(a十B)*h/2B、(1/2)*(a+B)*hC、(a+B)*h*1/2D、h/2*(a+B)標(biāo)準(zhǔn)答案:B知識點解析:選項B錯誤,不符合題意。19、若有以下程序段:intm=0,n=0;charc=’a’;scanf("%d%c%d",&m,&c,&n);printf("%d,%c,%d\n",m,c,n);若從鍵盤上輸入:10A10<回車>,則輸出結(jié)果是______。A、10,A,10B、16,a,10C、10,a,0D、10,A,0標(biāo)準(zhǔn)答案:A知識點解析:scanf函數(shù)為格式輸入函數(shù),執(zhí)行該函數(shù)后對變量m、n和c重新賦值,scanf的格式字符為"%dc%d",鍵盤輸入為10A10,所以m=10、c=’A’、n=10。20、以下程序運行后的輸出結(jié)果是______。main(){inta=1,b=2,c=3;if(c=a)printf("%d\n",c);elseprintf("%d\n",b);}A、2B、3C、5D、1標(biāo)準(zhǔn)答案:B知識點解析:根據(jù)if條件,語句c=a的值為1,因此輸出c值為3。三、選擇題(2分)(本題共20題,每題1.0分,共20分。)21、以下程序段中,能夠通過調(diào)用函數(shù)fun,使main函數(shù)中的指針變量p指向一個合法的整型單元的是______。A、main(){int*p;fun(p);……}intfun(int*p){ints;p=&s;}B、main(){int*p;fun(&p);……}intfun(int**p){ints;*p=&s;}C、#include<stdlib.h>main(){int*p;fun(&p);……}intfun(int**p){*p=(int*)malloc(2);}D、#include<stdlib.h>main(){int*p;fun(p);……}intfun(int*p){p=(int*)malloc(sizeof(int));}標(biāo)準(zhǔn)答案:C知識點解析:選項A和B中p指向局部變量s的地址,退出函數(shù)fun后,該局部變量也被釋放,不能使p指向一個整型單元地址;選項D中通過malloc函數(shù)分配一個整型地址,但不能被返回到main函數(shù)中,因為指針參數(shù)指向的地址不能被改變;選項C中,p是指向指針的指針,函數(shù)fun改變的是其指向的內(nèi)容,而不是其地址。22、有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;}程序在執(zhí)行了c=&b;b=&a;語句后,表達(dá)式**c的值是______。A、變量a的地址B、變量b中的值C、變量a中的值D、變量b的地址標(biāo)準(zhǔn)答案:C知識點解析:本題中b是指向int型的指針變量,c是指向指針的指針變量。執(zhí)行完語句c=&b;b=&a;后,**c=a=5。23、有以下程序:main(){inti=0,s=0;do{if(i%2){i++;continue;}i++;s+=i;}while(i<7);printf("%d\n",s);}執(zhí)行后的輸出結(jié)果是______。A、16B、12C、28D、21標(biāo)準(zhǔn)答案:A知識點解析:continue語句的作用是結(jié)束本次循環(huán),程序中while循環(huán)語句的功能是計算1~7之間奇數(shù)之和,即s=1+3+5+7=16。24、以下能正確定義一維數(shù)組的選項是______。A、inta[5]={0,1,2,3,4,5);B、chara[]={0,1,2,3,4,5);C、chara={’A’,’B’,’C’};D、inta[5]="0123";標(biāo)準(zhǔn)答案:B知識點解析:A中初值的個數(shù)大于a的定義的長度,錯誤。C中a被定為字符卻給它賦值為數(shù)值,錯誤。D中a是整型數(shù)組卻給它賦值為字符串,錯誤。25、已有定義:chara[]="xyz"’b[]={’x’,’y’,’z’);,以下敘述中正確的是______。A、數(shù)組a和b的長度相同B、a數(shù)組長度小于b數(shù)組長度C、a數(shù)組長度大于b數(shù)組長度D、上述說法都不對標(biāo)準(zhǔn)答案:C知識點解析:a數(shù)組是字符串,系統(tǒng)會自動地給它加一個結(jié)束標(biāo)志符’\0’,因此a的長度就變?yōu)?了,所以a數(shù)組比b數(shù)組長。26、有以下程序:main(){charp[]={’a’,’b’,’c’},q[]="abc";printf("%d%d\n",sizeof(p),sizeof(q));};程序運行后的輸出結(jié)果是______。A、44B、33C、34D、43標(biāo)準(zhǔn)答案:C知識點解析:因為在C語言中對于字符串都會在最后加上結(jié)束標(biāo)志’\0’,因此,q的民度為4。27、若程序中定義了以下函數(shù):doublemyadd(doublea,doubleB){return(a+B);}并將其放在調(diào)用語句之后,則在調(diào)用之前應(yīng)該對函數(shù)進(jìn)行說明,以下選項中錯誤的說明是______A、doublemyadd(doublea,B);B、doublemyadd(double,double);C、doublemyadd(doubleb,doubleA);D、doublemyadd(doublex,doubley);標(biāo)準(zhǔn)答案:A知識點解析:選項A中沒有指定第二個形參變量B的數(shù)據(jù)類型,錯誤。28、以下程序的輸出結(jié)果是______。intf(){staticinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a);A、20B、24C、25D、15標(biāo)準(zhǔn)答案:D知識點解析:函數(shù)f中變量i為靜態(tài)變量,函數(shù)f調(diào)用結(jié)束后變量i所占據(jù)的存儲單元不會釋放,而在主函數(shù)中f被調(diào)用5次,具體過程如下:第1次調(diào)用f:s=s+i=1+0=1,i=i+1=1,主函數(shù)中a=a+f()=0+1=1第2次調(diào)用f:s=s+i=1+1=2,i=i+1=2,主函數(shù)中a=a+f()=1+2=3第3次調(diào)用f:s=s+i=1+2=3,i=i+1=3,主函數(shù)中a=a+f()=3+3=6第4次調(diào)用f:s=s+i=1+3=4,i=i+1=4,主函數(shù)中a=a+f()=6+4=10第5次調(diào)用f:s=s+i=1+4=5,i=i+4=5,主函數(shù)中a=a+f()=10+5=15所以printf語句的輸出結(jié)果為15。29、有以下程序:intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf("%d,%d,%d\n",e,f,g);}程序運行后的輸出結(jié)果是______。A、4,3,7B、3,4,7C、5,2,7D、2,5,7標(biāo)準(zhǔn)答案:A知識點解析:函數(shù)f1是返回x、y中較大的一個,f2是返回x、y中較小的一個。因此e=4,f=3,g=7。30、有以下程序:#defineN20fun(inta[],intn,intm){inti,j;for(i=m;i>=n;i--)a[i+1]=a[i];}main(){inti,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i<5;i++)printf("%d",a[i]);}程序運行后的輸出結(jié)果是______。A、10234B、12344C、12334D、12234標(biāo)準(zhǔn)答案:C知識點解析:由于用了宏定義a[10]~a[19]均為0。函數(shù)fun的功能是把從a[n]到a[m]中的元素依次賦給后面的一個元素。調(diào)用了fun(a,2,9)以后,a[N]={1,2,3,3,4,5,6,7,8,9,1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文化創(chuàng)意產(chǎn)業(yè)項目研發(fā)投資合同
- 農(nóng)產(chǎn)品收購書合同
- 醫(yī)院裝修法律協(xié)議合同材料
- 外包項目勞動合同
- 全款二手房屋買賣合同書
- 焊接鋼管買賣合同
- 公司財務(wù)保密協(xié)議
- 三農(nóng)產(chǎn)品電子商務(wù)推廣應(yīng)用方案
- 電子支付系統(tǒng)服務(wù)協(xié)議
- 物流配送安全免責(zé)合同書
- 某銀行安全保衛(wèi)工作知識考試參考題庫(500題)
- 2023年全國普通高等學(xué)校體育單招真題政治試卷(原卷+解析)
- 片劑工藝流程圖
- 國家標(biāo)準(zhǔn)圖集16G101平法講解課件
- 北師大版六年級數(shù)學(xué)下冊《數(shù)學(xué)好玩(全套)》公開課件
- 電機工程學(xué)報論文格式模版
- 企業(yè)服務(wù)工作實施方案
- 信息技術(shù)ppt課件完整版
- 2022義務(wù)教育小學(xué)科學(xué)課程標(biāo)準(zhǔn)(2022版)解讀及測試題3套(含答案)
- 新湘教(湖南美術(shù))版小學(xué)美術(shù)五年級下冊全冊PPT課件(精心整理匯編)
- 大智慧指標(biāo)公式函數(shù)大全(完整可打印版)
評論
0/150
提交評論