版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
國家二級C語言機試(選擇題)模擬試卷49(共9套)(共240題)國家二級C語言機試(選擇題)模擬試卷第1套一、選擇題(本題共40題,每題1.0分,共40分。)1、下列敘述中正確的是()。A、所謂算法就是計算方法B、程序可以作為算法的一種描述方法C、算法設計只需考慮得到計算結果D、算法設計可以忽略算法的運算時間標準答案:B知識點解析:算法是指對解題方案的準確而完整的描述,算法不等于數(shù)學上的計算方法,也不等于程序。算法設計需要考慮可行性、確定性、有窮性與足夠的情報,不能只考慮計算結果。算法設計有窮性是指操作步驟有限且能在有限時間內完成,如果一個算法執(zhí)行耗費的時間太長,即使最終得出了正確結果,也是沒有意義的。算法在實現(xiàn)時需要用具體的程序設計語言描述,所以程序町以作為算法的一種描述方法。2、下列敘述中正確的是()。A、對長度為n的有序鏈表進行查找,最壞情況下需要的比較次數(shù)為nB、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為(n/2)C、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為(log2n)D、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為(nlog2n)標準答案:A知識點解析:本題主要考查的知識點為查找技術。順序查找的使用情況:①線性表為無序表;②表采用鏈式存儲結構。二分法查找只適用于順序存儲的有序表,并不適用于線性鏈表。3、有以下程序:#includevoidmain(){intm=1,n=2,*P=&m,*q=&n,*r;r=P;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*P,*q);}程序運行后的輸出結果是()。A、1,2,1,2B、1,2,2,1C、2,1,2,1D、2,1,1,2標準答案:B知識點解析:本題定義了兩個整型變量,然后用兩個指針分別指向這兩個整型變量,接著對指針進行交換,那么原來指向第一個整數(shù)的指針將指向第二個整數(shù),原來指向第二個整數(shù)的指針將指向第一個整數(shù)。4、在關系數(shù)據(jù)庫設計中,關系模式是用來記錄用戶數(shù)據(jù)的()。A、實體B、視圖C、屬性D、二維表標準答案:D知識點解析:關系模式采用二維表來表示關系,簡稱表。5、在軟件設計中,不屬于過程設計工具的是A、PDL(過程設計語言)B、PAD圖C、N-S圖D、DFD圖標準答案:D知識點解析:DFD(數(shù)據(jù)流圖Data-Flow-Diagram)是描述數(shù)據(jù)處理過程的工具,是需求理解的邏輯模型的圖形表示。它直接支持系統(tǒng)功能建模。在軟件詳細設計的過程階段,要對每個模塊規(guī)定的功能以及算法的設計給出適當?shù)乃惴枋?。常見的過程設計工具有:圖形工具:程序流程圖,N—S,PAD,HIPO。表格工具:判定表。語言工具:PDL(偽碼)。6、下列關于數(shù)據(jù)庫設計的敘述中,正確的是A、在需求分析階段建立數(shù)據(jù)字典B、在概念設計階段建立數(shù)據(jù)字典C、在邏輯設計階段建立數(shù)據(jù)字典D、在物理設計階段建立數(shù)據(jù)字典標準答案:A知識點解析:數(shù)據(jù)庫設計目前一般采用生命周期法,即將整個數(shù)據(jù)庫應用系統(tǒng)的開發(fā)分解成目標獨立的若干階段。分別是:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段、編碼階段、測試階段、運行階段、進一步修改階段。數(shù)據(jù)字典是對系統(tǒng)中數(shù)據(jù)的詳盡描述,是各類數(shù)據(jù)屬性的清單。對數(shù)據(jù)設計來講,數(shù)據(jù)字典是進行詳細的數(shù)據(jù)收集和數(shù)據(jù)分析所獲得的主要結果。7、設有以下定義和語句,輸出的結果是(用small模式編譯,指針變量占2個字節(jié))()。structU{long*cat;stmctU*next;doubledog;}u;printf("%d",sizeof(u));A、20B、16C、14D、12標準答案:D知識點解析:當結構成員是指針時,它將占用2字節(jié)的存儲單元(在small編譯模式下),而與它所指向的數(shù)據(jù)類型無關。本題中,指針cat的長度為2字節(jié);next是指向結構structU的指針,但它本身也只是一個指針,其長度也是2字節(jié);double型變量dog的長度為8字節(jié)。因此,結構變量u的總長度為12字節(jié)。8、在下列定義語句中,編譯時會出現(xiàn)編譯錯誤的是()。A、chara=’\x2d’;B、chara=’\n’;C、chara=’a’;D、chara="aa";標準答案:D知識點解析:D選項中將字符串常量“aa”賦給字符變量a是錯誤的。9、設有定義:inta;floatb;執(zhí)行scanf(’’%2d%f’,&a,&b);語句時,若從鍵盤輸入876543.0則a和b的值分別是A、876和543.0B、87和6.0C、87和543.0D、76和543.0標準答案:B知識點解析:在輸入函數(shù)scanf的輸入格式符%2d%f中,2d表示輸入的數(shù)據(jù)的寬度為2,所以當從鍵盤輸入876543.0<CR>時,這時把輸入數(shù)字串的前兩位87賦給變量a,然后將緊接著將6按照格式控制符%f的形式賦給變量b,所以b的值為6.000000。10、若實體A和B是一對多的聯(lián)系,實體B和C是一對一的聯(lián)系,則實體A和C的聯(lián)系是A、一對一B、一對多C、多對一D、多對多標準答案:B知識點解析:由于B和C有一一對應的聯(lián)系,而A和B只間有一對多的聯(lián)系,則通過關系之間的傳遞,則A和C之間也是一對多的聯(lián)系。11、有以下程序:#includemain(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)fnr(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);}程序的運行結果是()。A、3B、4C、1D、9標準答案:B知識點解析:每次內循環(huán)只循環(huán)一次就結束,第1次外循環(huán)時,t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1;第2次外循環(huán)時,t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第3次外循環(huán)時,t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4。12、在關系數(shù)據(jù)庫中,用來表示實體間聯(lián)系的是A、屬性B、-維表C、網(wǎng)狀結構D、樹狀結構標準答案:B知識點解析:在關系數(shù)據(jù)庫中,實體間的聯(lián)系由一個二維表來表示。13、有以下程序main(){inta=1,b=2,c=3,d=0;if(a=1&&b++==2)if(b!=211c一!=3)printf("%d,%d,%d\n",a,b,c);elseprintff"%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序運行后的輸出結果是A、1,3,2B、1,2,3C、l,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。14、軟件集成測試不采用A、迭代式組裝B、自頂向下增量組裝C、一次性組裝D、自底向上增量組裝標準答案:A知識點解析:集成測試,也叫組裝測試或聯(lián)合測試。在單元測試的基礎上,將所有模塊按照設計要求(如根據(jù)結構圖)組裝成為子系統(tǒng)或系統(tǒng),進行集成測試。常采用自頂向下、自底向上和一次性組裝測試15、以下敘述中正確的是A、函數(shù)名代表該函數(shù)的入口地址B、所有函數(shù)均不能接受函數(shù)名作為實參傳入C、函數(shù)體中的語句不能出現(xiàn)對自己的調用D、如果函數(shù)帶有參數(shù),就不能調用自己標準答案:A知識點解析:函數(shù)形、實參傳遞的時候,要求對應位置類型一致即可,如果實參為函數(shù)名,可以定義相應的形參為指向函數(shù)的指針變量來獲得該函數(shù)的入口地址,因此選項B錯誤的,在C語言中允許進行遞歸調用,即自己調用自己,選項C和選項D是錯誤的。16、設變量均已正確定義并賦值,以下與其他三組輸出結果不同的一組語句是A、x++;printf(”%d\n”,x);B、++x;printf(”%d\n”,x);C、n=x++;printf(”%d\n”,n);D、n=++x;printf(”%)d\n”,n);標準答案:C知識點解析:本題考查自增運算符。++在前表示先自增然后使用,++在后面表示先使用然后自增。選項A)中首先執(zhí)行x++,執(zhí)行完后x自增1,然后printf輸出的是x自增后的值:選項B)首先執(zhí)行++,x的值增加1,接著輸出x的值;選項C)中++在x的后面,因此n的值是x自增前的值,printf輸出韻是x自增前的值,選項D)中++在x的前面,因此x首先自增,然后再賦值給n,n的值是x自增后的值,輸出的也是x自增后的值。17、將數(shù)據(jù)庫的結構劃分成多個層次,是為了提高數(shù)據(jù)庫的物理獨立性和A、規(guī)范程度B、操作獨立性C、邏輯獨立性D、降低數(shù)據(jù)冗余標準答案:C知識點解析:物理獨立性是指用戶的應用程序與存儲在磁盤上的數(shù)據(jù)庫中數(shù)據(jù)是相互獨立的。即,數(shù)據(jù)在磁盤上怎樣存儲由DBMS管理,用戶程序不需要了解,應用程序要處理的只是數(shù)據(jù)的邏輯結構,這樣當數(shù)據(jù)的物理存儲改變了,應用程序不用改變;邏輯獨立性存在于外模式和內模式之間。數(shù)據(jù)的邏輯獨立性是指數(shù)據(jù)與程序的邏輯獨立性。用戶的應用程序和數(shù)據(jù)庫中的邏輯結構是相互獨立的,當數(shù)據(jù)的邏輯結構發(fā)生改變時應用不需要改變,邏輯獨立性存在于外模式和內模式之間。數(shù)據(jù)的邏輯獨立性是指數(shù)據(jù)與程序的邏輯獨立性。18、以下選項中合法的實型常量是A、.914B、3.13e-2.1C、0D、2.0*10標準答案:A知識點解析:實型常量又稱實數(shù)或浮點數(shù),一般用小數(shù)形式或指數(shù)形式來表示。實型常量分為以下兩種形式:①小數(shù)形式:小數(shù)形式是由數(shù)字和小數(shù)點組成的一種實數(shù)表示形式。例如0.345、123、0.0等是合法的實數(shù)。這種表示形式必須要有小數(shù)點。②指數(shù)形式:在C語言中,用“e”或“E”后跟一個整數(shù)來表示以10為底的冪數(shù)。注意:字母“e”或“E”之前必須要有數(shù)字,后面的指數(shù)必須為整數(shù)。選項B中e后必須為整數(shù),選項C沒有小數(shù)點,而選項D則出現(xiàn)非法字符*。19、若有以下函數(shù)首部intfun(doublex[10],int*n)則下面針對此函數(shù)的函數(shù)聲明語句中正確的是A、intfun(double,int);B、intfun(double*x,intn);C、intfun(double*,int*);D、intfun(doublex,int*n);標準答案:C知識點解析:函數(shù)說明的一般形式為:類型名函數(shù)名(參數(shù)類型1,參數(shù)類型2,……)。因為函數(shù)intfun(doublex[10],int*n)的第1個形式參數(shù)是一個雙精度型的一維數(shù)組,第2個參數(shù)是一個整型指針,并返回一個整型值。一維數(shù)組的名字表示的是一維數(shù)組的地址。20、下面描述錯誤的是A、模塊的獨立性與模塊的信息隱蔽和局部化無關B、內聚性和耦合性是模塊獨立程度的定性度量標準C、一個模塊的內聚性越高則該模塊的獨立性越強D、一個模塊的耦合性越高則該模塊的獨立性越弱標準答案:A知識點解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其它模塊的聯(lián)系最少且接口簡單。一般較優(yōu)秀的軟件設計,應盡量做到高內聚,低偶合,即減弱模塊之間的耦合性和提高模塊內的內聚性,有利于提高模塊的獨立性。所以選項A正確。21、有以下程序#includemain(){intx;scanf("%d",&x);if(x<=3);elseif(x!=10)printf("%d\n",x);}程序運行時,輸入的值在哪個范圍才會有輸出結果A、小于3的整數(shù)B、不等于10的整數(shù)C、大于3或等于10的整數(shù)D、大于3且不等10的整數(shù)標準答案:D知識點解析:根據(jù)代碼可知如果x的值小于3,執(zhí)行空語句,不進行打印操作,如果x的值大于3,再判斷x的值是否不等于10,如果不等于10就打印x的值,所以選擇D選項。22、有以下程序#includeintfuna(inta,intb){returna+b;}intfunb(inta,intb){returna-b;}intsss(int:(*t)(),intx,inty){return((*t)(x,y));)main(){intx;x=sss(funa,9,3);x+=sss(funb,8,3);printf("%d\n",x);}程序運行后的輸出結果是A、17B、23C、24D、22標準答案:A知識點解析:函數(shù)funa的功能計算兩個數(shù)據(jù)的和,funb的功能計算兩個數(shù)據(jù)的差,函數(shù)sss中利用指向函數(shù)的指針作為函數(shù)的參數(shù),可以在調用的時候,根據(jù)接收的函數(shù)地址來決定調用那一個函數(shù)。主函數(shù)中調用x=sss(funa,9,3),將funa函數(shù)的地址傳遞給t,因此SSS涿l數(shù)成為求兩個數(shù)據(jù)的和12,繼續(xù)將:funb函數(shù)地址傳給t,求兩個數(shù)據(jù)差為5,和s累加后結果為17。23、有以下程序main(){intij;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}A、1*1=11*2=21*3=32*1=22*2=43*1=3B、1*1=11*2=22*2=41*3=32*3=63*3:9C、1*1=11*2=21*3=32*2=42*3=63*3=9D、1*1=12*1=22*2=.43*1=33*2=63*3=9標準答案:C知識點解析:外層for循環(huán)的自變量i從1開始,每次循環(huán)后增1,直到i等于3結束。對于外層循環(huán)自變量i的每一個值,內層循環(huán)的自變量j每次從i開始,每次循環(huán)后增1,直到j等于3結束。所以在每次外循環(huán)開始后,內層循環(huán)在一行先打印i*j=兩個乘數(shù)的積,然后回車換行,下次循環(huán)從下一行開始打印輸出結果。24、若有以下程序#include<stdio.h>main(){inta=1,b=2,c=3,d=4;if((a=2)||(b=1))c=2;if((c==3)&&(d=-1))a=5;printf("%d,%d,%d,%d\n",a,b,c,d);}則程序的輸出結果是A、2,1,2,-1B、2,2,2,4C、5,1,2,-1D、1,2,3,4標準答案:B知識點解析:代碼中有兩條并列的if語句,第一條if語句執(zhí)行,(a=2)||(b=1)值為1,由于邏輯或表達式,根據(jù)其短路運算規(guī)則,a=2,b=2,即b值不變執(zhí)行if分支c=2。并列的if語句中表達式(c==3)&&(d=-1)為邏輯與表達式,c==3不成立,不考慮d=-1表達式,d為5.邏輯表達式值為0,不執(zhí)行相應if分支。25、以下敘述中正確的是()。A、三種循環(huán)for,while,do-while可以互相嵌套B、循環(huán)發(fā)生嵌套時,最多只能兩層C、循環(huán)嵌套時,如果不進行縮進形式書寫代碼,則會有編譯錯誤D、for語句的圓括號中的表達式不能都省略掉標準答案:A知識點解析:C語言中,循環(huán)嵌套可以多層,選項B)錯;循環(huán)嵌套時建議采用縮進形式書寫,這是為了增加代碼的可讀性,但是不會產生編譯錯誤,選項C)錯誤;for語句的圓括號內的三個表達式在語法上都可以省略,但是兩個分號";"不能省略,選項D)錯;選項A)的表述正確,所以答案選A)。26、有以下程序#includeintfun(charp[][10]){intn=0,i;for(i=0;i<7;i++)if(p[i][0]==’T’)n++;returnn;}main(){charstr[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};printf("%d\n",fun(str));}程序執(zhí)行后的輸出結果是A、1B、2C、3D、0標準答案:B知識點解析:此程序是統(tǒng)計一周七天中英文名稱首字母為"T"的個數(shù)。P[i][0]是字符串的首字符,一共有兩個"T",所以n=2。因此B選項正確。27、有以下程序#include<stdio.h>intfun(intx,inty)main(){if(x==y)return(x);{inta=4,b=5,c=6;elsereturn((x+y)/2);printf("%d\n",fun(2*a,fun(b,c)));}}程序運行后的輸出結果是A、3B、6C、8D、12標準答案:B知識點解析:fun(b,c)即fun(5,6),5!=6,所以返回(5+6)/2=5:fun(2*a,5)即fun(8,5),8!=5,所以返回(8+5)/2=6。28、對于一個正常運行的C程序,以下敘述中正確的是A、程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結束B、程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結束C、程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結束D、程序的執(zhí)行總是從main函數(shù)開始標準答案:D知識點解析:一個C語言源程序無論包括了多少函數(shù),在正常情況下總是從main函數(shù)開始執(zhí)行,從main函數(shù)結束。29、有以下程序#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知識點解析:在while循環(huán)中每次變量y的值減1,直到其值等于0時退出循環(huán),這時y的再減1變?yōu)椋?。30、設有定義:intx=0,*p;緊接著的賦值語句正確的是A、*p=NULL;B、p=NULL;C、p=x;D、*p=x;標準答案:B知識點解析:定義指針變量時,必須將指針變量初始化為NULL(為空),否則,如果不賦給它地址,系統(tǒng)會隨機給它分配一個地址。31、以下敘述中正確的是A、break語句不能用于提前結束for語句的本層循環(huán)B、continue語句使得整個循環(huán)終止C、使用break語句可以使流程跳出switch語句體D、在for語句中,continue與break的效果是一樣的,可以互換標準答案:C知識點解析:用break語句可以使程序流程跳出switch語句體,也可用break語句在循環(huán)結構中終止循環(huán)體,從而提前結束循環(huán),而continue語句的作用是結束本次循環(huán),即跳過本次循環(huán)體中continue語句后面的語句,立刻進行下一次的循環(huán)條件判斷,可以理解為僅結束本次循環(huán)。32、有以下程序#include<stdio.h>intfun(inta,intb){returna+b;}main(){intx=6,y=7,z=8,r;r=fun(fun(x,y),z--);printf("%d\n",r);}程序運行后的輸出結果是A、15B、21C、20D、31標準答案:B知識點解析:本題考查函數(shù)的調用,函數(shù)fun功能為求兩個數(shù)據(jù)的和。主函數(shù)中表達式r=fun(fun(x,y),z--),首先計算內層調用fun(x,y),計算結果為13,然后外層調用fun(13,8),結果為21。33、有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%d\n",a,b);}程序運行后的輸出結果是A、a=1,b=1B、a=1,b=0C、a=2,b=1D、a=2,b=2標準答案:C知識點解析:本題考查的是用switch語句實現(xiàn)多分支選擇結構,首先進入第一個switch(x)判斷,進入case1中進行嵌套判斷,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接著執(zhí)行case2,a自加為2,b自加為1,遇到break,結束循環(huán),此時a=2,b=1。34、有以下程序,程序運行后的輸出結果是#include#defineS(x)4*(x)*x+1voidmain(){intk=5,j=2;printf("%d\n",S(k+j));}A、197B、143C、33D、28標準答案:B知識點解析:這道題涉及到帶參數(shù)的宏的定義和替換這個知識點。在程序中定義了帶參數(shù)的宏S(x),當在主函數(shù)中用參數(shù)k+j調用宏S時,根據(jù)宏替換的原則,則S(k+i)=S(5+2)=4*7*5+2+1=143。35、有以下程序,程序運行后的輸出結果是main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}A、1,2,1,2B、1,2,2,1C、2,1,2,1D、2,1,1,2標準答案:B知識點解析:在主函數(shù)定義了3個整數(shù)指針變量p,q,r,并且使p指向m,q指向n,再執(zhí)行“r=p;p=q;q=r;”這三條語句,使q指向m,p指向n,再輸出變量“m,n,*p,*q”時,它們值分別為1,2,2,1。36、以下結構體類型說明和變量定義中正確的是A、typedefstruct{intn;charc;}REC;RECt1,t2;B、structREC;{intn;charc;);RECt1,t2;C、typedefstructREC;{intn=0;charc=’A’;)t1,t2;D、struct{intn;charc;}REC;RECt1,t2;標準答案:A知識點解析:定義結構體類型的一般形式為:struct結構體名{成員列表};struct結構體名后不能加“;”號,所以選項B)、C)錯誤,選項D)中定義無名稱的結構體類型同時定義結構體變量形式應為“structt1,t2;”。選項A)為用戶自定義類型,其為正確的定義形式。37、以下敘述中正確的是A、字符變量在定義時不能賦初值B、字符常量可以參與任何整數(shù)運算C、同一英文字母的大寫和小寫形式代表的是同一個字符常量D、轉義字符用"\"符號開頭標準答案:B知識點解析:A選項中,字符變量在定義時可以賦初值;C選項中,同一英文字母的大寫和小寫形式代表的是不同的字符常量;D選項中,轉義字符以反斜線"\"開頭的。因此B選項正確。38、若有定義語句:intyear=2009,*p=&year;以下不能使變量year中的值增至2010的語句是A、(*p)++;B、*p++;C、++(*p);D、*p+=1;標準答案:B知識點解析:由于自加運算符++的運算級別高于間接運算*的運算級別,所以B選項的表達式*p++不能使變量year中的值增至2010。因此B選項正確。39、若變量已正確定義,則以下語句的輸出結果是s=32;s^=32;printf("%d",s);A、-1B、0C、1D、32標準答案:B知識點解析:本題考查邏輯異或運算,異或運算只有在兩個比較的位不同時其結果是1,否則結果為0,題目中兩個值相同,所以結果為0。40、有以下程序#includeintfun(inta,intB){returna+b;}main(){intx=6,y=7,z=8,r;r=fun(fun(x,y),z--);printf("%d\n",r);}程序運行后的輸出結果是A、21B、15C、20D、31標準答案:A知識點解析:函數(shù)fun的功能是返回兩個形參的和。調用函數(shù)fun(x,y)時,將變量x=6和y=7的值分別傳送變量a和b,并且通過語句returna+b;將13返回給主函數(shù)。繼續(xù)調用函數(shù)fun(13,z--),這里z--指將z的值參與運算后,再將z的值減1操作;將13和8分別傳送變量a和b,且通過語句returna+b;將21返回給主函數(shù)。因此A選項正確。國家二級C語言機試(選擇題)模擬試卷第2套一、選擇題(本題共25題,每題1.0分,共25分。)1、在軟件開發(fā)中,需求分析階段產生的主要文檔是()。A、數(shù)據(jù)字典B、詳細設計說明書C、數(shù)據(jù)流圖說明書D、軟件需求規(guī)格說明書標準答案:D知識點解析:需求分析的最終結果是生成軟件需求規(guī)格說明書,可以為用戶、分析人員和設計人員之間的交流提供方便。2、對于長度為n的線性表,在最壞情況下,下列各排序法所對應的比較次數(shù)中正確的是A、冒泡排序為n/2B、冒泡排序為nC、快速排序為nD、快速排序為n(n.1)/2標準答案:D知識點解析:假設線性表的長度為n,則在最壞情況下,冒泡排序需要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2??焖倥判蚍ㄒ彩且环N互換類的排序方法,但由于它比冒泡排序法的速度快,因此,稱為快速排序法。3、計算機程序設計的模塊化一般是哪一項實現(xiàn)的?()A、語句B、程序行C、函數(shù)D、變量標準答案:C知識點解析:用函數(shù)作為程序模塊以實現(xiàn)C程序的模塊化,程序有多個函數(shù)構成,每個函數(shù)可以實現(xiàn)一個具體的功能,多個函數(shù)便可以實現(xiàn)程序的模塊化設計。4、有三個關系R、S和T如下:由關系R和S通過運算得到關系T,則所使用的運算為A、并B、自然連接C、笛卡爾積D、交標準答案:D知識點解析:關系R與S經(jīng)交運算后所得到的關系是由那些既在R內又在S內的有序組組成的,記為R∩S。5、以下敘述中錯誤的是A、C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件B、用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中C、C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉換成二進制的機器指令D、C語言源程序經(jīng)編譯后生成后綴為.obi的目標程序標準答案:C知識點解析:C語言中的非執(zhí)行語句例如宏定義命令,在預編譯之后替換到代碼中,該命令本身也就不存在了,不會轉換成二進制的機器指令。由高級語言編寫的程序稱為“源程序”,把由二進制代碼表示的程序稱為“目標程序”。C語言編寫的源程序就是一ASCII的形式存放在文本文件中的。C源程序經(jīng)過C編譯程序編譯之后生成一個后綴為.obj的二進制文件(稱為目標文件),然后由稱為“連接程序”(Link)的軟件,把此.obj文件與C語言提供的各種庫函數(shù)連接起來生成一個后綴為.EXE的可執(zhí)行文件。6、有以下程序:#include<stdio.h>main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(’’%d\n’’,s);}程序的運行結果是()。A、20B、25C、45D、36標準答案:B知識點解析:統(tǒng)計1~9這9個數(shù)中的奇數(shù)和,此題考查指向數(shù)組的指針。C語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個元素的地址,因此*(t+i)代表數(shù)組的第i+1個元素。程序的運行結果是1+3+5+7+9=25。7、計算機能直接執(zhí)行的程序是A、目標程序B、可執(zhí)行程序C、匯編程序D、源程序標準答案:B知識點解析:把由高級語言編寫的程序稱為“源程序”,由二進制代碼表示的程序稱為“目標程序”(后綴名為.obj),由匯編語言編寫的程序稱為“匯編程序”。為了把源程序轉換成機器能接受的目標程序,軟件工作者編制了一系列軟件,通過這些軟件可以把用戶按規(guī)定語法寫出的語句——翻譯成二進制的機器指令。這種具有翻譯功能的軟件稱為“編譯程序”,每種高級語言都有與它對應的編譯程序。C源程序經(jīng)過C編譯程序編譯之后生成一個后綴為.obj的二制進文件(稱為目標文件),這個目標程序要和C語言的庫函數(shù)相鏈接生成一個后綴為.exe的文件,這個文件可以在操作系統(tǒng)中直接執(zhí)行,稱為可執(zhí)行程序。8、下面屬于系統(tǒng)軟件的是A、Oracle數(shù)據(jù)庫管理系統(tǒng)B、人事管理系統(tǒng)C、WPS編輯軟件D、殺毒軟件標準答案:A知識點解析:一般來講,系統(tǒng)軟件包括操作系統(tǒng)和一系列基本的工具(比如編譯器,數(shù)據(jù)庫管理,存儲器格式化,文件系統(tǒng)管理,用戶身份驗證,驅動管理,網(wǎng)絡連接等方面的工具),是支持計算機系統(tǒng)正常運行并實現(xiàn)用戶操作的那部分軟件。所以Oracle數(shù)據(jù)庫管理系統(tǒng)是系統(tǒng)軟件。9、有以下程序#includemain(){inta=0,b=0;/*給a賦值a=10:b=20;給b賦值*/printf("a+b=%d\n",a+b);/*輸出計算結果*/}程序運行后的輸出結果是A、a+b=30B、a+b=10C、出錯D、a+b=0標準答案:D知識點解析:C語言規(guī)定,在字符“/*”和其后緊跟的第一個字符“*/”中間的部分是注釋內容,且注釋部分的內容不參與程序的編譯和運行,因此,本題中程序語句“a=10;b=20;”沒有執(zhí)行。10、若有以下程序,則程序的輸出結果是#includemain(){inta=0,b=0,c=0;c=(a-=++A),(a+=b,b+=4);printf("%d,%d,%d\n",a,b,c);}A、0,4,4B、1,4,1C、0,4,0D、1,4,4標準答案:C知識點解析:表達式c=(a-=++a),(a+=b,b+=4)相當于逗號表達式,首先計算c=(a-=++a),其中a-=++a)等價于a=a-(++a),得到a的值0,c的值為0,在計算(a+=b,b+=4)時,a和b的初值為0,計算以后,a為0,b為4。11、以下選項中,合法的一組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ù)lO,000的表示形式是錯誤的。12、以下敘述中正確的是A、語句“charstr[10]="string!";”和“charstr[10]={"string!"};”并不等價B、對于一維字符數(shù)組,不能使用字符串常量來賦初值C、對于字符串常量“string!”,系統(tǒng)已自動在最后加入了“’\0’”字符,表示串結尾D、在語句charstr[1]="string!";中,數(shù)組str的大小等于字符串的長度標準答案:C知識點解析:在C語言中,字符串是借助于字符型一維數(shù)組來存放的,可以借助在定義時初始化以及輸入來把字符串存入數(shù)組,并規(guī)定以字符’\0’作為“字符串結束標志”?!?’是一個轉義字符,稱為空值,它的ASCII碼值為0?!?’作為標志占用存儲空間,但不計入字符串的實際長度。在C語言中,系統(tǒng)在每個字符串的最后自動加入一個字符(’\0’)作為字符串的結束標志。13、若有以下程序#include<stdio.h>main(){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。14、以下敘述中錯誤的是A、typedef的作用是用一個新的標識符來代表已存在的類型名B、typedef說明的新類型名必須使用大寫字母,否則會出編譯錯誤C、可以用typedef說明的新類型名來定義變量D、用typedef可以說明一種新的類型名標準答案:B知識點解析:typedef語句的作用僅僅是用“標識符”來代表已存在的“類型名”,并未產生新的數(shù)據(jù)類型,原來類型名依然有效。為了便于識別,一般習慣將新的類型名用大寫字母表示。15、有以下程序#includemain(){inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運行結果是A、963B、852C、741D、875421標準答案:B知識點解析:y的值的初值為9,所以在for循環(huán)中,當y的值為9、6或3時,if語句的條件成立,執(zhí)行輸出語句,輸出表達式--y的值。因為自減符號在y的前面,所以首先y的自減1,然后再輸出v的值,故輸出結果為852。16、若有以下程序intf(inta[],intn)main(){if(n>1){inta[]={8,2,9,1,3,6,4,7,5};{intt;t=f(a,n-1);printf("%d\n",f(a,9));returnt>a[n-1]?t:a[n—1];}}elsereturna[0];}則程序的輸出結果是A、9B、1C、8D、5標準答案:A知識點解析:主函數(shù)中調用f(a,9),遞歸函數(shù)的調用過程如下: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。17、設變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式中正確的是(注:□代表空格字符)A、10□X20□YB、10□X20□YC、10X20YD、10□X□20□Y標準答案:C知識點解析:暫無解析18、有以下程序#includemain(){intaa[3][3]={{2},{4},{6}},i,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}程序運行后的輸出結果是A、26B、23C、43D、46標準答案:B知識點解析:觀察題目,可以發(fā)現(xiàn),*p=&aa[0][0]語句實際是將數(shù)組aa的首地址賦給了指針變量p,將i的值帶入for循環(huán)中,i=0時,aa[0][1]=3,*p=2;*p輸出的是指針所指向的數(shù)組值,此時p所指向的是aa[0][0],輸出2,而i=1時執(zhí)行了++p操作使指針向后移動指向了aa[0][1],所以在輸出*p時應為3。因此B選項正確。19、若有定義語句:inta[2][3],*p[3];,則以下語句中正確的是A、p=a;B、p[0]=a;C、p[0]=a[1][2];D、p[1]=a;標準答案:C知識點解析:本題考查多維數(shù)組和數(shù)組指針。a是一個二維數(shù)組,p是一個指針數(shù)組,該數(shù)組有3個元素,每個元素都是一個指向整型對象的指針。選項A)錯誤,等號的左邊是一個數(shù)組地址,不是變量:選項B)數(shù)據(jù)類型不匹配,p[0]是指向一個整型對象,而a是一個二維數(shù)組首地址:選項C)正確,是把元素a[1][2]賦值給p[0];選項D)和選項B)一樣屬于數(shù)據(jù)類型不匹配,p[1]是指向一個整型對象,而a是一個二維數(shù)組首地址。20、有以下程序main(){inta[5]={2,4,6,8,10},*p,**k;p=a;k=&p;printf("%d",*(p++));printf("%d\n",**k);}程序運行后的輸出結果是A、44B、24C、22D、46標準答案:B知識點解析:主函數(shù)中指針變量p指向數(shù)組a中下標為0的元素,k指向P,那么*(p++)的值為2,p指向數(shù)組中下標為1的元素,k指向P,所以**k的值為4。21、有三個關系R、S和T如下:則由關系R和S得到關系T的操作是A、選擇B、差C、交D、并標準答案:B知識點解析:關系T是關系R的一部分,并且是關系R去掉R和S相同的元素,符合差操作。22、有以下程序#include<stdio.h>main(){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、28cB、abc28C、abcD、因類型不一致而出錯標準答案:B知識點解析:存程序中首先把字符串abc寫入到文件myfile.dat中,然后再把整數(shù)28追加到字符串abc的后面,最后把文件myfile.dat的內容讀入到字符串str中,并把其內容輸出。23、以下敘述中正確的是A、每個后綴為.C的C語言源程序都可以單獨進行編譯B、每個后綴為.C的C語言源程序都應該包含一個main函數(shù)C、在C語言程序中,main函數(shù)必須放在其他函數(shù)的最前面D、在C語言程序中,只有main函數(shù)才可單獨進行編譯標準答案:A知識點解析:一個普通的C函數(shù)可以單獨作為一個C的程序文件存在被包含到其他程序中,每個后綴為.C的C語言源程序都可以單獨進行編譯,所以B、D錯誤,main函數(shù)可以放在程序的開始,中間,最后,所以C錯誤。24、以下選項中不合法的標識符是()。A、&aB、FORC、printD、00標準答案:A知識點解析:C語言中標識符由字母、下劃線、數(shù)字組成,且開頭必須是字母或下劃線。另外,關鍵字不能作為標識符。因為C語言中區(qū)分大小寫,所以B)選項中的"FOR"可以作為標識符來用。A)選項中含有非法字符&,所以選擇A)。25、下列敘述中正確的是A、循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結構B、在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況C、在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況D、循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定標準答案:D知識點解析:循環(huán)隊列有隊頭和隊尾兩個指針,但是循環(huán)隊列仍是線性結構的,所以A錯誤;在循環(huán)隊列中只需要隊頭指針與隊尾兩個指針來共同反映隊列中元素的動態(tài)變化情況,所以B與C錯誤。國家二級C語言機試(選擇題)模擬試卷第3套一、選擇題(本題共25題,每題1.0分,共25分。)1、在數(shù)據(jù)處理中,其處理的最小單位是()。A、數(shù)據(jù)B、數(shù)據(jù)項C、數(shù)據(jù)結構D、數(shù)據(jù)元素標準答案:B知識點解析:數(shù)據(jù)元素是由多個數(shù)據(jù)項組成,數(shù)據(jù)是能夠被計算機識別、存儲和加工處理的信息載體,數(shù)據(jù)處理的最小單位是數(shù)據(jù)項。2、結構化程序的三種基本控制結構是()。A、順序、選擇和調用B、過程、子程序和分程序C、順序、選擇和重復(循環(huán))D、調用、返回和轉移標準答案:C知識點解析:1966年Boehm和Jacopini證明了程序設計語言僅僅使用順序、選擇和重復三種基本控制結構就足以表達出各種其他形式結構的程序設計方法。3、設樹T的深度為4,其中度為1,2,3,4的結點個數(shù)分別為4,2,1,1。則T中的葉子結點數(shù)為A、8B、7C、6D、5標準答案:B知識點解析:深度為m二叉樹其總結點數(shù)為2m-1=24-1=15??偨Y點數(shù)減去度為1,2,3,4的結點個數(shù)就是葉子結點數(shù)。15-4-2-1-1=7。4、下列排序方法中,最壞情況下比較次數(shù)最少的是A、冒泡排序B、簡單選擇排序C、直接插入排序D、堆排序標準答案:D知識點解析:冒泡排序、簡單選擇排序和直接插入排序法在最壞的情況下比較次數(shù)為:n(n-1)/2。而堆排序法在最壞的情況下需要比較的次數(shù)為O(nlog2n)。其中堆排序的比較次數(shù)最少。5、下面不屬于軟件設計階段任務的是A、軟件總體設計B、算法設計C、制定軟件確認測試計劃D、數(shù)據(jù)庫設計標準答案:C知識點解析:軟件設計階段總體分為兩部分:概要設計和詳細設計,此階段的主要任務就是將需求規(guī)格說明文檔轉換為軟件設計文檔,將需求階段提出的問題,一一解釋,形成詳細設計文檔,并根據(jù)功能要求,定制相應數(shù)據(jù)結構、各種流程圖等,為下一步編碼做準備。6、下面描述中,不屬于軟件危機表現(xiàn)的是A、軟件過程不規(guī)范B、軟件開發(fā)生產率低C、軟件質量難以控制D、軟件成本不斷提高標準答案:A知識點解析:軟件危機主要表現(xiàn)在以下6個方面:①軟件需求的增長得不到滿足;②軟件開發(fā)成本和進度無法控制;③軟件質量難以保證;④軟件不可維護或維護程度非常低;⑤軟件的成本不斷提高;⑥軟件開發(fā)生產率的提高趕不上硬件的發(fā)展和應用需求的增長。7、軟件工程的三要素是()。A、方法、工具和過程B、建模、方法和工具C、建模、方法和過程D、定義、方法和過程標準答案:A知識點解析:軟件工程的三要素是方法、工具和過程,答案選A。8、帶鏈??盏臈l件是A、top=bottom=NULLB、top=-1且bottom=NULLC、top=NULL且bottom-1D、top=bottom=-1標準答案:A知識點解析:棧的鏈式存儲結構稱為鏈棧。在鏈棧中,只會出現(xiàn)??蘸头强諆煞N狀態(tài)。當棧為空時,有top=bottom=NULL;當棧非空時,top指向鏈表的第一個結點(棧頂)。所以選項A正確。9、軟件調試的目的是A、發(fā)現(xiàn)錯誤B、改正錯誤C、改善軟件的性能D、驗證軟件的正確性標準答案:B知識點解析:軟件調試的任務是診斷和改正程序中的錯誤。程序調試活動由兩部分組成,一是根據(jù)錯誤的跡象確定程序中的錯誤的確切性質、原因和位置。二是對程序進行修改,排除這個錯誤。10、設有定義:inta=1,b=2,c=3;以下語句中執(zhí)行效果與其它三個不同的是A、if(a>b)c=a;a=b;b=c;B、if(a>b){c=a,a=b,b=c;}C、if(a>b)c=a,a=b,b=c;D、if(a>b){c=a;a=b;b=c;}標準答案:A知識點解析:在C語言中,用分號表示一條語句的結束,用{}把幾條語句放在一塊表示一個語句塊,其整體表示一個功能。因而在題目給出的四個選項中,選項B、C、D表示的功能相同,而選項A表示的是一條if語句,兩條賦值語句。11、以下關于結構化程序設計的敘述中正確的是A、結構化程序使用goto語句會很便捷B、一個結構化程序必須同時由順序、分支、循環(huán)三種結構組成C、由三種基本結構構成的程序只能解決小規(guī)模的問題D、在C語言中,程序的模塊化是利用函數(shù)實現(xiàn)的標準答案:D知識點解析:C語言是結構化程序設計語言,順序結構、選擇結構、循環(huán)結構是結構化程序設計的三種基本結構,研究證明任何程序都可以由這三種基本結構組成。但是程序可以包含一種或者幾種結構,不是必須包含全部三種結構。自從提倡結構化設計以來,goto就成了有爭議的語句。首先,由于goto語句可以靈活跳轉,如果不加限制,它的確會破壞結構化設計風格。其次,goto語句經(jīng)常帶來錯誤或隱患。它可能跳過了某些對象的構造、變量的初始化、重要的計算等語句。Goto語句的使用會使程序容易發(fā)生錯誤并且也不易閱讀,所以應避免使用。由三種基本結構構成的程序幾乎能解決大部分問題。12、有以下程序:#includemain(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(“d1.dat”,”W”);for(i=0;i<3;i++)fprintf(fp,“%d”,a[i]);fprintf(fp,“\n”);felose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d”,&n);fclose(fp);printf(“%d\n”,n);}程序的運行結果是()。A、321B、12300C、1D、123標準答案:D知識點解析:程序首先將數(shù)組a[10]中的元素1、2、3分別寫入了文件d1.dat文件中,然后又將d1.dat文件中的數(shù)據(jù)123整體寫到變量n的空間中,所以打印n時輸出的數(shù)據(jù)為123。13、表達式:(int)((double)9/2)-9%2的值是A、0B、4C、3D、5標準答案:C知識點解析:這個表達式的計算過程為,首先求出9除以2的商等于4,再把其強制轉化為實型數(shù)據(jù)為4.0,然后再強制轉4,減去9對2求余數(shù)1,得到其結果等于3。14、以下能正確定義字符串的語句是A、charstr="\x43";B、charstr[]="\0";C、charstr=";D、charstr[]={’\064’};標準答案:B知識點解析:字符串常量是用一對雙括號括起來的一串字符。它用字符數(shù)組來存放,不用一對大括號對括起來。15、若有以下程序#includemain(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%d\n",r);}則程序的輸出結果是A、10B、6C、7D、3標準答案:C知識點解析:程序代碼中有四條并列的if語句,第一條if表達式a!_l不成立,執(zhí)行else分支,r=l;第二條if表達式b==2成立,執(zhí)行r+=2,r==3;第三條if語句c!=3不成立,執(zhí)行else分支,分支為空語句;第四條if分支d==4成立,執(zhí)行該if分支語句,r+=4,r=7。16、以下不合法的字符常量是A、’\"’B、’\\’C、’\018’D、’\xcc’標準答案:C知識點解析:在C語言中,一個字符常量代表ASCII字符集中的一個字符,在程序中用單引號把一個字符括起來用為字符常量。轉義字符常量也是必須括在一對單引號內,以一個反斜線開頭后跟一個特定的字符,用來代表某一個特定的ASCII字符。在選項C)中,’\018’是用八進制數(shù)來代表一個字符常量,所以其中的數(shù)字只能小于8,并不包括8。17、有以下程序main(){inti=5;do{if(i%3=1)if(i%5==2){printf("**%d",i);break;}i++;}while(i!=0);printf("\n");}程序的運行結果是A、*3*5B、*5C、*7D、*2*6標準答案:C知識點解析:由于循環(huán)變量i的初值等于5,所以第一、二次進入do....while循環(huán)語句時,條件語句if(i%3==1),if(i%5==2){printf(“*%d”,i);break;}不執(zhí)行,只執(zhí)行i++語句。當i=7時,滿足條件語句if(i%3==1),if(i%5==2){printf("*%d",i);break;},所以輸出*7,結束循環(huán)。18、有以下程序#include<stdio.h>intfun(){staticintx=1;main(){inti,s=1;x+=1;for(i=1;i<=5;i++)s+=fun();returnx;}printf("%d\n",s);}程序運行后的輸出結果是A、11B、21C、6D、120標準答案:B知識點解析:這道試題主要考查了局部靜態(tài)變量的應用。在函數(shù)fun()中定義了局部靜態(tài)變量整型x,其初值等于1,在主函數(shù)中循環(huán)執(zhí)行5次,第一次變量s的值等于3.變量x的值等于2,第二次變量s的值等于6,變量x的值等于3,第三次變量s的值等于10,變量x的值等于4,第四次變量s的值等于15,變量x的值等于5,第五次變量s的值等于21,變量x的值等于6。19、以下敘述中正確的是A、函數(shù)既可以直接調用自己,也可以間接調用自己B、任何情況下都不能用函數(shù)名作為實參C、函數(shù)的遞歸調用不需要額外開銷,所以效率很高D、簡單遞歸不需要明確的結束遞歸的條件標準答案:A知識點解析:一個C語言源程序可以由一個或多個源文件組成,每個源文件可由一個或多個函數(shù)組成,各函數(shù)之間是平行的,除了主函數(shù)外,函數(shù)之間可以相互調用,甚至C語言中的函數(shù)可以直接或間接地自己調用自己,稱之為遞歸調用,該調用主要用于把要解決的問題轉化為一個新的問題,而這個新問題的解決方法仍與原來的解法相同,只是所處理的對象有規(guī)律地遞增或遞減,可以應用這個轉化過程使問題得到解決,同時為了有效使用遞歸調用必定要有一個明確的結束遞歸的條件。而每次進行遞歸調用時候,需要利用棧保存現(xiàn)場信息,因此并不會提高效率,選項C和選項D不正確。函數(shù)名表名了函數(shù)的入口地址,如果函數(shù)的形參為指向函數(shù)的指針變量,那么對應的實參必須為函數(shù)名,因此函數(shù)名可以為函數(shù)的參數(shù),選項B錯誤。20、若有以下程序#includemain(){intc;c=13|5;printf("%d\n",c);}則程序的輸出結果是A、13B、15C、18D、5標準答案:A知識點解析:本題考查位運算中按位或運算符,或運算只要兩個比較的位中有一個為1,其結果是1,否則結果為0,,13用二進制表示為00001101,5用二進制表示為00000101,或后00001101,即13,選項A正確。21、以下敘述中正確的是A、在scanf函數(shù)中的格式控制字符串是為了輸入數(shù)據(jù)用的,不會輸出到屏幕上B、在使用scanf函數(shù)輸入整數(shù)或實數(shù)時,輸入數(shù)據(jù)之間只能用空格來分隔C、在printf函數(shù)中,各個輸出項只能是變量D、使用printf函數(shù)無法輸出百分號%標準答案:A知識點解析:scanf函數(shù)中的格式控制字符串是為了輸入數(shù)據(jù)用的,無論其中有什么字符,也不會輸出到屏幕上,因此若想在屏幕上輸出提示信息,應該首先使用printf函數(shù)輸出,選項A正確;在使用scanf函數(shù)輸入整數(shù)或實數(shù)時,輸入數(shù)據(jù)之間可以用空格、跳格、回車來分隔,選項B錯誤;printf輸出項不但可以為變量,還可以表達式或者常量,選項C錯誤;如果要輸出“%”,可以在格式控制中用“%%”表示,將輸出一個“%”,選項D錯誤。22、有下列程序:#include<stdio.h>#include<string.h>typedefstruct{charname[9];charsex;floatscore[2];}STU;STUf(STUa){STUb={"Zhao",’m’,85.0,90.0};inti;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];returna;}main(){STUc={"QA、Qian,m,85,90B、Zhao,f,95,92C、Zhao,m,85,90D、Qian,f,95,92標準答案:D知識點解析:f()函數(shù)的功能是對形參a的各個成員用結構體變量b的各個成員進行賦值后,然后返回變量a。在主函數(shù)中調用f(c)函數(shù)時,將STU類型的結構體變量c的值傳遞給形參a,函數(shù)f()在對a的各個成員進行重新賦值后,再將返回變量a的值傳給d,最后輸出結構變量d的各個成員的值。23、有以下程序#incllldeintfun(chars[])main(){intn=0;{chars[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};while(*s<=’9’&&*s>=’0’)printf("%d\n",fun(s));{n=10*n+*s-’0’;s++;}}return(n);}程序的運行結果是A、61490B、61C、9D、5標準答案:B知識點解析:在fun函數(shù)中,while循環(huán)的功能是逐個取字符數(shù)組s的字符判斷其是否是數(shù)字。若是則將這些數(shù)字組成一個數(shù)保存到變量n中,并返回變量n的值。所以在主函數(shù)中調用fun(s)時,將把字符數(shù)組s中的數(shù)字組成一個數(shù)輸出。因為當指針s指向數(shù)組的第3位時,即字符件’*’,循環(huán)條件不成立,循環(huán)結束,返回n的值。所以輸出n的值為61。24、有以下程序#includemain(){chara=4;printf("%d\n",a=a<<1);}A、8B、16C、40D、4標準答案:A知識點解析:本題主要考查按位右移運算。a=4的二進制為00000100,a<<1后為00001000,其值為十進制數(shù)值8。25、有下列程序#include<stdio.h>main(){char*P="6938";inti,s=0;for(i=3;i>=0;i--)s=10*s+p[i]-’0’;printf("%d\n",s);}程序運行后的輸出結果是()。A、8396B、6938C、3869D、3689標準答案:A知識點解析:程序首先定義一個字符指針p,指向一個字符串“6938”,然后通過for循環(huán)使用逆序的方式遍歷字符串的各個字符,并將各個字符當作整數(shù)參與算術運算,其中p[i]-‘0’含義是將字符串中的數(shù)字字符轉換成對應的整數(shù);10*s是將上一次運算結果乘以10后與轉換后的整數(shù)相加,再累加到s中,所以for循環(huán)執(zhí)行完后,s的值是將字符串“6938”逆序后當作整數(shù)輸出,本題答案為A。國家二級C語言機試(選擇題)模擬試卷第4套一、選擇題(本題共25題,每題1.0分,共25分。)1、深度為5的完全二叉樹的結點數(shù)不可能是()。A、15B、16C、17D、18標準答案:A知識點解析:對于滿二叉樹,葉子結點的數(shù)目等于2n—1,n為深度,這里就是24=16。2、設棧的存儲空間為S(1:m),初始狀態(tài)為top=m+1。經(jīng)過一系列入棧與退棧操作后,top=m?,F(xiàn)又在棧中退出一個元素后,棧頂指針top值為()。A、0B、m-1C、m+1D、產生??斟e誤標準答案:C知識點解析:棧的順序存儲空間為S(1:m),初始狀態(tài)top=m+1,所以這個棧是m在棧底(也可理解為開口向下的棧)。經(jīng)過一系列入棧與退棧操作后top=m,則棧中有1個元素,若現(xiàn)在又退出一個元素,那么棧頂指針下移一位,回到m+1的位置。3、以下敘述中正確的是A、C程序書寫格式嚴格,要求一行內只能寫一個語句B、C程序書寫格式自由,一個語句可以寫在多行上C、C程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面D、用C語言編寫的程序只能放在一個程序文件中標準答案:B知識點解析:本題主要考查的足C語言結構中的源程序書寫格式這個知識點,在C語言中注釋部分對程序的運行結果不產生任何影響,它可以出現(xiàn)在任意位置;c語言書寫自由,一行內可以寫多個語句,一個語句可以寫在多行上;由于C語言編寫的程序有很好的移植性,可以放在多個程序文件中。4、某二叉樹共有12個結點,其中葉子結點只有1個。則該二叉樹的深度為(根結點在第1層)A、3B、6C、8D、12標準答案:D知識點解析:根據(jù)二叉樹的性質,度為0的結點(即葉子結點)總是比度為2的結點多一個。題目中的二叉樹的葉子結點為1,因此度為2的結點的數(shù)目為0,故該二叉樹為12層,每層只有一個結點。5、請閱讀程序:#include<math.h>#include<stdio.h>main(){floata,b,c;scanf("%f%f",&a,&b);c=a/b;while(1){if(fabs(c)>1.6){a=b;b=c;c=a/b;}elsebreak;}printf("%f\n",b);}若運行時從鍵盤上輸入3.62.4<回車>,則輸出結果是()。A、1.500000B、1.600000C、2.000000D、2.400000標準答案:D知識點解析:本題考查甩break語句終止循環(huán)。程序中定義了兩個實型變量a、b,并給scanf()函數(shù)賦值,鍵盤輸入3.62.4<回車>后,a=3.6,b=2.4,c=a/b=3.6/2.4=1.5,因為c=1.5<1.6,退出循環(huán),輸出b的原值。表面上看,while(1)條件恒為真,將會產生死循環(huán),但利用break語句可以終止循環(huán)。6、下列敘述中正確的是()。A、數(shù)據(jù)庫系統(tǒng)避免了一切冗余B、數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余C、數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致D、數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)標準答案:B知識點解析:數(shù)據(jù)庫系統(tǒng)共享性大,冗余度小,但只是減少了冗余,并不是避免一切冗余。數(shù)據(jù)的一致性是指在系統(tǒng)中同一數(shù)據(jù)在不同位置的出現(xiàn)應保持相同的值,而不是數(shù)據(jù)類型的一致。數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)有更強的管理控制能力,而不是管理更多的數(shù)據(jù)。7、下面描述中錯誤的是()。A、系統(tǒng)總體結構圖支持軟件系統(tǒng)的詳細設計B、軟件設計是將軟件需求轉換為軟件表示的過程C、數(shù)據(jù)結構與數(shù)據(jù)庫設計是軟件設計的任務之一D、PAD圖是軟件詳細設計的表示工具標準答案:A知識點解析:軟件設計是將軟件需求轉換為軟件表示的過程;數(shù)據(jù)結構與數(shù)據(jù)庫設計是軟件設計的任務之一;PAD圖,即問題分析圖,是一種主要用于描述軟件詳細設計的圖形工具。8、有以下程序#includemain(){inta1,a2;charc1,c2;scanf(’’%d%c%d%c’’,&al,&c1,&a2,&c2);printf(’’%d,%c,%d,%c’’,a1,c1,a2,c2);}若想通過鍵盤輸入,使得a1的值為12,a2的值為34,cl的值為字符a,c2的值為字符b,程序輸出結果是:12,a,34,b則正確的輸入格式是(以下□代表空格,代表回車)A、12□a□34□bB、12,a,34,bC、12a34bD、12□a34□b標準答案:C知識點解析:本題考查scanf語句。scanf()函數(shù)是格式化輸入函數(shù),它從標準輸入設備(鍵盤)讀取輸入的信息。其調用格式為:scanff”<格式化字符串>”,<地址表>)格式化字符串包括以下3類不同的字符;①格式化說明符:格式化說明符與前而用的printf()函數(shù)中的格式說明符基本相同。②空白字符:空白字符會使scanff)函數(shù)在讀操作中略去輸入中的一個或多個空白字符。③非空白字符:一個非空白字符會使scanff()函數(shù)在讀入時剔除掉與這個非空白字符相同的字符。由于在scanf函數(shù)中,幾個變量之間沒有任何間隔,所以輸入的時候,也同樣不應該有間隔。9、設有定義:doublea[10],*s=a;,以下能夠代表數(shù)組元素a[3]的是()。A、(*s)[3]B、*(s+3)C、*s[3]D、*s+3標準答案:B知識點解析:題中,首先定義了double型的數(shù)組a,并將數(shù)組首地址賦給指針s。s[3]能夠表示a[3],故選項A、C不能表示a[3];選項D的*s+3=a[0]+3。故本題答案為B選項。10、有以下程序#includeintflintx,inty){return((y-x)*x);}main()finta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf("%d\n",d);}程序運行后的輸出結果是A、10B、8C、9D、7標準答案:C知識點解析:本題考查函數(shù)的嵌套調用。首先計算f(a,b)與f(a,c),f(a,b)=(b—a)*a=3,f(a,c)=(c-a)*a=6,然后計算f(3,6)=(6—3)*3=9。11、以下程序的輸出結果是()。#includevoidfun(char**P){++p;printf(’’%sh’’,*P);}main(){char*a[]={’’Morning’’,’’Afternoon’’,’’Evening’’,’’Night’’);fun(a);}A、MorningB、fternoonC、orningD、Afternoon標準答案:D知識點解析:題目中指針的指針變量a和p都是指向字符串的指針。執(zhí)行fun(a)語句時,p指向的是字符串數(shù)組a的第一個字符串“Morning”,p自加1之后,*p指向了字符串數(shù)組a的第2個字符串“Afternoon”。12、有以下程序#include<stdio.h>#deftneN2#defineMN+1#defineNUM(M+1)*M/2main(){printf(’’%d\n’’,NUM);)程序運行后的輸出結果是A、4B、8C、9D、6標準答案:B知識點解析:宏展開以后NuM為(2+1+1)*2+1/2,計算以后值為8。注意在進行宏展開的時候,千萬不要試圖計算,展開以后再進行計算。13、設變量均已正確定義,若要通過scanf(”%d%c%d%c”,&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式中正確的是(注:口代表空格字符)A、10口X20口YB、10口X20口YC、10X20YD、10口X口20口Y標準答案:C知識點解析:在使用scanf函數(shù)進行輸入數(shù)據(jù)時,輸入的數(shù)據(jù)之間必須用空格、回車符、制表符(Tab鍵)等間隔符隔開,但是空格為合法的字符型數(shù)據(jù)的輸入。而按照格式符"%d%c%d%c"說明,數(shù)值型數(shù)據(jù)和字符數(shù)據(jù)輸入之間不要加入空格間隔,而字符型數(shù)據(jù)和數(shù)值型數(shù)據(jù)的輸入?yún)s可以加入任意的空格,回車和跳格。14、下列敘述中正確的是A、在switch語句中必須使用defaultB、break語句必須與switch語句中的case配對使用C、在switch語句中,不一定使用break語句D、break語句只能用于switch語句標準答案:C知識點解析:break為C語言關鍵字,又稱間斷語句。break語句的功能是跳出正在執(zhí)行的條件語句或循環(huán)語句。它可以出現(xiàn)在switch語句中,也可以出現(xiàn)在循環(huán)語句中。defauh是關鍵字,起標號的作用,代表所有case標號之外的那些標號。default標號可以出現(xiàn)在語句體中任何標號位置上。在switch語句體中也可以沒有default標號。15、若以下選項中的變量a,b,y均己正確定義并賦值,則語法正確的switch語句是A、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}B、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}C、switch(a+9){casea:y=a-b:caseb:y=a+b:}D、switcha*b{case10:y=a+b;default:y=a-b;}標準答案:A知識點解析:使用switch語句直接處理多個分支,其一般形式為:switch(表達式){case常量表達式1:語句1:break;case常量表達式n:語句n:break;defauh:語句n+1;break;}switch語句的執(zhí)行流程是:首先計算switch后面圓括號中表達式的值,然后用此值依次與各個case的常量表達式比較,若圓括號中表達式的值與某個case后面的常量表達式的值相等,就執(zhí)行此case后面的語句,執(zhí)行后遇break語句就退出switch語句;若圓括號中表達式的值與所有case后面的常量表達式都不等,則執(zhí)行default后面的語句n+1,然后退出switch語句。對于選項B),case語句和常量之問沒有空格,而選項C)中的case后面為變量.選項D)中switch后面沒給出圓括號。16、有以下程序main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}執(zhí)行后的輸出結果是A、24B、5C、32D、40標準答案:C知識點解析:在for循環(huán)體中,首先判斷自變量i能否被5整除,然后再自加兩次,最后判斷i能否被8整除。當for循環(huán)執(zhí)行到第30次時,i的值為30能被5整除,然后i經(jīng)過兩次自加1運算,值變?yōu)?2,能被8整除,故執(zhí)行“printf("%d",i);”語句,即輸出32。17、以下敘述中錯誤的是A、算法正確的程序最終一定會結束B、算法正確的程序可以有零個輸入C、算法正確的程序可以有零個輸出D、算法正確的程序對于相同的輸入一定有相同的結果標準答案:C知識點解析:算法是指為解決某個特定問題而采取的確定且有限的步驟。一個算法應該具有以下5個特征:①有窮性。一個算法包含的操作步驟應該是有限的。也就是說,在執(zhí)行若干個操作步驟之后,算法將結束,而且每一步都在合理的時間內完成。②確定性。算法中的每一條指令必須有確切的含義,不能有二義性,對于相同的輸入必能得出相同的執(zhí)行結果。③可行性。算法中指定的操作,都可以通過已經(jīng)驗證過可以實現(xiàn)的基本運算執(zhí)行有限次后實現(xiàn)。④有零個或多個輸入。在計算機上實現(xiàn)的算法是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版房地產項目融資補充協(xié)議合同樣本3篇
- 二零二五年度別墅建筑節(jié)能與可再生能源利用合同3篇
- 2025年運動鞋類品牌授權區(qū)域代理合同2篇
- 二零二五年酒店式公寓開荒保潔驗收規(guī)范合同3篇
- 二零二四團購協(xié)議書:汽車團購服務合同3篇
- 2025年度園林綠化苗木種植與養(yǎng)護服務合同4篇
- 二零二五年度企業(yè)食堂檔口租賃合同與員工餐飲安全知識普及協(xié)議
- 二零二五不銹鋼欄桿綠色生產與環(huán)保認證合同3篇
- 二零二五年度酒店泊車服務合同版
- 二零二五年度智慧城市建設車位投資合作合同
- 優(yōu)秀支行行長推薦材料
- 公司設備轉讓合同協(xié)議書
- 2023年全國統(tǒng)一建筑工程預算工程量計算規(guī)則完整版
- 教科版四年級科學下冊第三單元巖石與土壤4.制作巖石和礦物標本(教學設計)教案
- 大學《工程力學》期末考試試題庫含詳細答案
- 2022年湖北省武漢市中考數(shù)學試卷含解析
- TLFSA 003-2020 危害分析與關鍵控制點(HACCP)體系調味面制品生產企業(yè)要求
- LY/T 2244.3-2014自然保護區(qū)保護成效評估技術導則第3部分:景觀保護
- 紀律教育月批評與自我批評五篇
- GB/T 26480-2011閥門的檢驗和試驗
- GB/T 13342-2007船用往復式液壓缸通用技術條件
評論
0/150
提交評論