




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
國家二級C語言機試(選擇題)模擬試卷31(共9套)(共270題)國家二級C語言機試(選擇題)模擬試卷第1套一、選擇題(本題共40題,每題1.0分,共40分。)1、C語言源程序名的后綴是A、.exeB、.objC、.cD、.cp標準答案:C知識點解析:南C語言構成的指令序列稱為C源程序,源程序文件的后綴為“.c”。源程序經(jīng)過c編譯程序編譯乍成后綴為“.obj,的二進制文件(稱為目標文件),然后由稱為“連接程序”(Link)的軟件把目標文件.0bj語言提供的各種庫函數(shù)連接起來,生成后綴為“.exe”的可執(zhí)行文件。2、下列敘述中正確的是()。A、二分查找法只適用于順序存儲的有序線性表B、二分查找法適用于任何存儲結構的有序線性表C、二分查找法適用于有序循環(huán)鏈表D、二分查找法適用于有序雙向鏈表標準答案:A知識點解析:二分查找法(又稱對分查找法)只適用于順序存儲的有序表。在此所說的有序表是指線性表的中元素按值非遞減排列(即從小到大,但允許相鄰元素值相等)。3、某二叉樹共有12個結點,其中葉子結點只有1個。則該二叉樹的深度為(根結點在第1層)A、3B、6C、8D、12標準答案:D知識點解析:根據(jù)二叉樹的性質(zhì),度為0的結點(即葉子結點)總是比度為2的結點多一個。題目中的二叉樹的葉子結點為1,因此度為2的結點的數(shù)目為0,故該二叉樹為12層,每層只有一個結點。4、下列對于線性鏈表的描述中正確的是A、存儲空間不一定連續(xù),且各元素的存儲順序是任意的B、存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面C、存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面D、存儲空間必須連續(xù),且各元素的存儲順序是任意的標準答案:A知識點解析:一般來說,在線性表的鏈式存儲結構中,各數(shù)據(jù)結點的存儲序號是不連續(xù)的,并且各結點在存儲空間中的位置關系與邏輯關系也不一致。在線性鏈表中,各數(shù)據(jù)元素之間的前后件關系是由各結點的指針域來指示的,指向線性表中第一個結點的指針head稱為頭指針,當head=NULL(或0)時稱為空表。5、在長度為64的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)為()。A、63B、64C、6D、7標準答案:B知識點解析:順序查找又稱順序搜索。順序查找一般是指在線性表中查找指定的元素,其基本方法是:從線性表的第一個元素開始,依次將線性表中的元素與被查找的元素進行比較,若相等則表示找到(即查找成功)。若線性表中所有元素都與被查元素進行了比較但都不相等,則表示線性表中沒有要找的元素(即查找失敗)。如果線性表中的第一個元素就是要查找的元素,則只需要做一次比較就查找成功,但如果要查找的元素是線性表中的最后一個元素或者要查找元素不在線性表中,則需要與線性表中所有元素進行比較,這是順序查找的最壞情況,比較次數(shù)為線性表的長度。6、設有語句:if(a==1)b=2;c=3;,以下語句中與之等價的是()。A、if(a==1){b=2;c=3;}B、if(a!=1){;}else{b=2;c=3;}C、if(a==1)c=3;b=2;D、(a==1)?b=2:a=a;c=3;標準答案:D知識點解析:在C語言中,用分號表示一條語句的結束,用{}把幾條語句放在一塊表示一個語句塊,其整體表示一個功能。因而在題目給出的四個選項中,選項A、B、C均與題中所給不同,而選項D相同。7、設有一個棧與一個隊列的初始狀態(tài)均為空?,F(xiàn)有一個序列A,B,C,D,E,F(xiàn),G,H。先分別將序列中的前4個元素依次入棧,后4個元素依次入隊;然后分別將棧中的元素依次退棧,再將隊列中的元素依次退隊。最后得到的序列為A、D,C,B,A,E,F(xiàn),G,HB、D,C,B,A,H,G,F(xiàn),EC、A,B,C,D,E,F(xiàn),G,HD、A,B,C,D,H,G,F(xiàn),E標準答案:A知識點解析:棧(stack)又名堆棧,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。因此棧的出棧順序是先入后出,所以順序是D,C,B,A。隊列是一種特殊的線性表,特殊之處在于它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。因此,隊的出隊順序是,先入先出,所以順序是E,F(xiàn),G,H。最后的順序是:D,C,B,A,E,F(xiàn),G,H。8、若有定義語句:intx=10;則表達式x-=x+x的值為A、-20B、0C、-10D、10標準答案:C知識點解析:表達式x-=x+x等價于x=x-(x+x),整型變量x的初始值等于10,計算題目所求表達式的值時,首先計算x與x的和等丁20,然后再用10減去20等于-10,得到該表達式的值。9、結構化程序設計中,下面對GOTO語句使用描述正確的是()。A、禁止使用GOTO語句B、使用GOTO語句程序效率高C、應避免濫用GOTO語句D、GOTO語句確實一無是處標準答案:C知識點解析:濫用GOTO語句確實有害,應盡量避免;完全避免使用GOTO語句并非是明智的方法,有些地方使用GOTO語句會使程序流程更清楚、效率更高;爭論的焦點不應該放在是否取消GOTO語句,而應該放在用在什么程序結構上。10、某二叉樹的前序遍歷序列與中序遍歷序列相同,均為ABCDEF,則按層次輸出(同一層從左到右)的序列為A、ABCDEFB、BCDEFAC、FEDCBAD、DEFABC標準答案:A知識點解析:前序遍歷次序:根左右;中序遍歷次序:左根右。由定義可以知道:①前序遍歷中第一個就是樹根結點,即A結點;②在中序遍歷中,根結點左邊的是左子樹集,右邊的是右子樹集,即BCDEF是根結點A的右子樹集合。問題就會轉(zhuǎn)化為:求前序遍歷是BCDEF,中序遍歷是BCDEF的子樹,方法同上。詳細推理過程:步驟1:由ABCDEF得出根結點為A,由中序遍歷可知:左子樹為空,A{BCDEF};步驟2:由BCDEF得出右子樹集合的根節(jié)點為B,由中序可知:左子樹為空,B{CDEF};步驟3:同理,二叉樹更新后如下。所以按層次輸出(同一層從左到右)的序列為ABCDEF,選項A正確。11、有以下程序:#includeintfun(intx,inty){if(x==y)return(x);elsereturn((x+y)/2);}main(){inta=1,b=2,c=3;printf("%d\n",fun(2*a,fun(b,c)));}程序運行后的輸出結果是()。A、2B、3C、4D、5標準答案:A知識點解析:fun(b,c)即fun(2,3),2!=3,所以返回(2+3)/2=2;fun(2*a,2)即fun(2,2),2==2,所以返回2。12、設有定義:intx=2;,以下表達式中,值不為6的是()。A、2*x,x+=2B、x++,2*xC、x*=(1+x)D、x*=x+1標準答案:A知識點解析:A選項中逗號表達式先計算第一表達式2*x,然后計算表達式x+=2的值,即x=x+2即4,整個逗號表達式為第二個表達式的值4,所以選擇A選項。B選項中首先計算逗號表達式中第一表達式x++,此時x為3,再執(zhí)行第二個表達式2*x=2*3=6,所以逗號表達式為第二個表達式的值6。C選項的賦值表達式可以表示為x=x*(1+x)=2*(1+2)=6。D選項中的表達式可以表示為x=x*(x+1)=2*3=6。13、程序流程圖中帶有箭頭的線段表示的是A、圖元關系B、數(shù)據(jù)流C、控制流D、調(diào)用關系標準答案:C知識點解析:程序流程圖是一種傳統(tǒng)的、應用廣泛的軟件過程設計工具,通常也稱為程序框圖。其中,用帶箭頭的線段表示控制流,用柜形表示加工步驟,用菱形表示邏輯條件。14、下列結構中屬于非線性結構的是A、二叉鏈表B、二維數(shù)組C、循環(huán)隊列D、雙向鏈表標準答案:A知識點解析:線性結構是一個有序數(shù)據(jù)元素的集合。常用的線性結構有:線性表,棧,隊列,雙隊列,數(shù)組,串;常見的非線性結構有:二維數(shù)組,多維數(shù)組,廣義表,樹(二叉樹等),圖。循環(huán)隊列、雙向鏈表和二叉鏈表都是線性結構,而二維數(shù)組是非線性結構。15、要求通過while循環(huán)不斷讀入字符,當讀入字母N時結束循環(huán)。若變量已正確定義,以下正確的程序段是()。A、while(ch=getchar()=’N’)printf("%c",ch);B、while((ch=getchar())!=’N’)printf("%c",ch);C、while(ch=getchar()==’N’)printf("%c",ch);D、while((ch=getchar())==’N’)printf("%c",ch);標準答案:B知識點解析:在C語言中,等于號用“==”表示,一個“=”表示賦值,當讀入字母N時,選項A中,while后的條件值為“N”,是非零數(shù),條件成立,循環(huán)繼續(xù)執(zhí)行,所以A選項錯誤。C、D選項的含義都是如果輸入的字符為“N”,則打印輸出,所以正好和題意相反。16、以下數(shù)組定義中錯誤的是()。A、intx[2][3]={1,2,3,4,5,6};B、intx[][3]={0};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={{1,2},{3,4},{5,6}};標準答案:D知識點解析:二維數(shù)組的第一維數(shù)據(jù)表示行數(shù),第二維數(shù)據(jù)表示列數(shù),所以x[2][3]中的數(shù)據(jù)應為兩行三列,和定義內(nèi)容不符,選項D錯誤,答案選D。17、if語句的基本形式是:if(表達式)語句,以下關于“表達式”值的敘述中正確的是()。A、必須是邏輯值B、必須是整數(shù)值C、必須是正數(shù)D、可以是任意合法的數(shù)值標準答案:D知識點解析:if語句中的表達式可以是任意合法的數(shù)值,如常量、變量表達式,所以D選項正確。18、數(shù)據(jù)庫系統(tǒng)的核心是A、數(shù)據(jù)模型B、數(shù)據(jù)庫管理系統(tǒng)C、數(shù)據(jù)庫D、數(shù)據(jù)庫管理員標準答案:B知識點解析:數(shù)據(jù)庫管理系統(tǒng)(DBMS)是數(shù)據(jù)庫的機構,它是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務等。所以,數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)系統(tǒng)的核心。19、以下程序的輸出結果是()。#include<stdio.h>main(){inta=4,b=3,c=2,d=1;printf(’’%d’’,a<b?a:d<c?d:b);}A、1B、3C、2D、4標準答案:A知識點解析:條件表達式的格式為:’’a?b:c’’,它的功能是:當a為真時,表達式的值等于b的值;當a為假時,表達式的值等于c的值。因為條件運算符的結合方向為“自右向左”。因此,當表達式中嵌套使用條件表達式時,應先計算右邊的條件表達式,再計算左邊的條件表達式。題中應先計算“d<c?d:b”的“d<c”關系表達式的值,因為“d=1<c=2”為真,所以取第一個表達式的值,即d的值作為整個表達式的值。接著計算“a<b?a:d”,“a=4<b=3”為假,取第二個表達式的值,即d的值作為整個表達式的值。20、設有表示學生選課的三張表,學生S(學號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學號,課號,成績),則表SC的關鍵字(鍵或碼)為A、課號,成績B、學號,成績C、學號,課號D、學號,姓名,成績標準答案:C知識點解析:關鍵字是指屬性或?qū)傩缘慕M合,其值能夠唯一地標識一個元組,而在SC中學號和課號的組合可以對元組進行唯一的標識。21、在下列關系運算中,不改變關系表中的屬性個數(shù)但能減少元組個數(shù)的是A、并B、交C、投影D、笛卡兒乘積標準答案:B知識點解析:關系R與S經(jīng)交運算后所得到的關系是由那些既在R內(nèi)又在S內(nèi)的有序組所組成,記為R∩S。形式定義如下:R∩S≡{t∈R∧t∈S}=R-(R-S)。所以不改變關系表中的屬性個數(shù),但能減少元組個數(shù)的是關系表之間的交操作。22、若有以下程序intf(inta[],intn){if(n>1){intt;t=f(a,n-1);returnt>a[n-1]?t:a[n-1];}elsereturna[0];}main(){inta[]={8,2,9,1,3,6,4,7,5};printf("%dEn",f(a,9));}則程序的輸出結果是A、9B、1C、8D、5標準答案:A知識點解析:主函數(shù)中調(diào)用f(a,9),遞歸函數(shù)的調(diào)用過程如下:f(a,9)→f[a,8)→f(a,7)→f(a,6)→f(a,5)→f(a,4)→f(a,3)→f(a,2)→f(a,1),f(a,1)得到返回值為a[0],值為8,遞歸過程開始回歸,回歸過程描述如下:8>a[1],返回8→8>a[2]不成立,返回a[2]的值為9……因此函數(shù)f的主要功能為汁算數(shù)組中的最大值。主函數(shù)中輸出最大值為9。23、有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum}main(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序的運行結果是()。A、55B、50C、45D、60標準答案:D知識點解析:內(nèi)部靜態(tài)變量是始終存在的,當函數(shù)被調(diào)用退出后,內(nèi)部靜態(tài)變量會保存數(shù)據(jù),再次調(diào)用該函數(shù)時,以前調(diào)用時的數(shù)值仍然保留著。fun(a,5)的值是15,再次調(diào)用后sum=15,所以fun(b,4)=45,s=45+15=60,因此D選項正確。24、以下敘述中正確的是A、語句inta[]={0};是不合法的,遺漏了數(shù)組的大小B、語句chara[2]={"A","B"};是合法的,定義了一個包含兩個字符的數(shù)組C、語句inta[8]={0};是合法的D、語句chara[3];a="AB":是合法的,因為數(shù)組有三個字符空間的容量,可以保存兩個字符標準答案:C知識點解析:當系統(tǒng)為所定義的數(shù)組在內(nèi)存中開辟一串連續(xù)的存儲單元時.這些存儲單元中并沒有確定的值,可以在定義語句中為所定義數(shù)組的各個元素賦初值。數(shù)組初始化賦值是指在數(shù)組定義時給數(shù)組元素賦予初值。初始化賦值的一般形式為:類型說明符數(shù)組名[常量表達式]={值,值,…,};。需要注意的是當所賦初值多于所定義數(shù)組的元素個數(shù)時,在編譯時將給出出錯信息,在指定初值時,第一個初值必定賦給下標為0的元素,然后按這些數(shù)值的排列順序賦初值,只能給元素逐個賦值,不能給數(shù)組整體賦值。如果給全部元素賦值,則在數(shù)組說明中,可以不給出數(shù)組元素的個數(shù)。25、在16位編譯系統(tǒng)上,若有定義“inta[]={10,20,30},*p=a;”,當執(zhí)行“p++;”后,下列說法錯誤的是A、p向高地址移了一個字節(jié)B、p向高地址移了一個存儲單元C、p向高地址移了兩個字節(jié)D、p與a+1等價標準答案:B知識點解析:本題考查數(shù)組和數(shù)組指針。a是一個整型數(shù)組,p指針指向a數(shù)組,即p指向a數(shù)組的首元素的地址,因此p++之后,p往高地址移動,指向首元素后面一個元素的地址。26、有以下程序#includeintfun(intn){inta;if(n==1)return1;a=n+fun(n-1);return(a);}main(){printf("%d\n",fun(5));}程序的輸出結果是A、14B、10C、15D、9標準答案:C知識點解析:函數(shù)fun為遞歸定義的函數(shù),當調(diào)用fun(5)→5+fun(4)→5+4+fun(3)→5+4+3+fun(2)→5+4+3+2+fun(1),因此最后的結果為15。27、有以下程序main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf("%d,%d\n",a,b);}程序運行后的輸出結果是A、8,11B、10,14C、7,11D、9,18標準答案:B知識點解析:在這段程序中變量a的初值等于1,變量b的初值等于2。第1次執(zhí)行for循環(huán)語句后,變量a的值等于3,變量b的值等于3。第2次執(zhí)行for循環(huán)后,變量a等于6,變量b的值等于7。第3次執(zhí)行for循環(huán)后,變量a等于9,變量b的值等于14。第4次執(zhí)行for循環(huán)后,變量a等于10,這時退出for循環(huán),此時變量b的值等于14。因而程序輸出變量a,b的值分別為10,14。28、下結構體說明和變量定義中,正確的是A、typedefstructabc{intn;doublem;}abc;abcx,y;B、structabc{intn;doublem);structabcx,y;C、structabc{intn;doublem;}structabcx,y;D、structabc{intn;doublem;};abcx,y;標準答案:A知識點解析:選項B中結構體定義中每個成員后面的分號都不能省略,doublem后沒分號,因此錯誤。選項C結構體類型定義完畢后,}外沒加分號。選項D中定義變量要加上關鍵字struct。29、以下選項中合法的標識符是A、1__B、1-1C、1_1D、_11標準答案:D知識點解析:C語言中的標識符由下劃線、字母和數(shù)字組成,且必須以下劃線或字母開始,所以只有D選項正確。30、有以下程序intfun(intn)main(){if(n==1)return1;{intx;Elsescanf("%d",&x);x=fun(x);return(n+fun(n—1));printf("%d\n",x);}}執(zhí)行程序時,給變量x輸入10,程序的輸出結果是A、54B、65C、45D、55標準答案:D知識點解析:在C語言中函數(shù)可以遞歸調(diào)用,即直接或間接地自己調(diào)用自己。本題在函數(shù)intfun(intn)的定義中又出現(xiàn)了對函數(shù)fun的調(diào)用,所以函數(shù)fun是遞歸函數(shù)。因而在主函數(shù)中調(diào)用x=fun(x)時,當輸入10賦給變量x時,遞歸調(diào)用的過程為:fun(10)=10+fun(9)=10+9+fun(8)=10+9++8+fun(7)=10+9++8+7+fun(6)=10+9++8+7+6+fun(6)=10+9++8+7+6+5+fun(4)=10+9++8+7+6+5+4+fun(3)=10+9++8+7+6+5+4+3+fun(2)=10+9++8+7+6+5+4+3+2+fun(1)=10+9++8+7+6+5+4+3+2+1=5531、設有以下語句typedefstructTT{charc;inta[4];}CIN;則下面敘述中正確的是A、TT是struct類型的變量B、可以用TT定義結構體變量C、CIN是structTT類型的變量D、可以用CIN定義結構體變量標準答案:D知識點解析:C語言允許用typedef說明一種新的類型名,說明新類型名的語句為一般形式為:typedef類型名標識符在此,“類型名”必須是此語句之前已有定義的類型標識符。“標識符”是一個用戶定義標識符,用作新的類型名。typedef語句的作用僅僅是用“標識符”來代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型,原有類型名依然有效。在本題中用typedef定義CIN為TT的一種新的類型名,因而可以用它定義一個結構體變量。32、有以下程序#includevoidmain(){inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序運行后的輸出結果是A、2050B、3344C、3040D、0304.標準答案:C知識點解析:在主函數(shù)的for循環(huán)語句中,當循環(huán)變量i的值等于0,2時,執(zhí)行switch中的case0語句,分別對數(shù)組元素a[0]和a[2]加1和減1,所以a[0]的值等于3,a[2]等于4。當循環(huán)變量i的值等于1,3時,執(zhí)行switch中的case1語句,把數(shù)組元素a[1]和a[3]的值賦為0。所以輸出數(shù)組a的元素,其結果為3040。33、有以下程序voidswap(char*x,char*y){chart;t=*x;*x=*y;*y=t;}main(){char*s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序執(zhí)行后的輸出結果是A、abe,123B、123,abcC、321,cbaD、1bc,a23標準答案:D知識點解析:函數(shù)voidswap(char*x,char*y)的功能是交換兩個字符*x和*y中的內(nèi)容。在主函數(shù)中字符指針s1指向字符串’abe’,s2指向字符串’123’。所以函數(shù)swap(s1,s2)的執(zhí)行結果就是字符’a’和’1’相互交換。34、以下敘述中正確的是A、字符串數(shù)組,是指數(shù)組中的每個元素都是一個存放字符串的一維數(shù)組B、charca[3][5]={"A","BB","CCC"};是不合語法的C、charca[][5]={"A","BB","CCC"};是不合語法的D、char*ca[3]={"A","BB","CCC"};是不合語法的標準答案:A知識點解析:本題考查字符串數(shù)組的相關知識,選項B、C、D都是合語法的。35、有以下程序,程序的輸出結果是#include<stdio.h>#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}A、0B、1C、9D、10標準答案:B知識點解析:SQR(k+m)宏展開以后為k+m*k+m,值為5,表達式a/=SQR(k+m)/SQR(k+m)為a=a/(5+5),表達式值為1。36、在一個C源程序文件中所定義的全局變量,其作用域為A、由具體定義位置和extern說明來決定范圍B、所在程序的全部范圍C、所在函數(shù)的全部范圍D、所在文件的全部范圍標準答案:A知識點解析:全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結束止。在同一編譯單位內(nèi)用extern說明符擴展全局變量的作用域(當全局變量定義在后,引用它的函數(shù)在前時,應該在引用它的函數(shù)中用extern對此全局變量進行說明,以便通知編譯程序:該變量是一個已在外部定義了的全局變量,已經(jīng)分配了存儲單元,不需要再為它分配存儲單元。這時全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾)。當一個程序由多個編譯單位構成,并且在每個文件中均需要引用同一個全局變量,這時只在其中一個文件中定義所有的全局變量,而在其他用到這些全局變量的文件中用extern對這些變量進行說明。37、若有定義typedefint*T;Ta[10];則a的定義與下面哪個語句等價A、int*a[10];B、int(*a)[10];C、int*a;D、inta[10];標準答案:A知識點解析:typedef的主要功能是為存在的類型命名,后面的代碼中可以利用該新定義的類型名定義變量,題目中定義了整型指針類型T,而后利用T定義了整型指針數(shù)組a,含有10個元素,選項A中定義了整型指針數(shù)組a,選項B定義了一個指向一維數(shù)組的指針a,選項C定義指針變量,,而選項D為定義整型數(shù)組最常用的形式,數(shù)組a中可以存放10個數(shù)據(jù)元素。38、若有以下程序typedefstructstu{char*name,gender;intscore;}STU;voidf(char*p){p=(char*)malloc(10);strcpy(p,"Qian");}main(){STUa={NULL,’m’,290},b;a.name=(char*)malloc(10);strcpy(a.name,"Zhao");b=a;f(b.name);b.gender=’f’;b.score=350;printf("%s,%c,%d,",a.name,a.gender,a.score);printf("%s,%c,%d\n",b.name,b.gender,b.score);}則程序的輸出結果是A、Zhao,m,290,Qian,f,350B、Qian,f,350,Qian,f,350C、Qian,m,290,Qian,f,350D、Zhao,m,290,Zhao,f,350標準答案:D知識點解析:函數(shù)f(char*p)的主要功能申請字符串的存儲空間,然后存入字符串"Qian",但當程序調(diào)用結束以后,形參指針變量p撤銷,存儲的字符串地址丟失,而不能更改實參指針的值。主函數(shù)中結卡勾體變量定義同時賦初值,初始情況其name指針成員存儲空,而后語句為其分配存儲空間,存入字符串“Zhao”。執(zhí)行“b=a;”語句后,b的數(shù)據(jù)和a的數(shù)據(jù)相同,調(diào)用函數(shù)f以后,b的name成員的值沒變。39、有以下程序#includemain(){chars[10]="verygood",*ps=s;ps+=4;ps="nice";puts(s);}程序的運行結果是()。A、verygoodB、veryniceC、nicegoodD、nice標準答案:A知識點解析:數(shù)組名s為一個指針常量,始終指向該數(shù)組的首地址,語句"ps="nice";"將字符指針ps指向了另一個字符串的首地址,并不能對字符數(shù)組s中的數(shù)據(jù)造成影響,所以輸出結果為"verygood",答案選A。40、有以下程序#includemain(){FILE*fp;charstr[10];fp=fopen("myfile.dat","w");fputs("abc",fp);fclose(fp);fp=fopen("myfile.dat","a+");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%s",str);puts(str);fclose(fp);}程序運行后的輸出結果是A、abcB、28cC、abc28D、因類型不一致而出錯標準答案:C知識點解析:本題考查文件操作函數(shù)fprintf()函數(shù),fprintf()函數(shù)向文件輸出,將輸出的內(nèi)容輸出到硬盤上的文件或是相當于文件的設備上執(zhí)行兩次fprintf后文件中有abc28,所以C選項正確。國家二級C語言機試(選擇題)模擬試卷第2套一、選擇題(本題共25題,每題1.0分,共25分。)1、計算機軟件的構成是()。A、源代碼B、程序和數(shù)據(jù)C、程序和文檔D、程序、數(shù)據(jù)及相關文檔標準答案:D知識點解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)及相關文檔的完整集合。答案選D。2、下列敘述中正確的是A、線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的B、線性表的鏈式存儲結構所需要的存儲空間一般要多于順序存儲結構C、線性表的鏈式存儲結構所需要的存儲空間一般要少于順序存儲結構D、以上都不正確標準答案:B知識點解析:線性表的存儲分為順序存儲和鏈式存儲。在順序存儲中,所有元素所占的存儲空間是連續(xù)的。而在鏈式存儲的方式中,將存儲空間的每一個存儲結點分為兩部分,一部分用于存儲數(shù)據(jù)元素的值,稱為數(shù)據(jù)域;另一部分用于存儲下一個元素的存儲序號,稱為指針域。所以線性表的鏈式存儲方式比順序存儲方式的存儲空間要大一些。3、以下選項中,合法的一組C語言數(shù)值常量是A、12.0Xa234.5e0B、028.5e.3-0xfC、.1774e1.50abcD、0x8A10.0003.e5標準答案:A知識點解析:八進制數(shù)其開頭必須是數(shù)字“0”,其數(shù)字包括0~7,而在選項B)中,028是錯誤的。浮點數(shù)據(jù)的指數(shù)形式表示常量中,C語言規(guī)定字母e或E之前必須要有數(shù)字,且e或E之后的指數(shù)必須為整數(shù),而選項C)中4e1.5是錯誤的。在選項D)中,整型數(shù)據(jù)10,000的表示形式是錯誤的。4、有以下程序main(){charc1=’A’,c2=’Y’;printf(’’%d,%d\n’’,C1,c2);}程序的輸出結果是A、輸出格式不合法,輸出出錯信息B、65.90C、65,89D、A.Y標準答案:C知識點解析:C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。在輸出時,允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。5、某二叉樹的后序遍歷序列與中序遍歷序列相同,均為ABCDEF,則按層次輸出(同一層從左到右)的序列為A、FEDCBAB、CBAFEDC、DEFCBAD、ABCDEF標準答案:A知識點解析:后序遍歷次序:左右根;中序遍歷次序:左根右。由定義可知:①后序遍歷中最后一個是樹的根結點,即F結點;②在中序遍歷中,根結點左邊的是左子樹集,右邊的是右子樹集,即ABCDE是根結點F的左子樹集合。問題就會轉(zhuǎn)化為:求后序遍歷是ABCDE,中序遍歷是ABCDE的子樹。方法同上,因為中序遍歷中,E結點右邊沒有結點了,所以E結點不包含右子樹,否則就會被分為2個子問題。以下是這道題的詳細推理過程:步驟1:由ABCDEF得出根結點為F,由中序遍歷可知:{ABCDE}F,右子樹為空;步驟2:由ABCDE得出左子樹集合的根節(jié)點為E,由中序可知:{ABCD}E,右子樹為空;步驟3:同理,二叉樹更新后如下。所以按層次輸出(同一層從左到右)的序列為FEDCBA。6、有以下程序:#include<stdio.h>main(){inty=10;while(Y一);printf(’’y=%d\n’’,y);}程序執(zhí)行后的輸出結果是()。A、y=0B、y=-1C、y=1D、while構成無限循環(huán)標準答案:B知識點解析:執(zhí)行y-直到值為0,由于y-是先用再減,所以退出循環(huán)時,y的值為-1。7、若有代數(shù)式(其中e僅代表自然對數(shù)的底數(shù),不是變量),則以下能夠正確表示該代數(shù)式的C語言表達式是()。A、sqrt(1abs(pow(n,x)+exp(x)))B、sqrt(1abs(pow(N,x)+pow(x,e)))C、sgrt(abs(n^x+e^x))D、sqrt(1abs(pow(x,n)+exp(X)))標準答案:A知識點解析:B選項中函數(shù)pow(x,e)錯誤,應該直接使用exp(x)函數(shù)。C選項中函數(shù)abs(n^x+e^x)錯誤,應該使用fabs()返回浮點數(shù)的絕對值。D選項中pow(x,n)參數(shù)順序錯誤。8、有以下程序:#includeintfun(char*s){char*P=S:while(*P++!=’\0’);return(P—s);}main(){char*r=“01234”;printf(“%d\n”,fun(r));}程序的運行結果是()。A、6B、5C、4D、3標準答案:A知識點解析:程序執(zhí)行過程為:定義字符串指針r,并為其初始化為“01234”,調(diào)用函數(shù)fun(r),將指針傳入函數(shù)while循環(huán)找到字符串的結束符地址,然后使這個指針指向結束符下一個單元,結束循環(huán)。返回字符串首地址與結束符下一個地址之差,也即是字符串長度加1。輸出地址差為6。9、己知函數(shù)的調(diào)用形式“fread(buffer,size,count,fp);”其中buffer代表的是()。A、一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)B、一個文件指針,指向要讀的文件C、一個指針,是指向的輸入數(shù)據(jù)放在內(nèi)存中的起始位置D、一個存儲區(qū),存放要讀的數(shù)據(jù)項標準答案:C知識點解析:數(shù)據(jù)塊輸入/輸出函數(shù)的調(diào)用形式為:fread(buffer,size,count,fp)。fread函數(shù)參數(shù)說明:“buffer”是一個指針,對fread來說,它是讀入數(shù)據(jù)的存放地址;“size”是要讀寫的字節(jié)數(shù);“count”是要進行讀寫多少個size字節(jié)的數(shù)據(jù)項;“fp”是指文件型指針。10、若有定義語句:intm[]={5,4,3,2,1},i=4;,則下面對m數(shù)組元素的引用中錯誤的是A、m[--i]B、m[2*2]C、m[m[0]]D、m[m[i]]標準答案:C知識點解析:本題考查數(shù)組的使用。m是一個一維數(shù)組,長度為5,因此下標范圍是0-4。選項A中一是先自減,然后使用i,因此訪問的是元素m[3]:選項B訪問的是元素m[4]:選項C中內(nèi)部的m[0]值是5,因此實際訪問是的m[5],下標超出范圍:選項D中m[i]的值是1,訪問元素m[1]。11、軟件測試的目的是A、發(fā)現(xiàn)程序中的錯誤B、修改程序中的錯誤C、避免程序中的錯誤D、發(fā)現(xiàn)和修改程序中的錯誤標準答案:A知識點解析:軟件測試的目的是:發(fā)現(xiàn)一些可以通過測試避免的開發(fā)風險;實施測試來降低所發(fā)現(xiàn)的風險;確定測試何時可以結束;在開發(fā)項目的過程中將測試看作是一個標準項目。12、有以下程序#includemain(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3),c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf("%d",c[i]);printf("\n");)A、4332B、2344C、1234D、1123標準答案:A知識點解析:本題考查for語句的循環(huán)控制,首先定義了兩個數(shù)組并賦予了初始值,第一個for循環(huán)語句循環(huán)12次遍歷s數(shù)組的各個元素,將s[]中的原素值作為c[]數(shù)組中的下標,使相應的值自加。例如當i=0,c[s[0]]++為c[1]++,其值變?yōu)?,當執(zhí)行i=1,2,…11后,c[1]、c[2]、c[3]、c[4]分別為4、3、3、2,故選項A為正確的運行結果。13、以下敘述中正確的是A、整型常量和實型常量都是數(shù)值型常量B、常量的類型不能從字面形式上區(qū)分,需要根據(jù)類型名來決定C、預定義的標識符是C語言關鍵字的一種,不能另作它用D、只能在函數(shù)體內(nèi)定義變量,其他地方不允許定義變量標準答案:A知識點解析:整型常量和實型常量都是數(shù)值型常量,選項A)正確;常量的類型可以從字面上區(qū)分,比如整型常量不能有小數(shù)點,組成字符為0~9等,選項B)錯誤;預定義標識符,即預先定義并具有特定含義的標識符,可以另作他用,不過更改了原有的含義,選項C)錯誤;變量可以定義在程序中任何的地方,屬于不同的變量,選項D)錯誤。14、有以下程序#includevoidfun(char*c,intd){*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){charb=’a’,a=’A’;fun(&b,a);pfintf("%c,%c\n",b,a);}程序運行后的輸出結果是A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B標準答案:A知識點解析:本題中fun函數(shù)的參數(shù)傳遞方式,形參c是傳地址,形參d是傳值,所以在主函數(shù)中,執(zhí)行fun時,把變量b的地址傳給了c,把a的值傳遞給了d,經(jīng)過運算,輸出的值為b,B。在主函數(shù)的輸出浯句中,輸出變量b的值為b,變量a的值為A。15、有以下程序structs{inta,b;)data[2]={10,100,20,200);main(){structsp=data[1];printf("%d\n",++(p.a(chǎn)));}程序運行后的輸出結果是A、11B、20C、21D、10標準答案:C知識點解析:存題目中定義了結構體s類型的數(shù)組變量data,并對其賦初值。在程序中定義了指向結構體S類型的變量p,并把數(shù)組data的第二個元素data[1]的值賦給它,所以此時成員變量p.a(chǎn)的值等于20,存輸出時分別加1,所以輸入結果為選項A)。16、有以下程序main(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2‖c--!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序運行后的輸出結果是A、1,3,2B、1,2,3C、1,3,3D、3,2,1標準答案:C知識點解析:a,b,c,d初始值分別為1,2,3,0。嵌套的if語句中,第一個if中,表達式a==1&&b++==2值為1,執(zhí)行嵌套的if分支,此時“b=3,b!=2”成立,由于運算符是‖,不管后面一個表達式的值是不是1,其整個表達式的值總是1,“c--!=3”表達式不執(zhí)行,最后打印出a,b,c的值是1,3,3。17、有下列程序:inta=4:intf(intn)main(){intt=0;staticinta=5;{ints=a,i=0;if(n%2){inta=6;t+=a++;}for(;i<2;i++)s+=f(i);else{inta=7;t+=a++;}printf("%d\n",s);returnt+a++;}}程序運行后的輸出結果是A、28B、24C、32D、36標準答案:A知識點解析:程序中定義了全局整型變量a=4。在intf(intn)函數(shù)中定義了局部靜態(tài)整型變量并進行了初始化即staticinta=5。在intf(intn)函數(shù)中對n是否是偶數(shù)進行判斷,如果n是奇數(shù),則函數(shù)的返回值為11,局部靜態(tài)整型變量a=6;如果n是偶數(shù),則函數(shù)的返回值為12,局部靜態(tài)整型變量a=6。所以在main()函數(shù)中循環(huán)首先執(zhí)行s+=f(0)語句,而f(0)返回值12,所以第一次循環(huán)結束s的值等于4+12=16;第二次開始執(zhí)行f(1)時,在f(1)中執(zhí)行“if(n%2){inta=6;t+=a++;}”和“retumt+a++;”這兩條語句,這時t=6,a=6(靜態(tài)局部變量第一次循環(huán)后其值加1值不釋放,執(zhí)行第二次循環(huán)量,其值仍有效),所以f(1)的返回值等于12。再在主函數(shù)中執(zhí)行s+=f(1)語句,即16+12=28。18、有以下程序#includemain(){inta=5,b=1,t;t=(a<<2){b;printf("%d\n",t);}A、11B、6C、21D、1標準答案:C知識點解析:本題考查位操作運算符?!迹肌亲笠七\算符,左移一位相當于乘2,‘|’是按位或運算符。5左移兩位相當于乘4,得到20,20的二進制數(shù)是00010100,和00000001進行按位或操作得到00010101,即十進制的21。19、有以下程序#includeinta=2;intf(){staticintn=0;intm=0;n++;a++;m++;returnn+m+a;}main(){intk;for(k=0;k<3;k++)printf("%d,",f());printf("\n");}程序的運行結果是()。A、5,7,9,B、5,6,7,C、5,8,11,D、5,5,5,標準答案:A知識點解析:靜態(tài)變量定義時的初始化只運行一次,并且其值在程序運行過程中一直存在,而局部變量則是用時分配,用完釋放。全局變量在當前文件內(nèi)也是一直存在的。main()函數(shù)中調(diào)用三次f()函數(shù),f(0)=1+1+3=5,n=1,m=1,a=3;f(1)=2+1+4=7,n=2,m=1,a=4;f(2)=3+1+5=9,n=3,m=1,a=5。所以答案選A。20、有以下程序main(){inta=1,b=2,c=3,x;x=(a^b)&c;printf("%d\nT",x);}程序的運行結果是A、1B、2C、3D、0標準答案:C知識點解析:1、2、3的二進制形式分別為00000001、00000010、00000011。首先計算1與2的或運算,即1^2=(00000001)^(00000010)=00000011,再將其與3進行“與”運算。結果為(00000011)&(00000011)=4)0000011,即十進制數(shù)3。21、有以下程序voidfun(int*p,int*q){intt;t=*p;*p=*q;*q=t;*q=*p;}main(){inta=0,b=9;fun(&a,&b);printf("%d%d\n",a,b);}程序的輸出結果是A、00B、99C、90D、09標準答案:B知識點解析:函數(shù)fun的主要功能是交換p和q指向的地址空間的數(shù)據(jù),然后更改p的指向的地址空間數(shù)據(jù),使之和q指向的數(shù)據(jù)相同。主函數(shù)調(diào)用fun后,p指向a,q指向b,因此a和b的數(shù)據(jù)全部為9。22、若有以下程序typedefstructstu{charname[10],gender;intscore;}STU;voidf(STUa,STUb){b=a;printf("%s,%c,%d,",b.name,b.gender,b.score);}main(){STUa={"Zhao",’m’,290},b={"Qian",’f’,350};f(a,b);printf("%s,%c,%d\n",b.name,b.gender,b.score);}則程序的輸出結果是A、Zhao,m,290,Zhao,m,290B、Zhao,m,290,Qian,f,350C、Qian,f,350,Qian,f,350D、Zhao,m,290,Zhao,f,350標準答案:B知識點解析:函數(shù)f(STUa,STUb)的主要功能是為把結構體變量a的值存放到b中,然后輸出b中各個成員的值。主函數(shù)中調(diào)用函數(shù)f(a,b),輸出賦值以后b的數(shù)據(jù),實際為a{"Zhao",’m’,290}的數(shù)據(jù),函數(shù)調(diào)用結束,形參a和b撤銷,流程到主函數(shù)輸出b{"Qian",’f’,350}的數(shù)據(jù)。23、有以下程序#include<stdio.h>typedefstruct{intb,p;}A;voidf(Ac)/*注意:c是結構變量名*/{intj;c.b+=1;c.p+=2;}main(){i;Aa={1,2};f(a);printf("%d,%d\n",a.b,a.p);}程序運行后的輸出結果是A、2,4B、1,2C、1,4D、2,3標準答案:B知識點解析:在C語言中,數(shù)據(jù)只能從實參單向傳遞給形參,稱為“按值”傳遞。也就是說,當簡單變量作為實參時,用戶不可能在函數(shù)中改變對應實參的值。所以本題中在main()函數(shù)f(a)語句中結構體實參a作為值,傳遞給函數(shù)f(Ac)中的形參c;這種值傳遞的方式不會對實參a產(chǎn)生任何影響,所以結構體實參a的值不會發(fā)生變化。24、以下程序依次把從終端輸入的字符存放到f文件中,用#作為結束輸入的標志,則在橫線處應填入的選項是#include<stdio.h>main(){FILE*fp;charch;fp=fopen("fname","w");while((ch=getchar())!=’#’)fputc(__________);fclose(fp);}A、fp,chB、chC、ch,"fname"D、ch,fp標準答案:D知識點解析:fputc()是以字符(字節(jié))為單位的讀寫函數(shù)。每次可從文件讀出或向文件寫入一個字符。使用格式為fputc(ch,fp);其中ch是待輸出的某個字符,它可以是一個字符常量,也可以是一個字符變量;fp是文件指針。fputc(ch,fp)的功能是將字符ch寫到文件指針fp所指的文件中。如果輸出成功,fputc函數(shù)返回所輸出的字符;如果輸出失敗,則返回一個EOF值。EOF是在stdio.h庫函數(shù)文件中定義的符號常量,其值等于-1。25、以下敘述中錯誤的是()。A、用typedef可以說明一種新的類型名B、typedef的作用是用一個新的標識符來代表已存在的類型名C、可以用typedef說明的新類型名來定義變量D、typedef說明的新類型名必須使用大寫字母,否則會出編譯錯誤標準答案:D知識點解析:本題考查typedef的使用方法,typedef對已存在的類型使用一個新的名字,新類型可以使用小寫,所以D選項錯誤。國家二級C語言機試(選擇題)模擬試卷第3套一、選擇題(本題共25題,每題1.0分,共25分。)1、設循環(huán)隊列的存儲空間為Q(1:35),初始狀態(tài)為front=rear=35?,F(xiàn)經(jīng)過一系列入隊與退隊運算后,front=15,rear=15,則循環(huán)隊列中的元素個數(shù)為()。A、15B、16C、20D、0或35標準答案:D知識點解析:循環(huán)隊列的隊頭指針和尾指針都等于15,此循環(huán)隊列中元素的個數(shù)有兩種情況,第一種情況是隊頭指針和尾指針都是第一次到達15,此時元素個數(shù)為0;第二種情況是隊頭指針第一次到達15,而尾指針第二次到達15,此時元素個數(shù)為35。2、下列敘述中正確的是()。A、對長度為n的有序鏈表進行查找,最壞情況下需要的比較次數(shù)為nB、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為(n/2)C、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為(log2n)D、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為(nlog2n)標準答案:A知識點解析:本題主要考查的知識點為查找技術。順序查找的使用情況:①線性表為無序表;②表采用鏈式存儲結構。二分法查找只適用于順序存儲的有序表,并不適用于線性鏈表。3、以下選項中非法的C語言字符常量是A、’\b’B、’\007’C、’aa’D、’\xaa’標準答案:C知識點解析:一個字符常量代表ASCII字符集中的一個字符,在程序中用單引號把一個字符括起來作為字符常量。4、設二叉樹的前序序列為ABDEGHCFIJ,中序序列為DBGEHACIFJ。則按層次輸出(從上到下,同一層從左到右)的序列為A、ABCDEFGHIJB、DGHEBIJFCAC、JIHGFEDCBAD、GHIJDEFBCA標準答案:A知識點解析:前序遍歷中,第一個字母是根結點,也就是A是根結點;在中序遍歷中,根結點前面的是左子樹、后面的是右子樹。前序中,B在A的后面,中序中在左子樹中,可知B為A的左結點。中序中D在B的前面,前序中在B的后面,可知D為B的左結點,GEH為B的右子樹。前序中順序為EGH,由此可知,E為B的右結點,G為E的左結點、H為E的右結點。右子樹中,前序中C在最前,因為右子樹根結點,也就是A的右結點,根據(jù)前序中的子樹FIJ和中序中的IFJ子樹可知F為C的右結點,I為F的左結點、J為F的右結點。由此可畫出這個二叉樹,然后根據(jù)二叉樹,可知按層次輸出(從上到下,同一層從左到右)的序列為:ABCDEFGHIJ。5、定義學生、教師和課程的關系模式S(S#,Sn,Sd,Dc,Sa)(其屬性分別為學號、姓名、所在系、所在系的系主任、年齡);C(C#,Cn,P#)(其屬性分別為課程號、課程名、先修課);SC(S#,C#,G)(其屬性分別為學號、課程號和成績)。包含對非主屬性部分依賴的關系是()。A、S(S#,Sn,Sd,Dc,Sa)B、C(C#,Cn,P#)C、SC(S#,C#,G)D、不存在標準答案:A知識點解析:關系S的主鍵是S#(學號),S#是主屬性,但非主屬性Sd(所在系)也可決定Dc(所在系的系主任),所以包含對非主屬性部分依賴的關系是S。6、若有以下程序#includemain(){intb=10,a=-11;a%=b%=4;printf("%d%d\n",a,b);}則程序的輸出結果是A、12B、-1-2C、-12D、1-2標準答案:C知識點解析:對于表達式a%=b%=4為復合的賦值運算,結合性自右至左,相當于先計算b=b%4,a=a%b;結果的符號和第一個操作數(shù)的符號相同,因此b為2,a的結果為-1.7、有如下程序段:intx=12:doubley=3.141593:printf(’’%d%8.6f’’,x,y);其輸出結果是()。A、123.141593B、123.141593C、12,3.141593D、123.1415930標準答案:A知識點解析:printf函數(shù)中格式字符“%8.6”的含義是:變量y的輸出寬度為8(包括小數(shù)點),小數(shù)點后面保留6位小數(shù),且右對齊,當數(shù)值的實際寬度大于設定寬度時,按實際寬度輸出,所以選擇A選項。8、有以下程序:#include<stdio.h>inta=1,b=2;voidfun1(inta,intb){printf(″%d%d″,a,b);}voidfun2(){a=3;b=4;}main(){fun1(5,6);fun2();printf(″%d%d\n″,a,b);}程序運行后的輸出結果是()。A、5634B、3456C、1256D、5612標準答案:A知識點解析:在一個源文件中,如果外部變量和局部變量同名,則在該局部變量的作用域內(nèi),該外部變量會被“屏蔽”,所以函數(shù)fun1()輸出的是局部變量a、b的值:56;fun2()改變的是全局變量a、b的值,輸出結果為34,答案選A。9、軟件系統(tǒng)總體結構圖的作用是A、描述軟件系統(tǒng)結構的圖形工具B、描述軟件系統(tǒng)的控制流C、描述軟件系統(tǒng)的數(shù)據(jù)流D、描述軟件系統(tǒng)的數(shù)據(jù)結構標準答案:A知識點解析:軟件系統(tǒng)總體結構圖的作用是描述軟件系統(tǒng)結構的圖形工具。10、有以下程序:#includeintfun(intx){intP;if(x==0‖x==1)return3;P=x—fun(x一2);return(P);}main(){printf(“%d\n”,fun(9));}程序運行后的輸出結果是()。A、4B、5C、9D、7標準答案:D知識點解析:本題考查函數(shù)的遞歸調(diào)用。執(zhí)行fun(9)后,fun(9)=9一(7一(5一(3一f(1))))=7,故D選項正確。11、sizeof(double)是A、一個雙精度型表達式B、一個整型表達式C、一個不合法的表達式D、一種函數(shù)調(diào)用標準答案:B知識點解析:sizeof關鍵字為C語言的運算符,用于測試()內(nèi)類型其變量所占內(nèi)存,表達式結果返回十進制整數(shù),因此為整型表達式,表明變量所占的內(nèi)存字節(jié)數(shù)。12、若有以下程序#includeint*f(int*s,int*t){int*k;if(*s<*t){k=s;s=t;t=k;}returns;}main(){inti=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);}則程序的輸出結果是A、3,5,5,3,5B、5,3,5,3,5C、5,3,3,5,5D、3,5,3,5,5標準答案:D知識點解析:本題考查了返回值為指針的函數(shù),函數(shù)f的主要功能為第一個參數(shù)小于第二個參數(shù),那么交換指針的指向,這對于實參指向的數(shù)據(jù)時沒有影響的。最后返回比較大的元素的地址。主函數(shù)中p指向i,q指向i,調(diào)用r=f(p,q),返回q的地址,因此*p=3,*q=5,*r=5。13、以下敘述中正確的是A、循環(huán)發(fā)生嵌套時,最多只能兩層B、三種循環(huán)for,while,do-while可以互相嵌套C、循環(huán)嵌套時,如果不進行縮進形式書寫代碼,則會有編譯錯誤D、for語句的圓括號中的表達式不能都省略掉標準答案:B知識點解析:在一個循環(huán)體內(nèi)又完整包含了另一個循環(huán),稱為循環(huán)嵌套。循環(huán)的嵌套可以多層,但每一層循環(huán)在邏輯上必須是完整的。for循環(huán)、while循環(huán)、do-while循環(huán)可以互相嵌套,但每層循環(huán)在邏輯上必須完整。而在for語句中,for語句中的表達式可以部分或全部省略,但兩個“:”不可省略。14、若有以下程序#includeintk=7,m=5;voidf(int**s){int*t=&k;s=&t;*s=&m;printf("%d,%d,%d,",k,*t,**s);}main(){inti=3,*p=&i,**r=&p;f(r);printf("%d,%d,%d\n",i,*p,**r);}則程序的輸出結果是A、7,5,7,3,3,3,B、7,5,7,3,5,7,C、7,5,5,3,3,3,D、7,7,5,3,3,3,標準答案:C知識點解析:本題考查二級指針作為函數(shù)的參數(shù),可以通過函數(shù)調(diào)用來改變主函數(shù)中一級指針的指向。主函數(shù)中指針變量p指向i,r指向p,調(diào)用f函數(shù),形參指針s指向p,流程轉(zhuǎn)到f函數(shù)執(zhí)行,指針變量t指向k,s指向t,此時更改了s的指向,s指向了t,更改了s指向的地址空間內(nèi)容為m的地址,同時t也指向變量m,因此**s的值為m的值,*t為m的值,k為7。流程返回到主函數(shù),沒有對主函數(shù)空間的數(shù)據(jù)和指向作出更改,因此全部為3。15、以下敘述中正確的是A、循環(huán)發(fā)生嵌套時,最多只能兩層B、三種循環(huán)for,while,do-while可以互相嵌套C、循環(huán)嵌套時,如果不進行縮進形式書寫代碼,則會有編譯錯誤D、for語句的圓括號中的表達式不能都省略掉標準答案:B知識點解析:在一個循環(huán)體內(nèi)又完整包含了另一個循環(huán),稱為循環(huán)嵌套。循環(huán)的嵌套可以多層,但每一層循環(huán)在邏輯上必須是完整的。for循環(huán)、while循環(huán)、do-while循環(huán)可以互相嵌套,但每層循環(huán)在邏輯上必須完整。而在for語句中,for語句中的表達式可以部分或全部省略,但兩個“;”不可省略。16、有以下定義語句,編譯時會出現(xiàn)編譯錯誤的是A、chara=’\n’;B、chara="aa";C、chara=’a’;D、chara=’\x2d’;標準答案:B知識點解析:在選項B中,由兩個字符aa組成一個字符串賦給一個字符變量a時會出錯。17、結構化程序設計的基本原則不包括()。A、多態(tài)性B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:結構化程序設計的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語句,所以選擇A)。18、設有表示學生選課的三張表,學生S(學號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學號,課號,成績),則表SC的關鍵字(鍵或碼)為()。A、課號,成績B、學號,成績C、學號,課號D、學號,姓名,成績標準答案:C知識點解析:學號是學生表S的主鍵,課號是課程表C的主鍵,所以選課表SC的關鍵字就應該是與前兩個表能夠直接聯(lián)系且能唯一定義的學號和課號,所以選擇C)。19、有以下程序#include#defineSUB(X,Y)(X+1)*Ymain(){inta=3,b=4;printf("%d\n",SUB(a++,b++));}程序運行后的輸出結果是A、25B、20C、12D、16標準答案:D知識點解析:本題考查宏定義,宏定義只是做個簡單的替換,執(zhí)行SUB(a++,b++)=(a+++1)*b++=16,選項D正確。20、以下敘述中正確的是A、用戶自己定義的函數(shù)只能調(diào)用庫函數(shù)B、實用的C語言源程序總是由一個或多個函數(shù)組成C、不同函數(shù)的形式參數(shù)不能使用相同名稱的標識符D、在C語言的函數(shù)內(nèi)部,可以定義局部嵌套函數(shù)標準答案:B知識點解析:A選項中,"用戶自己定義的函數(shù)只能調(diào)用庫函數(shù)"描述是不正確的,也可以調(diào)用自定義函數(shù);C選項中,對于不同函數(shù)的形式參數(shù)可以使用相同名稱的標識符;D選項中,關于函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套。因此B選項正確。21、以下選項中不屬于C語言標識符的是A、常量B、用戶標識符C、關鍵字D、預定義標識符標準答案:A知識點解析:常量是指在程序運行過程中其值不能被改變的量,如5、1.0、字符’a’等。C語言的標識符分為3類:關鍵字、預定義標識符和用戶標識符,常量不屬于標識符,所以選擇A。22、若有定義typedefintT[10];Ta[20];則與上述定義完全等價的說明語句是()。A、inta[20][10];B、inta[20];C、inta[10];D、inta[10][20];標準答案:A知識點解析:typedef為類型定義符,作用是用"新類型名"代替"原類型名",即為現(xiàn)有類型定義容易記憶的類型名。typedef能夠隱藏復合類型,比如指針和數(shù)組,定義語句"typedefintT[10];"表明類型T就代表了具有10個元素的整型數(shù)組,所以語句"Ta[20];"則表示定義了具有20個元素并且每個元素都為一個有10個元素的一維數(shù)組,所以答案選A。23、標準庫函數(shù)fgets(s,n,f)的功能是()。A、從文件f中讀取長度不超過n-1的字符串存入指針s所指的內(nèi)存B、從文件f中讀取長度為n的字符串存入指針s所指的內(nèi)存C、從文件f中讀取n個字符串存入指針s所指的內(nèi)存D、從文件f中讀取n-1個字符串存入指針s所指的內(nèi)存標準答案:A知識點解析:函數(shù)fgets(s,n,f)的功能是從f指向的文件中讀取一個長度為n-1的字符串,將其存入s指向的存儲區(qū)中,答案選A。24、有以下程序#includemain(){inti=0;i=~i;printf("%d\n",i);}程序運行后的輸出結果是A、8B、0C、1D、-1標準答案:D知識點解析:本題考查位運算中按位取反,0按位取反就是-1,所以選項D正確。25、有以下程序#includemain(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d\n",sum);}程序運行后的輸出結果是A、隨機值B、0C、15D、16標準答案:A知識點解析:本題重點考察for語句,變量沒有初始化的情況下,默認值與編譯器有關系,不同的編譯器有不同的值。因此A選項正確。國家二級C語言機試(選擇題)模擬試卷第4套一、選擇題(本題共40題,每題1.0分,共40分。)1、設一棵滿二叉樹共有15個結點,則在該滿二叉樹中的葉子結點數(shù)為()。A、7B、8C、9D、10標準答案:B知識點解析:在具有n個結點的滿二叉樹,其非葉子結點數(shù)為int(n/2),而葉子結點數(shù)等于總結點數(shù)減去非葉子結點數(shù)。本題n=15,故非葉子結點數(shù)等于int(15/2)=7,葉子結點數(shù)等于15-7=8。2、C語言主要是借助以下哪種手段來實現(xiàn)程序模塊化A、定義常量和外部變量B、使用豐富的數(shù)據(jù)類型C、使用三種基本結構語句D、定義函數(shù)標準答案:D知識點解析:C語言用函數(shù)實現(xiàn)軟件的模塊化設計。3、一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棧的順序是A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA標準答案:B知識點解析:棧是按照“先進后出”或“后進先出”的原則組織數(shù)據(jù)的。所以出棧順序是EDCBA54321。4、下列各組排序法中,最壞情況下比較次數(shù)相同的是()。A、簡單選擇排序與堆排序B、簡單插入排序與希爾排序C、冒泡排序與快速排序D、希爾排序與堆排序標準答案:C知識點解析:對于長度為n的線性表,最壞情況下查找或排序的次數(shù)如下表:5、在深度為7的滿二叉樹中,葉子結點的個數(shù)為A、32B、31C、64D、63標準答案:C知識點解析:所謂滿二叉樹是指這樣的一種二叉樹:除最后一層外,每一層上的所有結點都有兩個子結點。也就是在滿二叉樹中,每一層上的結點數(shù)都是最大結點數(shù),即在滿二叉樹的第k層上有2k-1個結點,且深度為m的滿二叉樹有2m-1個結點。對于深度為7的滿二叉樹,葉子結點所在的是第7層,一共有27-1=64個葉子結點。全部結點共27-1=127個。6、對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為A、log2nB、n/2C、nD、n+1標準答案:C知識點解析:在進行順序查找過程中,如果被查的元素是線性表中的最后一個元素,或者被查元素根本不在線性表中,則為了查找這個元素需要與線性表中的所有元素進行比較,這是順序查找的最壞情況,需要比較的次數(shù)為n次。7、設變量x為longint型,并已正確賦值,以下表達式中能將x的百位上的數(shù)字提取出的是()。A、x/10%100B、x%10/100C、x%100/10D、x/100%10標準答案:D知識點解析:x/100的個位數(shù)是x的百位數(shù)上的數(shù)字,所以再進行%10運算即可得到該數(shù)字。8、有以下程序main(){chara=’H’;a:(a>=’A’&&a<=’Z’)?(a+32);a;printf(’’%c\n’’,a);)程序運行后的輸出結果是A、HB、AC、hD、a標準答案:C知識點解析:表達式a=(a>=’A’&&a<=’z’)?(a+32):a,為條件表達式,如果a是大寫字符,則轉(zhuǎn)換為小寫字符存放到a中,否則不變。9、數(shù)據(jù)庫管理系統(tǒng)是()。A、操作系統(tǒng)的一部分B、在操作系統(tǒng)支持下的系統(tǒng)軟件C、一種編譯系統(tǒng)D、一種操作系統(tǒng)標準答案:B知識點解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機構,它是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制、保護和數(shù)據(jù)服務等。10、循環(huán)隊列的存儲空間為Q(1:40),初始狀態(tài)為front=rear=40。經(jīng)過一系列正常的入隊與退隊操作后,front=rear=15,此后又退出一個元素,則循環(huán)隊列中的元素個數(shù)為A、39,或0且產(chǎn)生下溢錯誤B、14C、40D、15標準答案:A知識點解析:循環(huán)隊列初始狀態(tài)front=rear=40,經(jīng)過一系列入隊和出隊操作后,結束狀態(tài)還是front=rear=15,這說明入隊元素個數(shù)和出隊元素個數(shù)一樣多。這樣一來最后的元素個數(shù)就和原來的元素個數(shù)一樣多,明顯不是0就是40,即要么隊列為空(0個元素),要么隊列為滿隊列(40個元素)。這時進行出隊操作,如果是隊列滿(40個元素)的情況,此時隊列中的元素個數(shù)為39,如果是隊列空(0個元素)的情況,此時就會產(chǎn)生下溢錯誤。因此選項A正確。11、有以下程序main(){inta=2,c=5;printf("a=%%d,b=%%d\n",a,c);)程序的輸出結果是A、a=%2,b=%5B、a;%d,b=%dC、a=2,b=5D、a=%%d,b=%%d標準答案:B知識點解析:輸出“%”,可以在格式控制中用“%%”表示,將輸出一個“%”,而沒有%表示格式符的開始,%%d不能表示格式符,因此僅輸出:a=%d,b=%d。12、有以下程序段:#includeintj;floaty;charname[50];seanf(”%2d%f%s”,&j,&y,name);當執(zhí)行上述程序段時,從鍵盤上輸入555667777abc后,Y的值為()。A、566.0B、55566.0C、7777.0D、566777.0標準答案:A知識點解析:它是格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。其中的格式命令可以說明最大域?qū)挕T诎俜痔?%)與格式碼之間的整數(shù)用于限制從對應域讀人的最大字符數(shù)。所以j的值為55,y的值為566.0,字符數(shù)組name為7777abc。13、關于C語言程序的敘述中錯誤的是()。A、一個C函數(shù)可以單獨作為一個C程序文件存在B、一個C語言程序只能實現(xiàn)一種算法C、C語言程序可以由一個或多個函數(shù)組成D、C語言程序可以由多個程序文件組成標準答案:B知識點解析:在一段C語言程序中可以包含多個算法.用來實現(xiàn)不同的任務,因為算法是指為解決某個特定問題而采取的確定且有限的步驟,它是通過函數(shù)來實現(xiàn)的。一個C語言源程序由許多函數(shù)組成,這些函數(shù)都是根據(jù)實際任務確定具體的算法,由用戶自己編寫。C語言源程序可以放在不同的文件中,同一個源程序中的函數(shù)也可放在不同的文件中,所以一個C語言程序可以實現(xiàn)多種算法。14、以下不構成無限循環(huán)的浯句或語句組是()。A、n=0;do{++11;}while(n<=0);B、n=0;while(1){n++;}C、n=10;while(n);;n一一;}D、for(n=0,i=1;i++)n+=i;標準答案:A知識點解析:A選項中do后面的語句只執(zhí)行了一次便結束了循環(huán);B選項中條件while(1)永遠成立,所以是死循環(huán);C選項中n的值為10,而循環(huán)體為空語句,所以while(n)永遠為真,進入死循環(huán);D選項中for語句第二個表達式為空,所以沒有判斷條件,進入死循環(huán)。15、設有如下三個關系表下列操作中正確的是A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鋼絲清潔擦項目投資可行性研究分析報告
- 氣動液壓穩(wěn)流裝置行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 2021-2026年中國車用柴油發(fā)動機行業(yè)投資分析及發(fā)展戰(zhàn)略咨詢報告
- 2025年家具座墊行業(yè)深度研究分析報告
- 2025年盤頭自攻螺絲行業(yè)深度研究分析報告
- 2025年外貿(mào)專用自封袋行業(yè)深度研究分析報告
- 漁場菜籃子建設項目可行性研究報告
- 年產(chǎn)6.66萬噸滌綸POY絲項目可行性研究報告
- 2025年螺母套行業(yè)深度研究分析報告
- 2025年塑鋼線行業(yè)深度研究分析報告
- (日文文書模板范例)請求書-請求書
- 旅游消費者行為學整套課件完整版電子教案課件匯總(最新)
- 學前兒童發(fā)展心理學(第3版-張永紅)教學課件1754
- 勞技-中國結PPT通用課件
- 溫庭筠《望江南》ppt課件
- 2022牛排消費趨勢報告
- TPM╲t4Step Manul(三星TPM絕密資料)
- 細菌群體感應系統(tǒng)及其應用課件
- 司法鑒定程序通則(試行)
- 通達信指標——江恩輪
- 神經(jīng)電生理檢查ppt課件
評論
0/150
提交評論