國家二級(C語言)筆試模擬試卷20(共486題)_第1頁
國家二級(C語言)筆試模擬試卷20(共486題)_第2頁
國家二級(C語言)筆試模擬試卷20(共486題)_第3頁
國家二級(C語言)筆試模擬試卷20(共486題)_第4頁
國家二級(C語言)筆試模擬試卷20(共486題)_第5頁
已閱讀5頁,還剩128頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

國家二級(C語言)筆試模擬試卷20(共9套)(共486題)國家二級(C語言)筆試模擬試卷第1套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、一個數(shù)據(jù)元素第一個元素的存儲地址是100,每個元素的長度為2,則第5個元素的地址是()。A、110B、108C、100D、120標(biāo)準(zhǔn)答案:2知識點解析:數(shù)據(jù)元素的存儲位置均取決于第一個數(shù)據(jù)元素的存儲位置,即:LOC(aj)=LOC(a)1+(i-1)C↑↑基地址一個數(shù)據(jù)元素所占的字節(jié)數(shù)所以第5個元素的地址=100+2×(5-1)=108。2、一個棧的入棧序列是1,2,3,…,n,其輸出序列為P1,P2,P3,…,Pn,若p1=n,則pi為()。A、iB、n=iC、n-i+1D、不確定標(biāo)準(zhǔn)答案:4知識點解析:棧是先進(jìn)后出的線性表。當(dāng)p1=n,即n是最先出棧的,根據(jù)棧的運(yùn)算原理,n必定是最后入棧的,那么輸入順序必定是1,2,3,…,n,則出棧的序列是n,n-1,n-2,…,1,所以答案是C。3、在一個容量為15的循環(huán)隊列中,若頭指針front=6,尾指針rear=14,則該循環(huán)隊列中元素個數(shù)為()。A、8B、9C、14D、15標(biāo)準(zhǔn)答案:1知識點解析:設(shè)循環(huán)隊列的容量為m,如果rear>front,則循環(huán)隊列中的元素個數(shù)為rear-front;如果rear<front,則循環(huán)隊列中的元素個數(shù)為m+(rear-front)。根據(jù)題意,本題中,front=6,rear=14,即rear>front,因此,循環(huán)隊列中的元素個數(shù)為rear-front=14-6=8。本題的正確答案為8。4、下列工具中,屬于需求分析常用工具的是()。A、PFDB、PADC、N-SD、DFD標(biāo)準(zhǔn)答案:8知識點解析:在需求分析階段,根據(jù)可行性研究階段提交的文檔,特別是從數(shù)據(jù)流圖(DFD)出發(fā),對目標(biāo)系統(tǒng)提出清晰、準(zhǔn)確和具體的要求,即要明確系統(tǒng)必須做什么的問題。這個階段中常用的工具是數(shù)據(jù)流圖(DFD)。5、在面向?qū)ο蟮某绦蛟O(shè)計中,能表示類之間相似性質(zhì)的機(jī)制是()。A、繼承B、封裝C、分類D、動態(tài)連接標(biāo)準(zhǔn)答案:1知識點解析:在面向?qū)ο蟮某绦蛟O(shè)計中,繼承是表示類之間相似性的機(jī)制。6、軟件調(diào)試的目的是()。A、發(fā)現(xiàn)錯誤B、改正錯誤C、改善軟件的性能D、挖掘軟件的潛能標(biāo)準(zhǔn)答案:2知識點解析:軟件調(diào)試的目的是發(fā)現(xiàn)錯誤的位置,并改正錯誤。7、設(shè)有二元關(guān)系R和三元關(guān)系S,下列運(yùn)算中合法的是()。A、RUSB、RNSC、R-SD、RXS標(biāo)準(zhǔn)答案:8知識點解析:本題中,關(guān)系R與S的表格框架不同,R是二元關(guān)系,S是三元關(guān)系。而在并∪、交∩、差-運(yùn)算中,都要求參加運(yùn)算的兩個關(guān)系具有相同的屬性名表,其運(yùn)算結(jié)果也與它們具有相同的屬性名,即表框架相同。兩個不同框架的關(guān)系可以做笛卡爾積×運(yùn)算。8、關(guān)系數(shù)據(jù)庫的數(shù)據(jù)及更新操作必須遵循()等完整性規(guī)則。A、實體完整性和參照完整性B、參照完整性和用戶自定義完整性C、實體完整性和用戶自定義完整性D、實體完整性、參照完整性和用戶自定義完整性標(biāo)準(zhǔn)答案:8知識點解析:關(guān)系模型中包括關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性。關(guān)系完整性即數(shù)據(jù)完整性,包括實體完整性、參照完整性、用戶自定義完整性。9、概要設(shè)計是軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計,以下選項中不屬于概要設(shè)計的是()。A、把軟件劃分成模塊B、確定模塊之間的調(diào)用關(guān)系C、確定各個模塊的功能D、設(shè)計每個模塊的偽代碼標(biāo)準(zhǔn)答案:8知識點解析:概要設(shè)計是數(shù)據(jù)庫的總體設(shè)計,其目的就是按照需求規(guī)格說明書把軟件依據(jù)功能劃分為多個模塊,然后確定每個模塊要實現(xiàn)的功能,最后確定模塊之間的調(diào)用關(guān)系。而設(shè)計每個模塊的偽代碼則屬于詳細(xì)設(shè)計。所以只有最后一個不屬于概要設(shè)計范疇。10、規(guī)范化理論中分解()主要是消除其中多余的數(shù)據(jù)相關(guān)性。A、關(guān)系運(yùn)算B、內(nèi)模式C、外模式D、視圖標(biāo)準(zhǔn)答案:1知識點解析:數(shù)據(jù)庫規(guī)范化的基本思想是逐步消除數(shù)據(jù)依賴中不合適的部分,根本思想是通過分解關(guān)系運(yùn)算來消除多余的數(shù)據(jù)相關(guān)性。二、選擇題(1分)(本題共10題,每題1.0分,共10分。)11、以下敘述中正確的是()。A、構(gòu)成C程序的基本單位是函數(shù)B、可以在一個函數(shù)中定義另一個函數(shù)C、main()函數(shù)必須放在其他函數(shù)之前D、所有被調(diào)用的函數(shù)一定要在調(diào)用之前進(jìn)行定義標(biāo)準(zhǔn)答案:1知識點解析:一個C語言程序是由許多函數(shù)組成的,因此C程序的基本單位是函數(shù),選項A的敘述是正確的。根據(jù)函數(shù)的定義語法規(guī)定,在C語言程序中,不能嵌套定義,即不能在函數(shù)中再定義函數(shù),故排除選項B。main()函數(shù)在C語言程序中是必須的,但main()函數(shù)可以放在程序中的任意位置,故排除選項C。對于用戶定義的函數(shù)應(yīng)遵循“先定義,后使用”的規(guī)則。凡是未在調(diào)用前定義的函數(shù),C編譯程序都默認(rèn)它的返回值類型為int類型。對于返回值為其他類型的函數(shù),若把函數(shù)的定義放在調(diào)用之后,應(yīng)該在調(diào)用之前對函數(shù)進(jìn)行說明,因此被調(diào)用的函數(shù)不一定要在調(diào)用之前進(jìn)行定義,選項D不正確。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ù)以0x開頭,故選項D不正確,所以,4個選項中選項C符合題意。13、以下不能定義為用戶標(biāo)識符的是()。A、scanfB、VoidC、3comD、int標(biāo)準(zhǔn)答案:8知識點解析:在C語言中,合法的標(biāo)識符由字母、數(shù)字和下劃線組成,并且第一個字符必須為字母或下劃線。選項D中int為C語言中的保留字,不能作為用戶的標(biāo)識符:選項A、B、C都為合法的標(biāo)識符。所以,4個選項中選項D符合題意。14、以下所列的C語言常量中,錯誤的是()。A、0xFFB、1.2e0.5C、2LD、’\72’標(biāo)準(zhǔn)答案:2知識點解析:在C語言中常量可以用十進(jìn)制數(shù)、八進(jìn)制數(shù)、十六進(jìn)制數(shù)來表示:也可以用轉(zhuǎn)義字符、長整型、科學(xué)計數(shù)法等來表示。選項A為十六進(jìn)制表示法正確,故選項A正確。選項B為科學(xué)計數(shù)法,但在選項B中的科學(xué)計數(shù)的表示形式是錯誤的,指數(shù)不能為小數(shù),故選項B的表示法是錯誤的。選項C為長整型表示法正確,故C正確。選項D為轉(zhuǎn)義字符表示正確,故選項D的表示法是正確的。所以,4個選項中選項B符合題意。15、有以下定義語句: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)答案:4知識點解析:選項A不是合法的賦值語句,將最右邊的第一個賦值表達(dá)式加括號即為a=a+(b=b++)才正確,故選項A不正確。選項B中運(yùn)算符%的對象必須是整型,而在選項B中(int)a+b為double型,故選項B不正確。a,b都為double型,應(yīng)當(dāng)避免使用a==b這樣的關(guān)系表達(dá)式,因為通常存放在內(nèi)存中的實型數(shù)據(jù)是有誤差的,因此不可能精確相等,這將導(dǎo)致關(guān)系表達(dá)式a==b總為0。所以,4個選項中選項C符合題意。16、有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a>b);printf("%d,%d\n"m,k,m);}程序運(yùn)行后的輸出結(jié)果是()。A、0,0B、O,1C、1,0D、1,1標(biāo)準(zhǔn)答案:4知識點解析:在||運(yùn)算中當(dāng)其左邊的表達(dá)式為真,右邊的表達(dá)式將不再執(zhí)行。主函數(shù)中,||左邊的表達(dá)式k=(n=b>a),2>1為真,所以n被賦值為1,接著k被賦值1,即||運(yùn)算符左邊表達(dá)式為真,此時不再計算||右邊的表達(dá)式,因此m的值沒有被改變?nèi)詾?,最后的輸出結(jié)果1,0。所以,4個選項中選項C符合題意。17、下列關(guān)于單目運(yùn)算符++、--的敘述中正確的是()。A、它們的運(yùn)算對象可以是任何變量和常量B、它們的運(yùn)算對象可以是char型變量和int型變量,但不能是float型變量C、它們的運(yùn)算對象可以是int型變量,但不能是double型變量和float型變量D、它們的運(yùn)算對象可以是char型變量、int型變量和float型變量標(biāo)準(zhǔn)答案:8知識點解析:++和--這兩種運(yùn)算符是單目運(yùn)算符,其運(yùn)算對象可以是整型、字符型、float型和double型等基本數(shù)據(jù)類型。所以,D選項為所選。18、若有以下程序段(n所賦的是八進(jìn)制數(shù)):intm=32767,n=032767;printf("%d,%o\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選項為所選。19、以下4個選項中,不能看作一條語句的是()。A、{;}B、a=0,b=0,c=0;C、if(a>0);D、if(b==0)m=1;n=2;標(biāo)準(zhǔn)答案:8知識點解析:C語言的語句都用“;”結(jié)束。如果只有一個分號,稱為“空語句”。用一對花括號把若干語句括起來構(gòu)成一個語句組,稱為“復(fù)合語句”,在語法上視為一條語句。因此選項A是一條語句。選項B是逗號表達(dá)式加分號構(gòu)成的語句。選項C是一條if語句,該語句的if子句是一條空語句。選項D中“if(b==0)m=1;n=2;”是兩個表達(dá)式語句。所以,4個選項中選項D符合題意。20、設(shè)有定義:inta,*p=&a;以下scanf語句中能正確為變量a讀入數(shù)據(jù)的是()。A、scanf("%d",pa);B、scanf("%d",a);C、scanf("%d",&pa);D、scanf("%d",*pa);標(biāo)準(zhǔn)答案:1知識點解析:本題中定義了整型變量a和一個指向整型數(shù)據(jù)的指針變量pa,并定義pa是一個存放a的地址的變量。選項B中使用a是變量名而不是內(nèi)存地址,故選項B不正確。&pa是取指針變量pa的地址,這個地址中存放的應(yīng)該是地址值,不能正確為變量a讀入數(shù)據(jù),故選項C不正確。選項D中*pa等價于變量名a,而輸入函數(shù)地址列表中的參數(shù)要求是內(nèi)存中的地址,故選項D不正確,所以,4個選項中選項A符合題意。三、選擇題(2分)(本題共30題,每題1.0分,共30分。)21、有以下程序:main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的輸出值為2,則應(yīng)該從鍵盤給n輸入的值是()。A、-1B、-3C、-5D、0標(biāo)準(zhǔn)答案:2知識點解析:根據(jù)題目要求,最后要使輸出的s值為2,在程序中改變s的值的語句只有循環(huán)體中的s+=1;語句,而初始s的值為0,顯然要使s的值變?yōu)?,該語句必須執(zhí)行兩次,即do-while循環(huán)中的循環(huán)體要執(zhí)行兩次,而在do-while中,首先不執(zhí)行條件而執(zhí)行do后面的循環(huán)體語句,然后再判斷while循環(huán)條件。所以不管循環(huán)判斷條件是否為真s+=1;語句至少執(zhí)行一次,根據(jù)分析,只需要while后面括號的循環(huán)判斷表達(dá)式的值為真成立一次且只能為真一次,將4個選項中的內(nèi)容依次代入該程序中不難得到只有n=-3剛好使循環(huán)判斷條件a!=n為真一次。故4個選項中選項B符合題意。22、有以下程序:main(){chark;inti;for(i=1;i<3;i++){scanf("%c",&k);switch(k){case’0’:printf("another\n");case’1’:printf("number\n");}}}程序運(yùn)行時,從鍵盤輸入01<回車>,程序執(zhí)行后的輸出結(jié)果是()。A、anothernumberB、anothernumberanotherC、anothernumbernumberD、numbernumber標(biāo)準(zhǔn)答案:4知識點解析:本題在for循環(huán)中嵌套了switch語句,每循環(huán)一次通過scanf()函數(shù)從鍵盤上輸入一個k值,然后執(zhí)行switch語句。for循環(huán)共循環(huán)了兩次,當(dāng)i=1時,從鍵盤上讀入’0’,使得k的值為’0’,執(zhí)行switch語句中case’0’:后面的語句,輸出"another",接著執(zhí)行case’0’:下面的語句輸出"number",退出switch語句,當(dāng)i=2時,從鍵盤上讀入’1’,使得k的值為’1’,執(zhí)行switch語句中case’1’后面的語句,輸出"number",退出switch語句。當(dāng)i=3時退出循環(huán)。故最后的輸出為"another"、"number"和"number",所以,4個選項中選項C符合題意。23、有以下程序:main(){inti=10,j=1;printf("%d,%d\n",i--,++j);}執(zhí)行后輸出結(jié)果是()。A、9,2B、10,2C、9,1D、10,1標(biāo)準(zhǔn)答案:2知識點解析:++、--運(yùn)算符在變量之前是先使變量的值加1或減1,然后再使用變量的值;如果在變量之后則先使用變量之前的值,再把變量的值加1或減1。顯然,程序中表達(dá)式i--的值為10,++j的值為2,所以最后輸出的值為10和2,故B選項為所選。24、下面程序段的執(zhí)行結(jié)果是()。intx=10;for(;x;x--){if(x%3)continue;printf("%d",x);}A、875421B、963C、741D、852標(biāo)準(zhǔn)答案:2知識點解析:本題的for循環(huán)省略了第一個表達(dá)式,即for沒有任何初始化動作;第二個表達(dá)式x的意思是只要x非0,則循環(huán)繼續(xù);第三個表達(dá)式讓x在每次循環(huán)結(jié)束時減1。x初始為10,然后進(jìn)入循環(huán)體,判斷x是否能被3整除,不能整除則執(zhí)行continue;語句進(jìn)入下一次循環(huán),能整除則輸出x。故最終輸出的結(jié)果為從10遞減到1之中能被3整除的數(shù)9、6和3。所以正確答案是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(i<=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;a=’\’;b=’\xbc’;c=’\0xab’;d="\017";printf("%c%c%c\n",a,b,c,*d);}編譯時出現(xiàn)錯誤,以下敘述中正確的是()。A、程序中只有“a=’\’;”語句不正確B、“b=’\xbc’;”語句不正確C、“d="\0127";”語句不正確D、“a=’\’;”和“c=’\0xab’;”語句都不正確標(biāo)準(zhǔn)答案:8知識點解析:語句a=’\’是錯誤的,因為\是轉(zhuǎn)義字符,應(yīng)該用\\來表示,語句“B=’\xbc’;”是正確的,它是將一個用十六進(jìn)制表示的轉(zhuǎn)義字符賦給一個字符型變量;語句“c=\0xab;”是錯誤的,反斜線后的十六進(jìn)制只可由小寫x開頭,不能用0x。語句“d="\0127";”是正確的,可以給字符型指針變量賦一個字符串常量,其作用是讓該指針變量指向該字符串常量。所以,D選項為所選。27、以下能正確定義二維數(shù)組的是()。A、inta[][3];B、inta[][3]={2*3};C、inta[][3]={};D、inta[2][3]={{1},{2},{3,4}};標(biāo)準(zhǔn)答案:2知識點解析:選項A中省略了第1維的長度,但沒有指定初始化列表,系統(tǒng)無法確定第1維的長度,故編譯不會通過;C語言中,初始化列表不能為空,所以選項C錯誤;選項D中定義了一個2行3列的數(shù)組,而在初始化列表中包含了3個大括號,即初始化3行值,編譯不會通過,故選項D錯誤。所以,4個選項中選項B符合題意。28、有以下程序:intf(inta){returna%2;}main(){ints[8]={1,3,5,2,4,6},i,d=0;for(i=0;f(s[i]);i++)d+=s[i];printf("%d\n",d);}程序運(yùn)行后的輸出結(jié)果是()。A、9B、11C、19D、21標(biāo)準(zhǔn)答案:1知識點解析:函數(shù)f()的作用是形參a為偶數(shù)的時候返回0,否則返回1,主函數(shù)中首先定義了一個長度為8的一維數(shù)組,然后給它部分賦初值{1,3,5,2,4,6)。其他沒有賦值的數(shù)組元素將自動賦值為0。for循環(huán)中,當(dāng)s[i]不為偶數(shù)時,將s[i]相加,所以d的值為d=1+3+5=9,因此最后輸出的d值為9。故4個選項中選項A符合題意。29、若有以下定義和語句:#include<stdio.h>inta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;則以下選項中錯誤的語句是()。A、*q=0;B、w=p;C、*p=a;D、*p=*w;標(biāo)準(zhǔn)答案:1知識點解析:本題中定義了3個指向整型的指針變量p、q、w,并讓p指向a,讓q指向b,通過將q的值賦給w,使w也指向b,最后將q指向NULL。因為q指向NULL,所以選項A中對q所指地址進(jìn)行寫入是非法的。故A選項為所選。30、有以下程序: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);printf("%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)答案:2知識點解析:本題定義了一個返回值為指針的函數(shù)f(),此函數(shù)有兩個指針型的形參x和y,該函數(shù)的功能,是返回x和y指向的變量中值較小的那個指針變量。主函數(shù)中定義了兩個指針變量p和q,并讓它們指向變量a和b,調(diào)用函數(shù)f(),返回指向的變量值較小的指針變量,r的值為指針變量p的值(變量a的地址),因此最后輸出的*p、*q和*r的值是7,8和7。所以,B選項為所選。31、有以下程序:main(){char*S[]={"one","two","three"},*p;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}執(zhí)行后輸出結(jié)果是()。A、n,twoB、t,oneC、w,oneD、o,two標(biāo)準(zhǔn)答案:4知識點解析:本題首先定義了一個有3個元素的指針數(shù)組s,并通過初始化列表使s[0]指向字符串“one”,s[1]指向字符串“two”,s[2]指向字符串“three”,然后通過賦值語句p=s[1],使p指向了字符串“two”,故*(p+1)就是字符‘w’。所以,C選項為所選。32、有以下程序:main(){intx[8]={8,7,6,5,0,0},*s;s=x+3;printf("%d\n",s[2]);}執(zhí)行后輸出結(jié)果是()。A、隨機(jī)值B、0C、5D、6標(biāo)準(zhǔn)答案:2知識點解析:本題通過賦值語句s=x+3,使指針變量s指向數(shù)組元素x[3],輸出語句中的s[2]等價于*(s+2),即x[5]的值0。所以,B選項為所選。33、以下選項中能正確把c1定義成結(jié)構(gòu)體變量的是()。A、typedefstruct{intred;intred;intgreen;intblue;}COLOR;COLORc1;B、structcolorc1{intredintred;intgreenintblue;};C、stmctcolor{intred,intgreen;intblue;}c1;D、struct{intred;intgreen;intblue;}c1;標(biāo)準(zhǔn)答案:8知識點解析:因為結(jié)構(gòu)體中不能出現(xiàn)同名的成員變量,所以選項A和B都是錯誤的;又因為結(jié)構(gòu)體中成員的定義應(yīng)該由分號隔開,所以選項C也是錯誤的。選項D定義了一個無名結(jié)構(gòu)體,并同時定義該結(jié)構(gòu)體變量c1,是正確的寫法。故應(yīng)該選擇D。34、設(shè)有以下定義和語句:inta[3][2]={1,2,3,4,5,6,),*p[3];p[0]=a[1];則*(p[0]+1)所代表的數(shù)組元素是()。A、a[0][1]B、a[1][0]C、a[1][1]D、a[1][2]標(biāo)準(zhǔn)答案:4知識點解析:本題中首先定義了一個3行2列的數(shù)組a,一個長度為3的指針數(shù)組p,接著把地址a[1]賦給p[0],此時p[0]為a[1][0]的地址,p[0]+1為a[1][1]的地址,故*(p[0]+1代表的元素為a[1][1]。所以,4個選項中選項C符合題意。35、有以下程序:main(){charstr[][10]={"China","Beijing"),*p=str;printf("%s\n",p+10);}程序運(yùn)行后的輸出結(jié)果是()。A、ChinaB、BeijngC、ngD、ing標(biāo)準(zhǔn)答案:2知識點解析:本題中首先定義了一個字符串?dāng)?shù)組并初始化,初始化后使得str[0]="China",str[1]="Beijng",然后定義一個指針變量p并讓其指向str,而在該二維數(shù)組中定義每個字符串的長度為10,所以p+10將指向str[1],因此最后輸出*(p+10)的值為Beijng。所以,4個選項中選項B符合題意。36、有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序運(yùn)行后的輸出結(jié)果是()。A、ABCDBCDCDDB、ABCDC、BCDD、BCDCDD標(biāo)準(zhǔn)答案:8知識點解析:本題中首先定義一個字符數(shù)組s,并將字符串"ABCD"存到數(shù)組s中,定義了一個字符指針變量p,在接下來for循環(huán)中,循環(huán)體共執(zhí)行了三次,第一次p指向s[1],所以此時輸出的p所指字符串的值為BCD,第二次循環(huán)p指向s[2],此時輸出p所指的字符串的值為CD,第三次循環(huán)p指向s[3],此時輸出的p所指的字符串的值為D。所以,4個選項中選項D符合題意。37、有以下程序: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);}程序運(yùn)行后的輸出結(jié)果是()。A、4B、3C、2D、1標(biāo)準(zhǔn)答案:2知識點解析:主函數(shù)中for循環(huán)執(zhí)行兩次,i=1和i=2。調(diào)用函數(shù)f(1),返回值為1,j=1;調(diào)用函數(shù)f(2),計算表達(dá)式f(n-1)+1的值時遞歸調(diào)用f(1),返回值為2,j=3。所以B為所選。38、有以下程序:#include<stdio.h>#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序運(yùn)行后的輸出結(jié)果是()。A、12B、15C、16D、20標(biāo)準(zhǔn)答案:1知識點解析:在程序中先將表達(dá)式中的宏替換掉,則輸出語句中的表達(dá)式為(a++)*(b++),而a++的值為3,b++的值為4。因此最后的值為3*4=12。所以,4個選項中選項A符合題意。39、設(shè)有以下語句:typedefstructS{intg;charh;}T;則下面敘述中正確的是()。A、可以用S定義結(jié)構(gòu)體變量B、可以用T定義結(jié)構(gòu)體變量C、S是struct類型的變量D、T是stnictS類型的變量標(biāo)準(zhǔn)答案:2知識點解析:本題使用typedef關(guān)鍵字將整個結(jié)構(gòu)體的定義部分stmctS{intg;charh;}聲明為別名T。此時T是一個結(jié)構(gòu)體類型,可以直接使用T聲明該結(jié)構(gòu)體變量,而S只是一個結(jié)構(gòu)體名,必須結(jié)合struct關(guān)鍵字才能聲明變量。故本題的正確答案為B。40、有以下程序:structSTU{charname[10];intnum;};voidf1(structSTUc){structSTUb={"LiSiGuo",2042);c=b;}voidf2(structSTU*c){structSTUb={"SunDan",2044);*c=b;}main(){structSTUa={"YangSan",2041},b={"WangYin",2043);f1(a);f2(&b);printf("%d%d\n",a.num,b.num);}執(zhí)行后輸出結(jié)果是()。A、20412044B、20412043C、20422044D、20422043標(biāo)準(zhǔn)答案:1知識點解析:本題中首先定義了一個結(jié)構(gòu)體類型STU,它由一個字符數(shù)組和一個整形變量hum組成。然后定義兩個函數(shù)f1和f2。其中f1是值傳遞的,f2是地址傳遞的。主函數(shù)中定義兩個結(jié)構(gòu)體變量a和b并分別賦初值,接著調(diào)用函數(shù)f1(a),由于函數(shù)n是值傳遞,故執(zhí)行該函數(shù)后并沒有改變a的值,再接著調(diào)用函數(shù)f2(&b),由于該函數(shù)是地址傳遞,執(zhí)行該函數(shù)后將使變量b的值為{"SunDan",2044},故函數(shù)最后輸出a.num和b.num的值為2041和2044。所以,4個選項中選項A符合題意。41、設(shè)有如下程序:#include’string.h"main(){staticchars1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果從鍵盤上輸入name1<回車>name2<回車>,則程序運(yùn)行后的輸出結(jié)果是()。A、$9B、@11C、$10D、@10標(biāo)準(zhǔn)答案:8知識點解析:本題首先定義了兩個字符數(shù)組,然后從鍵盤讀入兩個字符串"name1"和"name2"分別賦給它們,接下來使用strcmp()函數(shù)比較兩個字符串是否相等,若不相等就輸出一個‘@’字符,否則輸出一個‘$’字符,所以本題先輸出一個‘@’字符。最后使用strcat()函數(shù)將兩個字符串連成一個,然后使用strlen()函數(shù)求連接后的字符串長度,所以接下來又輸出一個10。故本題的正確答案為D。42、有以下程序:#include<stdlib.h>structNODE{intnum;structNODE*next;};main(){structNODE*p,*q,*r;p=(structNODE*)malloc(sizeof(structNODE));q=(structNODE*)mallloc(sizeof(structNODE));r=(structNODE*)malloc(sizeof(structNODE));p->num=10;q->num=20;r->num=30;p->next=q;q->next=r;printf("%d\n",p->num+q->next->num);}程序運(yùn)行后的輸出結(jié)果是()。A、10B、20C、30D、40標(biāo)準(zhǔn)答案:8知識點解析:本題在主函數(shù)中首先定義了3個結(jié)構(gòu)體指針變量p,q,r。然后調(diào)用內(nèi)存分配函數(shù)分別為其分配地址空間,程序中變量p->num的值為10,指針變量q->next指向指針變量r,r->num的值為30,所以變量q->next->num的值為30,因此,表達(dá)式p->num+q->next->num的值為10+30=40。所以4個選項中D正確。43、有以下程序段: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)答案:4知識點解析:主函數(shù)中定義了一個整型變量a,一個整型指針變量b和一個二級指針變量c,并讓c指向指針變量b,讓指針b指向整型變量a,所以**c為變量a的值,故4個選項中選項C符合題意。44、有以下程序:#include<string.h>main(){charstr[][20]={"Hello","Beijing"),*p=str[0];printf("%d\n",strlen(p+20));}程序運(yùn)行后的輸出結(jié)果是()。A、0B、5C、7D、20標(biāo)準(zhǔn)答案:4知識點解析:主函數(shù)中定義了一個二維字符數(shù)組并初始化,初始化后的結(jié)果為str[0]="Hello"、str[1]="Beijng",然后定義一個字符指針變量p并讓它指向str[0],即指向數(shù)組的首地址,而在C語言中無論是一維還是多維數(shù)組,其元素在內(nèi)存中都是順序存放的,故p+20后指針指向str[1],所以strlen(p+20);返回的是str[1]中字符串的長度,即"Beijng"的長度7,故4個選項中選項C符合題意。45、已定義以下函數(shù):fun(char*p2,char*p1){while((*p2=*p1)!=’\0’){p1++;p2++;}}函數(shù)的功能是()。A、將p1所指字符串復(fù)制到p2所指內(nèi)存空間B、將p1所指字符串的地址賦給指針p2C、對p1和p2兩個指針?biāo)缸址M(jìn)行比較D、檢查p1和p2兩個指針?biāo)缸址惺欠裼小痋0’標(biāo)準(zhǔn)答案:1知識點解析:函數(shù)funO中只有一條while循環(huán)語句,其循環(huán)條件為:當(dāng)表達(dá)式(*p2=*p1)!=’\0’的值為真時則循環(huán),即先將p1所指內(nèi)容賦給p2所指地址,然后判斷該內(nèi)容是否為字符串結(jié)束符’\0’,是則循環(huán)結(jié)束,否則執(zhí)行循環(huán)體,讓p1和p2同時后移一位。所以該函數(shù)實現(xiàn)的是“將p1所指字符串復(fù)制到p2所指內(nèi)存空間”,故應(yīng)該選擇A。46、有以下程序:main(){intx=3,y=2,z=1;printf("%d\n",x/y&~z);}程序運(yùn)行后的輸出結(jié)果是()。A、3B、2C、1D、0標(biāo)準(zhǔn)答案:8知識點解析:在表達(dá)式x/y&~z中,&前面表達(dá)式的值為1(3/2=1)表示二進(jìn)制為00000001,而按位取反運(yùn)算符~的優(yōu)先級高于按位與運(yùn)算符&,先計算&后面的取反運(yùn)算符~。z的二進(jìn)制表示為00000001,取反后為11111110,最后進(jìn)行&,即“00000001&11111110”結(jié)果為00000000,故最后的值為0,所以,4個選項中選項D符合題意。47、有如下程序:#include<stdio.h>main(){FILE*fp1;fp1=fopen("f1.txt","w");fprintf(fp1,"abc");fclose(fp1);}若文本文件f1.txt中原有內(nèi)容為good,則運(yùn)行以上程序后文件f1.txt中的內(nèi)容為()。A、goodabcB、abcdC、abcD、abcgood標(biāo)準(zhǔn)答案:4知識點解析:主函數(shù)中定義了一個文件指針fp1,然后通過fopen()函數(shù),以寫的方式打開文件f1.txt,并讓指針fp1指向它,接著調(diào)用fprimf()函數(shù)將abc寫到文件fp1所指的文件里,由于印1指向文件f1.txt的開始位置,因此abc將把文件f1.txt里原來的內(nèi)容good覆蓋掉,故文件f1.txt里最后的內(nèi)容為abc,所以,4個選項中選項C符合題意。以下程序的功能是:建立一個帶有頭結(jié)點的單向鏈表,并將存儲在數(shù)組中的字符依次轉(zhuǎn)存到鏈表的各個結(jié)點中,請從與下劃線處號碼對應(yīng)的一組選項中選擇出正確的選項。#include<stdlib.h>structnode{chardata;structnode*next;};(48)CreatList(char*s){structnode*h,*p,*q;h=(structnode*)malloc(sizeof(Structnode));p=q=h;while(*s!=‘\0’){p=(structnode*)malloc(sizeof(structnode));p->data=(49);q->next=p;q=(50);s++;}p->next=0;returnh;}main(){charstr[]="linklist";structnode*head;head=CreatList(str);}48、以下程序的功能是:建立一個帶有頭結(jié)點的單向鏈表,并將存儲在數(shù)組中的字符依次轉(zhuǎn)存到鏈表的各個結(jié)點中,請從與下劃線處號碼對應(yīng)的一組選項中選擇出正確的選項。#include<stdlib.h>structnode{chardata;structnode*next;};(48)CreatList(char*s){structnode*h,*p,*q;h=(structnode*)malloc(sizeof(Structnode));p=q=h;while(*s!=‘\0’){p=(structnode*)malloc(sizeof(structnode));p->data=(49);q->next=p;q=(50);s++;}p->next=0;returnh;}main(){charstr[]="linklist";structnode*head;head=CreatList(str);}A、char*B、stmctnodeC、strumnode*D、char標(biāo)準(zhǔn)答案:4知識點解析:暫無解析49、A、*sB、SC、*s++D、(*s)++標(biāo)準(zhǔn)答案:1知識點解析:暫無解析50、A、p->nextB、pC、sD、s->next標(biāo)準(zhǔn)答案:2知識點解析:在主函數(shù)中,定義了一個結(jié)構(gòu)體型指針變量head,然后將函數(shù)CreatList()的返回值賦給指針變量head,從這里可知函數(shù)CreatList()的返回值為structnode*類型,所以第48處的空白應(yīng)該填structnode*,故48題選項C正確;在函數(shù)CreatList()中首先定義3個結(jié)構(gòu)體型指針變量h,p和q。然后調(diào)用malloc()函數(shù)分配了一個結(jié)點空間,并讓指針h指向它,開始指針p、q和h都指向它,然后調(diào)用一個while循環(huán)語句,當(dāng)?shù)竭_(dá)字符串?dāng)?shù)組s的末尾結(jié)束循環(huán),在每次循環(huán)中,分配一個結(jié)點空間,并讓p指向它,然后讓該結(jié)點的data域的值等于字符串指針s所指的值,因此第49題的正確答案為選項A:接下來讓指針q所指結(jié)點的next指針指向結(jié)點p,然后讓指針q指向該指針的所指結(jié)點的下一個結(jié)點即p,所以第50個空白處應(yīng)該填p,選擇B。故第48題4個選項中選項C符合題意;第49題4個選項中選項A符合題意;第50題4個選項中選項B符合題意。四、公共基礎(chǔ)填空題(本題共5題,每題1.0分,共5分。)51、設(shè)一棵二叉樹的中序遍歷結(jié)果為ABCDEFG,前序遍歷結(jié)果為DBACFEG,則后序遍歷結(jié)果為【】。標(biāo)準(zhǔn)答案:ACBEGFD知識點解析:①確定根節(jié)點。在前序遍歷中,首先防問根結(jié)點,因此可以確定前序序列DBACFEG中的第一個結(jié)點D為二叉樹的根結(jié)點。②劃分左子樹和右子樹。在中序遍歷中,訪問根結(jié)點的次序為居中,首先訪問訪問左子樹上的結(jié)點,最后訪問右子樹上的結(jié)點,可知,在中序序列ABCDEFG中,以根結(jié)點D為分界線,子序列ABC在左子樹中,子序列EFG在右子樹中。如下圖所示。③確定左子樹的結(jié)構(gòu)。對于左子樹ABC,位于前序序列最前面的一個結(jié)點為了樹的根結(jié)點,根據(jù)前序遍歷結(jié)果,B為該了樹的根結(jié)點,中序序列中位于該根結(jié)點前面的結(jié)點構(gòu)成左子樹上的結(jié)點子序列,位于該根結(jié)點后面的結(jié)點構(gòu)成右子樹上的結(jié)點子序列,所以A為該左子樹的左結(jié)點,C為右結(jié)點?,F(xiàn)在可確定左子樹結(jié)構(gòu)如下:④確定右子樹的結(jié)構(gòu)。同理,可知右子樹的結(jié)構(gòu)。本二叉樹恢復(fù)的結(jié)果如圖所示。根據(jù)后序遍歷的原則,該二叉樹后序遍歷的結(jié)果為ACBEGFD。52、在面向?qū)ο蟮某绦蛟O(shè)計中,類描述的是具有相似性質(zhì)的一組【】。標(biāo)準(zhǔn)答案:對象知識點解析:在而向?qū)ο蟮某绦蛟O(shè)計中,類是具有共同屬性、共同方法的對象的集合,即類描述的是具有相似性質(zhì)的一組對象。53、Jackson方法是一種面向【】的結(jié)構(gòu)化方法。標(biāo)準(zhǔn)答案:數(shù)據(jù)結(jié)構(gòu)知識點解析:Jackson方法是一種面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化方法。54、一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體集“項目主管”與實體集“項目”的聯(lián)系屬于【】的聯(lián)系。標(biāo)準(zhǔn)答案:一對多知識點解析:實體集“項目主管”與實體集“項目”的聯(lián)系屬于一對多的聯(lián)系。55、數(shù)據(jù)獨立性分為邏輯獨立性與物理獨立性。當(dāng)數(shù)據(jù)的存儲結(jié)構(gòu)改變時,其邏輯結(jié)構(gòu)可以不變,所以,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為【】。標(biāo)準(zhǔn)答案:物理獨立性知識點解析:邏輯獨立性是指,由于數(shù)據(jù)的局部邏輯結(jié)構(gòu)與總體邏輯結(jié)構(gòu)之間也由系統(tǒng)提供映像,使得當(dāng)總體邏輯結(jié)構(gòu)改變時,其局部邏輯結(jié)構(gòu)叮以不變,從而根據(jù)局部邏輯結(jié)構(gòu)編寫的應(yīng)用程序也可以不必修改。物理獨立性是指,由于數(shù)據(jù)的存儲結(jié)構(gòu)與邏輯結(jié)構(gòu)之間山系統(tǒng)提供映像,使得當(dāng)數(shù)據(jù)的存儲結(jié)構(gòu)改變時,其邏輯結(jié)構(gòu)可以不變,所以,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改。五、填空題(本題共12題,每題1.0分,共12分。)56、以下程序運(yùn)行后的輸出結(jié)果是【】。main(){intX=10,y=20,t=0;if(X==y)t=x;x=y;y=t;printf("%d,%d\n",x,y);}標(biāo)準(zhǔn)答案:20,0知識點解析:在主函數(shù)中首先定義了3個整型變量x、y、t,并分別給它們賦初值為10、20、0,接著執(zhí)行汀語句,在if后面括號內(nèi)的條件表達(dá)式中,條件x==y即10==20不成立,則不執(zhí)行其后的語句t=x,然后退出if語句,順序執(zhí)行語句x=y;y=t;。執(zhí)行完這兩條語句后x的值變?yōu)?0,y的值變?yōu)?,所以最后輸出x、y的值為20和0。57、以下程序運(yùn)行后的輸出結(jié)果是【】。main(){intx==15;while(x>10&&x<50){x++;if(x/3){x++;break;}elsecontinue;}printf("%d\n",x);}標(biāo)準(zhǔn)答案:17知識點解析:本題中首先定義了一個變量x并賦初值15,然后判斷循環(huán)條件“x>5&&x<50”,為真,執(zhí)行循環(huán)體。語句x++;執(zhí)行后,x的值變?yōu)?6,x/3的值為5為真,執(zhí)行其后的語句x++;,x的值變?yōu)?7,執(zhí)行語句break,退出循環(huán),輸出x的值為17。58、若有如下程序:main(){intx=4;y=3,Z=2,t;t=x<y<z;printf("%d\n",t);}則程序運(yùn)行后的輸出結(jié)果是【】。標(biāo)準(zhǔn)答案:1知識點解析:因為x=4,y=3,所以表達(dá)式x<y的值為假(0),又因為z=2,所以0<z的值為真(1),故最終輸出的結(jié)果為1。59、下列程序段的輸出結(jié)果是【】。main(){charb[]="Hello,you";b[5]=0;printf("%s\n",b);}標(biāo)準(zhǔn)答案:Hello知識點解析:因為字符串結(jié)束符’\0’的值為0,而b[5]被設(shè)置為0,所以數(shù)組名b所指向的字符串將在b[5]處結(jié)束。故最終輸出結(jié)果為Hello。60、以下程序運(yùn)行后的輸出結(jié)果是【】。main(){chara[]="123456789",*p;inti=0;p=a;while(*p){if(i%2==0)*p=’*’;p++;i++;;}puts(a);}標(biāo)準(zhǔn)答案:*2*4*6*8*知識點解析:程序中定義了一個字符數(shù)組a,并初始化為123456789,接著定義了一個指針p并讓它指向數(shù)組a,緊接著執(zhí)行了一個while循環(huán),此循環(huán)的作用是:當(dāng)i為偶數(shù)時,將*賦給a[i],p指向數(shù)組末尾,循環(huán)結(jié)束,此時數(shù)組中a[0]、a[2]、a[4]、a[6]和a[8]的值都為*,所以最后調(diào)用puts()函數(shù)輸出a的值為*2*4*6*8*61、下面程序的運(yùn)行結(jié)果是【】。#defineN10#defines(x)x*x#definef(x)(x*x)main(){inti1,i2;i1=1000/s(N);i2=1000/f(N);printf("%d%d\n",i1,i2);}標(biāo)準(zhǔn)答案:100010知識點解析:先將程序中的宏替換掉,兩處的宏替換后分別為i1=1000/10*10和i2=1000/(10*10),即i1=1000,i2=10,所以最后輸出的i1和i2的值分別為1000和10。62、下面程序的運(yùn)行結(jié)果是【】。voidswap(int*a,int*b){int*t;t=a;a=b;b=t;}main(){intx==3,y=5,*p=&x,*q=&y;swap(p,q);printf("%d%d\n",*p,*q);}標(biāo)準(zhǔn)答案:35知識點解析:主函數(shù)中通過定義和賦初值使p和q分別指向了x和y,執(zhí)行函數(shù)調(diào)用swap(p,q),把p和q中的地址值傳給了形參指針變量a和b,此時a和b分別指向了主函數(shù)中的變量x和y。在函數(shù)swap()中交換了指針變量a和b的值,但并沒有改變a和b所指向的內(nèi)容,所以函數(shù)調(diào)用返回后x和y依舊是原來的值。故運(yùn)行結(jié)果為35。63、以下程序運(yùn)行后輸入3,abcde<回車>,則輸出結(jié)果是【】。#include<string.h>move(char*str,intn){chartemp;inti;temp=str[n-1];for(i=n-1;i>0;i--)str[i]=str[i-1];str[0]=temp;}main(){chars[50];intn,i,z;scanf("%d,%s",&n,s);z=strlen(S);for(i=1;i<=n;i++)move(s,z);printf("%s\n",s);}標(biāo)準(zhǔn)答案:cdeab知識點解析:本題move()函數(shù)的作用,是將形參s仕所指地址的連續(xù)n位循環(huán)右移1位,即讓str[n-1]=str[n-2],str[n-2]=str[n-3],…,str[1]=str[0],str[0]=str[n-1](原)。主函數(shù)中用了一個for循環(huán)調(diào)用move()函數(shù),共循環(huán)3次,所以數(shù)組s被循環(huán)右移了3位,故最后輸出的值為cdeab。64、設(shè)有以下結(jié)構(gòu)體類型:structst{charname[8];intnum;floats[4];}student[50];并且結(jié)構(gòu)體數(shù)組student中的元素都已有值,若要將這些元素寫到硬盤文件fp中,請將以下fwrite語句補(bǔ)充完整:fwrite(student,【】,1,fp);標(biāo)準(zhǔn)答案:sizeof(student)或sizeof(structst)*50或50*sizeof(structst)知識點解析:fwrite函數(shù)的調(diào)用形式為:fwrite(buffer,size,count,fp);buffer是準(zhǔn)備輸出的數(shù)據(jù)塊的起始地址。size是每個數(shù)據(jù)塊的字節(jié)數(shù)。count用來指定每寫一次,輸出數(shù)據(jù)塊的個數(shù)。fp是文件指針。空白處應(yīng)填結(jié)構(gòu)體數(shù)組所占的字節(jié)數(shù)。65、設(shè)有定義:intn,*k=&n;以下語句將利用指針變量k讀寫變量n中的內(nèi)容,請將語句補(bǔ)充完整。scanf("%d",【】);printf("%d\n",【】);標(biāo)準(zhǔn)答案:k*k知識點解析:scanf()函數(shù)有兩個參數(shù),第一個參數(shù)是格式控制部分(格式控制部分是字符串,主要由%號和格式字符組成)第二個參數(shù)是一地址列表(地址列表是由多個地址組成,可以是變量的地址,也可以是字符串的首地址)。而第一個空位于scanf()函數(shù)的第二個參數(shù)處,所以,第一個空應(yīng)該填地址k。printf()函數(shù)有兩個參數(shù),第一個參數(shù)是輸出格式字符串(輸出格式字符串是由控制輸出格式的字符和非格式字符組成,通常是字符常量。非格式字符作為輸出數(shù)據(jù)的間隔,輸出時原樣輸出)第二個參數(shù)為一輸出表達(dá)式表(輸出表達(dá)式表是由若干個需要計算和輸出的表達(dá)式組成的,表達(dá)式之間用逗號分隔開)。而第二個空位于printf()函數(shù)的第二個參數(shù)處,所以應(yīng)該填*k。66、fun函數(shù)的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大數(shù),再求這N個最大值中最小的那個數(shù)并作為函數(shù)值返回。請?zhí)羁铡?include<stdio.h>#defineN100intfun(int(*a)[N]){introw,col,max,min;for(row=0;row<N;row++){for(max=a[row][0],col=1;col<N;col++)if(【】)max=a[row][col];if(row==0)min=max;elseif(【】)min=max;}returnmin;}標(biāo)準(zhǔn)答案:a[row][c01]>max或max<a[row][co1]max<min或min>max知識點解析:本題有兩層for循環(huán),函數(shù)首先定義了整型變量row、col、max和min,其中row用于外循環(huán)的循環(huán)變量,col用于內(nèi)循環(huán)的循環(huán)變量,max記錄每行中的最人值,min記錄所有行最大值中的最小值。在內(nèi)循環(huán)中,首先給max賦初值為每行的第0個元素值,然后從第一個開始依次與max進(jìn)行比較。如果大于max則將其值賦給max,當(dāng)每一行循環(huán)結(jié)束,max記錄了每一行的最大值。所以第一個空應(yīng)該填a[row][co1]>max或max<a[row][co1)。退出內(nèi)循環(huán),在第一次退出內(nèi)循環(huán)時,將min賦初值為第0行的max,然后在每次退出內(nèi)循環(huán)時,將min和每行的max比較,如果大于max,則將max值賦min,所以第二個空應(yīng)該填max<min或min>max,當(dāng)退出外循環(huán)時,rain為所有行中的最大值的最小值。67、函數(shù)sstrcmp的功能是對兩個字符串進(jìn)行比較。當(dāng)s所指字符串和t所指字符串相等時,返回值為0;當(dāng)s所指字符串大于t所指字符串時,返回值大于0;當(dāng)s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數(shù)strcmp)。請?zhí)羁铡?include<stdio.h>intsstrcmp(char*s,char*t){while(*s&&*t&&*s==【】){s++;t++;}return【】;}標(biāo)準(zhǔn)答案:*t或t[0]*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]知識點解析:函數(shù)sstrcmp()有兩個字符型指針變量,用來指向兩個字符串。比較兩個字符串的大小方法是:從第一個字符開始依次向后比較,若對應(yīng)的字符相等則接著比較下一個字符,一直到兩個字符串中對應(yīng)字符不等,或者有一個為\0,此時字符的ASCII碼大的字符串就大。故循環(huán)條件是*s和*t不為\0,且*s和*t相同,第一處應(yīng)填“*t”或其他等價形式。根據(jù)題意可知第二處應(yīng)填*s-*t或其等價形式。國家二級(C語言)筆試模擬試卷第2套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,通常也把這種圖稱為A、PAD圖B、N-S圖C、結(jié)構(gòu)圖D、數(shù)據(jù)流圖標(biāo)準(zhǔn)答案:B知識點解析:N-s圖是由Nassi和Shneiderman提出的一種符合程序化結(jié)構(gòu)設(shè)計原則的圖形描述工具。它的提出是為了避免流程圖在描述程序邏輯時的靈活性。2、下面不屬于軟件設(shè)計原則的是A、抽象B、模塊化C、白底向上D、信息隱蔽標(biāo)準(zhǔn)答案:C知識點解析:軟件設(shè)計遵循軟件工程的基本目標(biāo)和原則,建立了適用于在軟件設(shè)計中應(yīng)該遵循的基本原理和與軟件設(shè)計有關(guān)的概念,它們具有抽象、模塊化、信息隱蔽和數(shù)據(jù)獨立性。自底向上是集成測試中增量測試的一種。3、為了使模塊盡可能獨立,要求A、模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強(qiáng)B、模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱C、模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱D、模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強(qiáng)標(biāo)準(zhǔn)答案:B知識點解析:模塊的獨立程度可以由兩個定性標(biāo)準(zhǔn)度量:耦合性和內(nèi)聚性。耦合性是衡量不同模塊彼此間互相依賴(連接)的緊密程度;內(nèi)聚性是衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。一般來說,要求模塊之間的耦合盡可能地低,而內(nèi)聚性盡可能地高。4、下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是A、便于用戶、開發(fā)人員進(jìn)行理解和交流B、反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)C、作為確認(rèn)測試和驗收的依據(jù)D、便于開發(fā)人員進(jìn)行需求分析標(biāo)準(zhǔn)答案:D知識點解析:軟件需求規(guī)格說明書(SoftwareRequirementSpecification,SRS)是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。它具有以下幾個方面的作用:①便于用戶、開發(fā)人員進(jìn)行理解和交流;②反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù);③作為確認(rèn)測試和驗收的依據(jù)。5、算法的有窮性是指A、算法程序的運(yùn)行時間是有限的B、算法程序所處理的數(shù)據(jù)量是有限的C、算法程序的長度是有限的D、算法只能被有限的用戶使用標(biāo)準(zhǔn)答案:A知識點解析:算法具有5個特性:①有窮性:一個算法必須(對任何合法的輸入值)在執(zhí)行有窮步之后結(jié)束,且每一步都可在有限時間內(nèi)完成,即運(yùn)行時間是有限的;②確定性:算法中每一條指令必須有確切的含義,讀者理解時不會產(chǎn)生歧義;③可行性:一個算法是可行的,即算法中描述的操作都是可以通過已經(jīng)實現(xiàn)的基本運(yùn)算執(zhí)行有限次來實現(xiàn);④輸入:一個算法有零個或多個輸入,這些輸入取自于某個特定的對象的集合;⑤輸出:一個算法有一個或多個輸出。6、已知數(shù)據(jù)表A中每個元素距其最終位置不遠(yuǎn),為節(jié)省時間,應(yīng)采用的算法是A、堆排序B、直接插入排序C、快速排序D、B)和C)標(biāo)準(zhǔn)答案:B知識點解析:堆排序的比較次數(shù)為nlog2n;直接插入排序的比較次數(shù)為n(n-1)/2;快速排序的比較次數(shù)為nlog2n。7、如果進(jìn)棧序列為e1,e2,e3,e4,則可能的出棧序列是A、e3,e1,e4,e2B、e2,e4,e3,e1C、e3,e4,e1,e2D、任意順序標(biāo)準(zhǔn)答案:B知識點解析:由棧“后進(jìn)先出”的特點可知:A)中e1不可能比e2先出,C)中e1不可能比e2先出,D)中棧是先進(jìn)后出的,所以不可能是任意順序。B)中出棧過程如下圖所示:8、數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是A、概念設(shè)計和邏輯設(shè)計B、模式設(shè)計和內(nèi)模式設(shè)計C、內(nèi)模式設(shè)計和物理設(shè)計D、結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計標(biāo)準(zhǔn)答案:A知識點解析:數(shù)據(jù)庫設(shè)計包括數(shù)據(jù)庫概念設(shè)計和數(shù)據(jù)庫邏輯設(shè)計兩個方面的內(nèi)容。9、有三個關(guān)系R、S和T如下:由關(guān)系R和S通過運(yùn)算得到關(guān)系T,則所使用的運(yùn)算為A、并B、自然連接,C、笛卡爾積D、交標(biāo)準(zhǔn)答案:D知識點解析:在關(guān)系運(yùn)算中,交的定義如下:設(shè)R1和R2為參加運(yùn)算的兩個關(guān)系,它們具有相同的度/1,且相對應(yīng)的屬性值取自同一個域,則R1∩R2為交運(yùn)算,結(jié)果仍為度等于n的關(guān)系,其中,交運(yùn)算的結(jié)果既屬于R1,又屬于R2。10、設(shè)有表示學(xué)生選課的三張表,學(xué)生S(學(xué)號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學(xué)號,課號,成績),則表SC的關(guān)鍵字(鍵或碼)為A、課號,成績B、學(xué)號,成績C、學(xué)號,課號D、學(xué)號,姓名,成績標(biāo)準(zhǔn)答案:C知識點解析:“選課SC”表是“學(xué)生S”表和“課程C”表的映射表,主鍵是兩個表主鍵的組合。二、選擇題(1分)(本題共10題,每題1.0分,共10分。)11、以下不正確的敘述是A、在C程序中,逗號運(yùn)算符的優(yōu)先級最低B、在C程序中,APH和aph是兩個不同的變量C、若a和b類型相同,在計算了賦值表達(dá)式a=b后,b中的值將放入a中,而b中的值不變D、當(dāng)從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,對于實型變量只能輸入實型數(shù)值標(biāo)準(zhǔn)答案:D知識點解析:在C語言所有的運(yùn)算符中,逗號運(yùn)算符的優(yōu)先級最低。C語言中區(qū)分大小寫,所以APH和aph是兩個不同的變量。賦值表達(dá)式a=b表示將b的值賦給a,而b本身的值保持不變;通過鍵盤可以向計算機(jī)輸入允許的任何類型的數(shù)據(jù)。選項D)中當(dāng)從鍵盤輸入數(shù)據(jù)時,對于整型變量可以輸入整型數(shù)值和字符,對于實型變量可以輸入實型數(shù)值和整型數(shù)值等。12、下列可用于C語言用戶標(biāo)識符的一組是A、void,define,WORDB、a3_b3,_123,CarC、For,-abc,IFCaseD、2a,DO,sizeof標(biāo)準(zhǔn)答案:B知識點解析:C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下畫線3種字符組成,且第一個字符必須為字母或下畫線,排除選項C)和D);C語言中還規(guī)定標(biāo)識符不能為C語言的關(guān)鍵字,而選項A)中void為關(guān)鍵字,故排除選項A)。13、以下選項中,不能作為合法常量的是A、1.23E+04B、1.234e0.4C、1.23E+04D、1.23E+00標(biāo)準(zhǔn)答案:B知識點解析:C語言的語法規(guī)定,字母e(E)之前必須有數(shù)字,且e(E)后面的指數(shù)必須是整數(shù),而選項B)中,e(E)后面的指數(shù)是小數(shù),所以不合法。14、若有語句:char*line[5];,以下敘述中正確的是A、定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為char的指針變量B、定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組C、定義line是一個指針數(shù)組,語句中的。號稱為間址運(yùn)算符D、定義line是一個指向字符型函數(shù)的指針標(biāo)準(zhǔn)答案:A知識點解析:C語言中[]比*優(yōu)先級高,因此line先與[5]結(jié)合,形成line[5]形式,這是數(shù)組形式,它有5個元素,然后再與line前面的“*”結(jié)合,表示此數(shù)組是一個指針數(shù)組,每個數(shù)組元素都是一個基類型為char的指針變量。15、若變量均已正確定義并賦值,以下合法的C語言賦值語句是A、x=y==5;B、x=n%2.5;C、x+n=i;D、x=5=4+1;標(biāo)準(zhǔn)答案:A知識點解析:賦值運(yùn)算符左側(cè)的操作數(shù)必須是一個變量,而不能是表達(dá)式或者常量,選項C和D錯誤?!?”運(yùn)算符兩側(cè)都應(yīng)當(dāng)是整型數(shù)據(jù),選項B錯誤。16、有以下程序段charch;intk;ch=’a’;k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII碼值為97,則執(zhí)行上述程序段后輸出結(jié)果是A、因變量類型與格式描述符的類型不匹配輸出無定值B、輸出項與格式描述符個數(shù)不符,輸出為零值或不定值C、a,97,12k=12D、a,97,k=12標(biāo)準(zhǔn)答案:D知識點解析:輸出格式控制符%c表示將變量以字符的形式輸出;輸出格式控制符%d表示將變量以帶符號的十進(jìn)制整型數(shù)輸出,所以第一個輸出語句輸出的結(jié)果為a,97;第二個輸出語句輸出的結(jié)果為k=12。17、已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫字母的表達(dá)式是A、kk>=’A’&&kk<=’Z’B、!(kk>=’A’||kk<="Z")C、(kk+32)>=’a’&&(kk+32)<=’Z’D、isalpha(kk)&&(kk<91)標(biāo)準(zhǔn)答案:B知識點解析:C語言的字符以其ASCII碼的形式存在,所以要確定某個字符是大寫字母,只要確定它的ASCII碼在“A”和“Z”之間就可以了,選項A和C符合要求。函數(shù)isalpha用來確定一個字符是否為字母,大寫字母的ASCII碼值的范圍為65-90,所以如果一個字母的ASCII碼小于91,那么就能確定它是大寫字母。18、當(dāng)變量c的值不為2、4、6時,值也為“真”的表達(dá)式是A、(c==2)||(c==4)||(c==6)B、(c>=2&&c<=6)||(c!=3)||(c!=5)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)&&(c%2!=1)標(biāo)準(zhǔn)答案:B知識點解析:滿足表達(dá)式(c>=2&&c<=6)的整型變量c的值是2,3,4,5,6。當(dāng)變量c的值不為2,4,6時,其值只能為3或5,所以表達(dá)式c!=3和c!=5中至少有一個為真,即不論c為何值,選項B中的表達(dá)式都為“真”。19、若有條件表達(dá)式(exp)?a++:b--,則以下表達(dá)式中能完全等價于表達(dá)式(exp)的是A、(exp==0)B、(exp!=0)C、(exp==1)D、(exp!=1)標(biāo)準(zhǔn)答案:B知識點解析:條件運(yùn)算符要求有3個操作對象,稱三日(元)運(yùn)算符,它是C語言中唯一的一個三目運(yùn)算符。條件表達(dá)式的一般形式為:表達(dá)式17表達(dá)式2:表達(dá)式3。其求解順序是:先求解表達(dá)式1,若為非0(真)則求解表達(dá)式2,此時表達(dá)式2的值就作為整個條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個條件表達(dá)式的值,注意++、--的用法。20、有以下程序#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}程序的運(yùn)行結(jié)果是A、a=1,b=0B、a=2,b=2C、a=1,b=1D、a=2,b=1標(biāo)準(zhǔn)答案:D知識點解析:本題考查switch語句,首先,x=1符合條件case1,執(zhí)行switch(y)語句。y=0符合case0語句,執(zhí)行a抖并跳出switch(y)語句,此時a=1。因為case1語句后面沒有break語句,所以向后執(zhí)行case2語句,執(zhí)行a++,b++,然后跳出switch(x),得a=2,b=1。三、選擇題(2分)(本題共20題,每題1.0分,共20分。)21、有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序運(yùn)行后的輸出結(jié)果是______。A、ABCDBCDCDDB、ABCDC、BCDD、BCDCDD標(biāo)準(zhǔn)答案:D知識點解析:第一次執(zhí)行for循環(huán)時,p指向s[1]=B,故輸出BCD;第二次執(zhí)行for循環(huán)時,p指向s[2]=C,故輸出CD;第三次執(zhí)行for循環(huán)時,p指向s[3]=D,故輸出D。正確答案為D。22、有以下程序: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");}程序運(yùn)行后的輸出結(jié)果是______。A、75310246B、1234567C、76310462D、13570246標(biāo)準(zhǔn)答案:A知識點解析:本題中第一次執(zhí)行for循環(huán)后,數(shù)組x中的前四個元素按由大到小的次序排序,即x[0]=7、x[1]=5、x[2]=3、x[3]=1、x[4]=2、x[5]=4、x[6]=6、x[7]=0;第二次執(zhí)行for循環(huán)后,數(shù)組x中的后4個元素按由小到大的次序排序,即此時x[0]=7、x[1]=5、x[2]=3、x[3]=1、x[4]=0、x[5]=2、x[6]=4、x[7]=6。故正確答案為A。23、有以下程序:main(){inti=0,s=0;for(;;){if(i==3||i==5)continue;if(i==6)break;i++;s+=i;};printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是______。A、10B、13C、21D、程序進(jìn)入死循環(huán)標(biāo)準(zhǔn)答案:D知識點解析:本題考查break語句和continue語句的用法,continue語句是結(jié)束本次循環(huán),當(dāng)i=3時,i++語句不再被執(zhí)行,程序進(jìn)入死循環(huán)。24、以下敘述中錯誤的是______。A、對于double類型數(shù)組,不可以直接用數(shù)組名對數(shù)組進(jìn)行整體輸入或輸出B、數(shù)組名代表的是數(shù)組所占存儲區(qū)的首地址,其值不可改變C、當(dāng)程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時,系統(tǒng)將給出“下標(biāo)越界”的出錯信息D、可以通過賦初值的方式確定數(shù)組元素的個數(shù)標(biāo)準(zhǔn)答案:A知識點解析:double型的數(shù)組也是可以直接用數(shù)組名對數(shù)組進(jìn)行整體輸入或輸出的。25、以下能正確定義一維數(shù)組的選項是______。A、intnum[];B、#defineN100intnum[N];C、intnum[0..100];D、intN=100;intnum[N];標(biāo)準(zhǔn)答案:B知識點解析:C語言不允許對數(shù)組進(jìn)行動態(tài)定義,選項D錯誤;選項A沒有指定數(shù)組元素的個數(shù);選項C中定義格式錯誤;正確答案為選項B,其中N是符號常量。26、有以下程序:#include<stdio.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)答案:A知識點解析:本題考查%s控制符在scanf函數(shù)中的應(yīng)用。scanf函數(shù)中%s控制符的作用是將鍵盤輸入的字符串送到內(nèi)存,輸入的字符串從第一個非空格字符算起,遇到空格或回車就認(rèn)為是輸入結(jié)束。本題中執(zhí)行語句scanf("%s%s",p,q)時,從鍵盤輸入abcdef<回車>后,指針變量p指向字符串"abc\0",q指向字符串"def\0",但是由于p和q指向同一個存儲單元,所以存儲單元中存放的是"def\0",printf函數(shù)的輸出結(jié)果為defdef。27、以下不能正確定義二維數(shù)組的選項是______。A、inta[2][2]={{1},{2}};B、inta[][2]={1,2,3,4};C、inta[2][2]={{1},2,3};D、inta[2][]={{1,2},{3,4}};標(biāo)準(zhǔn)答案:D知識點解析:選項D在定義數(shù)組a時沒有指定第二維的長度,錯誤。28、已知i、j、k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1、j的值為2、k的值為3,以下選項中正確的輸入語句是______。A、sanf("%2d%2d%2d",&i,&j,&k);B、scanf("%d%d%d",&i,&j,&k);C、scanf("%d,%d,%d",&i,&j,&k);D、scanf("i=%d,j=%d,k=%d",&i,&j,&k)標(biāo)準(zhǔn)答案:C知識點解析:scanf函數(shù)的格式控制部分中的非格式字符按原樣輸入,本題指出鍵盤輸入為:1,2,3<回車>,各個數(shù)據(jù)之間用“,”分隔,所以scanf函數(shù)中應(yīng)包含“,”,選項D中雖然包括“,”號,但是還包含非格式字符i=、j=和k=,正確答案為選項C。29、有以下程序,其中函數(shù)的功能是將多個字符串按字典順序排序:#include<string.h>voidf(char*p[],intn

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論