![c語言選擇題庫_第1頁](http://file4.renrendoc.com/view/e6e2a53151b9d8b04a842e6a95689852/e6e2a53151b9d8b04a842e6a956898521.gif)
![c語言選擇題庫_第2頁](http://file4.renrendoc.com/view/e6e2a53151b9d8b04a842e6a95689852/e6e2a53151b9d8b04a842e6a956898522.gif)
![c語言選擇題庫_第3頁](http://file4.renrendoc.com/view/e6e2a53151b9d8b04a842e6a95689852/e6e2a53151b9d8b04a842e6a956898523.gif)
![c語言選擇題庫_第4頁](http://file4.renrendoc.com/view/e6e2a53151b9d8b04a842e6a95689852/e6e2a53151b9d8b04a842e6a956898524.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
無紙化選擇1.程序流程圖中帶有箭頭的線段表示的是(C)?A)圖兀關(guān)系B)數(shù)據(jù)流C)控制流D)調(diào)用關(guān)系.結(jié)構(gòu)化程序設(shè)計(jì)的基本原則不包括(A)〇A)多態(tài)性B)自頂向下C)模塊化D)逐步求精.軟件設(shè)計(jì)中模塊劃分應(yīng)遵循的準(zhǔn)則是(B)〇A)低內(nèi)聚低耦合B)高內(nèi)聚低耦合〇低內(nèi)聚高耦合D)高內(nèi)聚高耦合.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是(B).A)可行性分析報告B)軟件需求規(guī)格說明書〇概要設(shè)計(jì)說明書D)集成測試計(jì)劃.算法的有窮性是指(A)。A)算法程序的運(yùn)行時間是有限的B)算法程序所處理的數(shù)據(jù)量是有限的〇算法程序的長度是有限的D)算法只能被有限的用戶使用.對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n—1)/2的排序方法是(D)。A)快速排序B)冒泡排序C)直接插入排序D)堆排序.下列關(guān)于棧的敘述正確的是(B)。A)棧按"先進(jìn)先出”組織數(shù)據(jù)B)棧按"先進(jìn)后出"組織數(shù)據(jù)〇只能在棧底插入數(shù)據(jù)D)不能刪除數(shù)據(jù).在數(shù)據(jù)庫設(shè)計(jì)中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于(C)。A)需求分析階段B)概念設(shè)計(jì)階段〇邏輯設(shè)計(jì)階段D)物理設(shè)計(jì)階段.有三個關(guān)系R、S和T如下:由關(guān)系R和S通過運(yùn)算得到關(guān)系T,則所使用的運(yùn)算為(D)。RTRTA)并B)自然連接C)笛卡爾積D)交.設(shè)有表示學(xué)生選課的三張表,學(xué)生S(學(xué)號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學(xué)號,課號,成績),則表SC的關(guān)鍵字(鍵或碼)為(C)〇A)課號,成績B)學(xué)號,成績C)學(xué)號,課號D)學(xué)號,姓名,成績11.以下敘述中錯誤的是(A)。C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的ニ進(jìn)制機(jī)器指令文件〇用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在ー個文本文件中D)C語言源程序經(jīng)編譯后生成后綴為.〇可的目標(biāo)程序12.以下選項(xiàng)中,合法的ー組C語言數(shù)值常量是(A)。12.0Xa234.5e0028,5e-3-Oxf.1774el.5Oabc0x8A10,0003.e5.以下選項(xiàng)中不合法的標(biāo)識符是(A)。&aFORprint_00 .若有代數(shù)式ゆ+el(其中e僅代表自然對數(shù)的底數(shù),不是變量),則以下能夠正確表示該代數(shù)式的C語言表達(dá)式是(A)〇sqrt(fabs(pow(n?x)+exp(x)))sqrt(fabs(pow(n,x)+pow(x,e)))sqrt(abs(nAx+eAx))sqrt(fabs(pow(x,n)+exp(x)))は若有定義:doublea=22;inti=O,k=18;,則不符合C語言規(guī)定的賦值語句是(B)i=(a+k)<=(i+k);i=a%l1;a=a++,i++i=!a;16.有以下程序:#include<stdio.h>main(){ints?t,A=10;doubleB=6;s=sizeof(A);t=sizeof(B);printf(M%d?%d\n",s,t);在VC6.0平臺上編譯運(yùn)行,程序運(yùn)行后的輸出結(jié)果是(D)。10,64,42,44,817.有以下程序:#include<stdio.h>main(){chara,b,c,d;scanf(',%c%c,,,&a,&b);c=getchar();d=getchar():printf(n%c%c%c%c\n",a,b,c,d);}當(dāng)執(zhí)行程序時,按下列方式輸入數(shù)據(jù)(從第1列開始,vCR>代表回車,注意:回車也是ー個字符)12<CR>34<CR>則輸出結(jié)果是(D)〇123412123412318.下關(guān)于邏輯運(yùn)算符兩側(cè)運(yùn)算對象的敘述中正確的是(A)。A)可以是任意合法的表達(dá)式B)只能是整數(shù)〇或非。整數(shù)〇可以是結(jié)構(gòu)體類型的數(shù)據(jù)D)只能是整數(shù)0或119.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=l)b=l;c=2;elsed=3;printf("%d,%d,%d,%d\n”,a,b,c,d):)程序輸出(C)o1,1,2,00,0,0,3C)編譯有錯D)0,1,2,020.有以下程序:#include<stdio.h>main(){intx=l,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;
caseb+caseb++;break;)case2: a++; b++; break;case3: a++; b++;Iprintf(Ha=%d,b=%d\n",a,b);)程序的運(yùn)行結(jié)果是(B)。a=2,b:=2a=2,b=la=l,b=la=l,b=0.以下程序段中的變量已正確定義:for(i=0;i<4;i++,i++)for(k=l;k<3;k++);printf(M*M);程序段的輸出結(jié)果是(C)。******〇?D)********.有以下程序段:#include<stdio.h>inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){case1:case3: printf("%d\n", n); break;case2:case4: printf("%d\n", n); continue;case0: exit(O);printf("%d\n",n);以下關(guān)于程序段執(zhí)行情況的敘述,正確的是(D )。A)for循環(huán)語句固定執(zhí)行8次B)當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時結(jié)束循環(huán)操作〇當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時不做任何操作D)當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時結(jié)束程序運(yùn)行.有以下程序:#include<stdio.h>intf(intx);main(){intn=1,m;m=f(f(f(n)));printf("%d\n",m);)intf(intx){returnx*2; }程序運(yùn)行后的輸出結(jié)果是(A)〇A)B)C)D).以下敘述中錯誤的是(A)oA)可以給指針變量賦ー個整數(shù)作為地址值B)函數(shù)可以返回地址值C)改變函數(shù)形參的值,不會改變對應(yīng)實(shí)參的值D)當(dāng)在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL.設(shè)已有定義:floatx;,則以下對指針變量p進(jìn)行定義且賦初值的語句中正確的是(B)。int*p=(float)x;float*p=&x;floatp=&x;float*p=1024;.以下數(shù)組定義中錯誤的是(D)。int x[2][3]={l,2,3,4,5,6};int x[][3]={0};int x[][3]={{1,2,3}, {4,5,6));int x[2][3]={{l,2}, {3,4}, {5,6});.有以下程序:#include<stdio.h>voidfun(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i]; a[i]=a[n-1-i]; a[n-l-i]=t; })main(){intk[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5);for(i=2;i<8;i++)printf(n%d",k[i]);printf(M\nH);)程序的運(yùn)行結(jié)果是(A)〇321678876543〇1098765D)345678.有以下程序:#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]一a[i][N-l-i];}main(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;fun(x,y);for(i=0;i<N;i++)printf(n%d,\y[i]); printf(',\n,');)程序運(yùn)行后的輸出結(jié)果是(A)〇—3,—1,1,3,—12,—3,0,0,0,1,2,3,-3,-3,—3,-3,29.設(shè)有定義:chars[81];inti=0;,以下不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是(C)〇A)gets(s);while((s[i++]=getchar())!=\n');s[i]=V)';scanf(H%sM,s);D)do{scanf("%cH,&s[i]);}while(s[i++]!="');30.設(shè)有定義:charp[]={T,2,3},*q=p;,以下不能計(jì)算出ー個char型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是(A )〇sizeof(p)sizeof(char)sizeof(*q)sizeof(p[0]).有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={"One*World",MOne*Dream!”},*p=str[l];printf(*'%d,",strlen(p));printf("%s\n",p);}程序運(yùn)行后的輸出結(jié)果是(A)010,One*Dream!9,One*Dream!9,One*World10,One*World.有以下程序:#include<stdio.h>main(){chars[]="012xy\08s34f4w2";inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=W&&s[i]<=9)n++;printf("%d\n",n);1程序運(yùn)行后的輸出結(jié)果是(B)。03C)7D)833.有以下程序:#include<stdio.h>fun(intx,inty)staticintm=0,i=2;+=m+1;m=i+x+y;returnm;)main()intj=1,m=1,k;k=fun(j,m); printf("%d,”,k);k=fun(j,m): printf("%d\n",k);)執(zhí)行后的輸出結(jié)果是(A)〇5, 115,511,1111,5.在C語言中,只有在使用時オ占用內(nèi)存單元的變量,其存儲類型是(C)〇auto和staticexternregisterauto和registerstaticregister.下面結(jié)構(gòu)體的定義語句中,錯誤的是(A)。A)structord{intx;inty;intz;}structorda;B)structord{intx;inty;intz;};structordC)structord{intx;inty;intz;}a;D)struct{intx;inty;intz;]a;.有以下程序:#include<stdio.h>typedefstruct{intb?p;}A;voidf(Ac)/*注意:c是結(jié)構(gòu)變量名 ?/{intj;c.b+=1:c.p+=2;)main(){inti;Aa={l,2};f(a);printf("%d,%d\n",a.b,a.p);)程序運(yùn)行后的輸出結(jié)果是(B)。2,41,21,42,337.以下敘述中正確的是(A)。A)在C語言中,預(yù)處理命令行都以"#"開頭B)預(yù)處理命令行必須位于C源程序的起始位置#includevstdio.h>必須放在C程序的開頭C語言的預(yù)處理不能實(shí)現(xiàn)宏定義和條件編譯的功能.有以下程序:#include<stdio.h>#include<stdlib.h>intfun(intn){int*p;p=(int*)malloc(sizeof(int));*p=n;return*p;)main(){inta;a=fun(10);printf(,'%d\nn,a+fun(10));)程序的運(yùn)行結(jié)果是(C)〇010〇20D)出錯.有以下程序:#include<stdio.h>main(){unsignedchara=8,c;c=a?3;printf(n%d\nn,c);)程序運(yùn)行后的輸出結(jié)果是(B)〇16132040.讀取二進(jìn)制文件的函數(shù)調(diào)用形式為:fread(buffer,size,count,fp);?其中buffer代表的是(D)oA)一個內(nèi)存塊的字節(jié)數(shù)B)ー個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)C)ー個文件指針,指向待讀取的文件D)一個內(nèi)存塊的首地址,代表讀入數(shù)據(jù)存放的地址【解析】fread(void"buffer,size_tsize,size_tcount,FILE"stream);功能是從ー個文件流中讀數(shù)據(jù),讀取count個元素,每個元素size字節(jié),如果調(diào)用成功返回count。buffer:用于接收數(shù)據(jù)的內(nèi)存地址,大小至少是size*count字節(jié);size:單個元素的大小,單位是字節(jié);count:元素的個數(shù),每個元素是size字節(jié);stream:輸入流。無紙化選擇21、ー個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棧的順序是()〇12345ABCDEEDCBA54321ABCDE1234554321EDCBA參考答案:B【解析】棧是先進(jìn)后出的原則組織數(shù)據(jù),所以入棧最早的最后出棧,所以選擇B)。2,下列敘述中正確的是()。A)循環(huán)隊(duì)列有隊(duì)頭和隊(duì)尾兩個指針,因此,循環(huán)隊(duì)列是非線性結(jié)構(gòu)B)在循環(huán)隊(duì)列中,只需要隊(duì)頭指針就能反映隊(duì)列中元素的動態(tài)變化情況〇在循環(huán)隊(duì)列中,只需要隊(duì)尾指針就能反映隊(duì)列中元素的動態(tài)變化情況D)循環(huán)隊(duì)列中元素的個數(shù)是由隊(duì)頭指針和隊(duì)尾指針共同決定參考答案:D【解析】循環(huán)隊(duì)列有隊(duì)頭和隊(duì)尾兩個指針,但是循環(huán)隊(duì)列仍是線性結(jié)構(gòu)的,所以A)錯誤:在循環(huán)隊(duì)列中只需要隊(duì)頭指針與隊(duì)尾兩個指針來共同反映隊(duì)列中元素的動態(tài)變化情況,所以B)與C)錯誤。3、在長度為n的有序線性表中進(jìn)行二分查找,最壞情況下需要比較的次數(shù)是()。0(〃)O(n2)〇!l°fcn-D)0(nlofcn)參考答案:C【解析】當(dāng)有序線性表為順序存儲時才能用二分法查找??梢宰C明的是對于長度為n的有序線性表,在最壞情況下,二分法查找只需要比較い氏ピ次,而順序查找需要比較n次。4、下列敘述中正確的是()〇A)順序存儲結(jié)構(gòu)的存儲一定是連續(xù)的,鏈?zhǔn)酱鎯Y(jié)構(gòu)的存儲空間不一定是連續(xù)的B)順序存儲結(jié)構(gòu)只針對線性結(jié)構(gòu),鏈?zhǔn)酱鎯Y(jié)構(gòu)只針對非線性結(jié)構(gòu)C)順序存儲結(jié)構(gòu)能存儲有序表,鏈?zhǔn)酱鎯Y(jié)構(gòu)不能存儲有序表D)鏈?zhǔn)酱鎯Y(jié)構(gòu)比順序存儲結(jié)構(gòu)節(jié)省存儲空間參考答窠:A【解析】鏈?zhǔn)酱鎯Y(jié)構(gòu)既可以針對線性結(jié)構(gòu)也可以針對非線性結(jié)構(gòu),所以B)與C)錯誤。鏈?zhǔn)酱鎯Y(jié)構(gòu)中每個結(jié)點(diǎn)都由數(shù)據(jù)域與指針域兩部分組成,增加了存儲空間,所以D)錯誤。5.數(shù)據(jù)流圖中帶有箭頭的線段表示的是()。A)控制流B)事件驅(qū)動〇模塊調(diào)用D)數(shù)據(jù)流參考答案:D【解析】數(shù)據(jù)流圖中帶箭頭的線段表示的是數(shù)據(jù)流,即沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名。6,在軟件開發(fā)中,需求分析階段可以使用的工具是().N-S圖DFD圖〇PAD圖D)程序流程圖參考答案:B【解析】在需求分析階段可以使用的工具有數(shù)據(jù)流圖DFD圖,數(shù)據(jù)字典DD,判定樹與判定表,所以選擇B)。7、在面向?qū)ο蠓椒ㄖ?,不屬?對象”基本特點(diǎn)的是().A)一致性B)分類性〇多態(tài)性D)標(biāo)識唯一性參考卷案:a【解析】對象有如下ー些基本特點(diǎn):標(biāo)識唯一性、分類性、多態(tài)性、封裝性、模塊獨(dú)立性好。所以選擇A)。8、ー間宿舍可住多個學(xué)生,則實(shí)體宿舍和學(xué)生之間的聯(lián)系是()?ー對ーー對多C)多對ーD)多對多參考答案:B【解析】因?yàn)椹`間宿舍可以住多個學(xué)生即多個學(xué)生住在一個宿舍中,但ー個學(xué)生只能住一間宿舍,所以實(shí)體宿舍和學(xué)生之間是ー對多的關(guān)系。9、有三個關(guān)系R、S和T如下:由關(guān)系R和S通過運(yùn)算得到關(guān)系T,則所使用的運(yùn)算為()。B)交并D)自然連接參考答案:D【解析】自然連接是ー種特殊的等值連接,它要求兩個關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉,所以根據(jù)T關(guān)系中的有序組可知R與S進(jìn)行的是自然連接操作。10、在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()=A)人工管理階段B)文件系統(tǒng)階段〇數(shù)據(jù)庫系統(tǒng)階段D)三個階段相同【解析】數(shù)據(jù)管理發(fā)展至今已經(jīng)歷了三個階段:人丄管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中最后一個階段結(jié)構(gòu)簡單,使用方便邏輯性強(qiáng)物理性少,在各方面的表現(xiàn)都最好,一直占據(jù)數(shù)據(jù)庫領(lǐng)域的主導(dǎo)地位,所以選擇C)。11、以下選項(xiàng)中,能用作數(shù)據(jù)常量的是()。115L01181.5el.50115參考答案:A【解析】A)選項(xiàng)中115L表示115是長整型數(shù)據(jù),合法。B)選項(xiàng)是ハ進(jìn)制常量的表示方法,但是在八進(jìn)制中不能含有數(shù)字8,所以B)錯誤。C)選項(xiàng)中e后面應(yīng)該是整數(shù)不能是小數(shù)1.5,所以C)錯誤。D)選項(xiàng)中ハ進(jìn)制常量應(yīng)該是數(shù)字"0”開始,而不是字母"。"開始。12、下列敘述中錯誤的是()〇A)C程序可以由多個程序文件組成B)ー個C語言程序只能實(shí)現(xiàn)ー種算法〇C程序可以由一個或多個函數(shù)組成D) ー個C函數(shù)可以單獨(dú)作為ー個C程序文件存在參考答案:B【解析】在一個C語言程序中可以進(jìn)行多種算法的實(shí)現(xiàn),對算法的個數(shù)沒有規(guī)定,所以B)錯誤。13、按照C語言規(guī)定的用戶標(biāo)識符命名規(guī)則,不能出現(xiàn)在標(biāo)識符中的是()〇A)大寫字母B)下劃線〇數(shù)字字符D)連接符參考答案:D【解析】C語言中標(biāo)識符由字母、下劃線、數(shù)字組成,且開頭必須是字母或下劃線。所以D)選項(xiàng)中的連接符不合法。14、設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。x=y+z+5,++yint(15.8%5)x=y*5=x+zx=25%5.0參考答案:A【解析】B)與D)選項(xiàng)中取模運(yùn)算符%的左右兩個操作數(shù)均應(yīng)為整數(shù),所以B)、D)錯誤。〇選項(xiàng)中不能將x+y的值賦給表達(dá)式y(tǒng)*5,所以C)錯誤。15、設(shè)有定義:intx=2;,以下表達(dá)式中,值不為6的是()?2*x,x+=2x++,2*xx*=(l+x)x*=x+l參考答案:A16、有以下程序:#include<stdio.h>main(){intx,y,z;x=y=l;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);)程序運(yùn)行后的輸出結(jié)果是().A)2,3,3B)2,3,2C)2,3,1D)2,2,1參考答案:C【解析】z=x++,y++,++y;因?yàn)橘x值運(yùn)算符的優(yōu)先級高于逗號運(yùn)算符的優(yōu)先級,所以可以將上式表示成(z=x++),(y++),(++y)。然后從左向右先計(jì)算表達(dá)式z=x++,因?yàn)閤++先使用后自增,所以z的值為1,x的值為2。再計(jì)算逗號表達(dá)式第二個表達(dá)式y(tǒng)++,此時y的值為2,最后計(jì)算第三個表達(dá)式++y,y的值為3。17、有以下程序:#include<stdio.h>main(){charcl,c2;cl='A,+,8'-'4,;c2='A+8'—5;printf(M%c,%d\nH,cl,c2);已知字母A的ASCII碼為65,程序運(yùn)行后的輸出結(jié)果是()。A)E,68B)D,69〇E,DD)輸出無定值參考答案:A【解析】本題目中字符變量cl是字符‘A'的ASCH碼加上4,即69所對應(yīng)的字符‘E'。字符變量c2是字符'A'的ASCII碼加上3,即68所對應(yīng)的字符'D'。但是打印輸出時,cl以%c的格式輸出,所以是E,c2以%d的格式輸出,所以是68。18、若有定義intx,y!并已正確給變量賦值,則以下選項(xiàng)中與表達(dá)式(X—y)?(x++):(y++)中的條件表達(dá)式(x-y)等價的是()。(X—y<Ollx-y>0)(x—y<0)(x-y>0)(x—y==0)參考答案:A【解析】條件表達(dá)式:x=表達(dá)式1?表達(dá)式2:表達(dá)式3的含義是:先求解表達(dá)式1,若為非0(真),則求解表達(dá)式2,將表達(dá)式2的值賦給X。若表達(dá)式1的值為0(假),則求解表達(dá)式3,將表達(dá)式3的值賦給X。在本題中與表達(dá)式1:(x-y)等價的是(x-y<0llx-y>0)。19、有以下程序:#include<stdio.h>main(){intx=l,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;elsey+=3;printf(M%d\nH,y);}程序運(yùn)行后的輸出結(jié)果是()。3210參考答案:D【解析】在ifelse語句中else總是與離它最近的if配對。本題目中x為1所以!x為〇,所以執(zhí)行elseif語句中的內(nèi)容,判斷(x==0)是否成立,因?yàn)閤為1所以條件不成立,所以elseif內(nèi)部的if…else語句不再執(zhí)行,所以y的值還是初始值〇。20、若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是( )。A)switch(a+b){case1:printf('**\nM):case2+1: printf(,,**\n*'); }B)switch((int)x);{case1: printf(',*\n,,);case2: printf("**\n");}C)switch(x){case1.0:printf(',*\nM);case2.0:printf(,'**\nM);}D)switch(a+b){case1:printf(H*\nM);casec:printf(n**\n");!參考答案:A【解析】B)選項(xiàng)中switch((int)x):語句中不應(yīng)該有最后的分號。switch(exprl),中的exprl不能用浮點(diǎn)類型或long類型,也不能為ー個字符串,所以C)錯誤。case后面常量表達(dá)式的類型必須與switch后面表達(dá)式的類型一致,所以D)錯誤。21、有以下程序:#include<stdio.h>main(){inty=9;for(; y>0;y )if(y%3==0)printf(M%dH,——y);}程序的運(yùn)行結(jié)果是()。A)852B)963〇741D)875421參考答案:A【解析】第一次for循環(huán),y的值為9,y%3的值為〇,滿足條件打印ーーy,即先減一后打印,所以打印8:第二次for循環(huán),y的值為7, y%3的值為1,不執(zhí)行打印語句;第三次for循環(huán),y的值為6,y%3的值為0,滿足條件打印ーーy,即先減ー后打印,所以打印5:第四次for循環(huán),y的值為4,不滿足if條件,不執(zhí)行打印語句;第五次for循環(huán),y的位為3,滿足if條件,打印輸出2;第六次for循環(huán),y的值為1,不滿足條件,不執(zhí)行打印語句。22、有以下程序:#include<stdio.h>main(){inti,j,m=l;for(i=l:i<3;i++){for(j=3;j>0;j ){if(i*j>3)break;printf(Hm=%d\n,',m);}程序運(yùn)行后的輸出結(jié)果是()〇m=4m=2m=6m=5參考答案:C【解析】 第一次外循環(huán)i的值為1,第一次內(nèi)循環(huán)j的值為3,不滿足條件執(zhí)行m*=i*j即m的值為3;第二次j的值為2,不滿足條件執(zhí)行m*=i*j,即m的值為6;第三次j的值為1,不滿足條件執(zhí)行m*=i*j,即m的值仍為6。第二次外循環(huán)i的值為2,j的值為3,滿足條件,執(zhí)行break語句,跳出循環(huán)。23、有以下程序:#include<stdio.h>intfun(intx,inty){if(xI=y)return((x+y)/2):elsereturn(x);)main(){inta=4,b=5,c=6;printf("%d\n”,fun(2*a,fun(b,c)));)63812參考答案:A【解析】本題中第一次調(diào)用為fun(8,fun(5,6)),因?yàn)閒un(5,6)返回值為5,所以第二次調(diào)用為fun(8,5)=6。所以選擇A)。24、有以下程序:#include<stdio.h>intadd(inta,intb){return(a+b); )main(){intk,(*f)(),a=5,b=10;f=add;則以下函數(shù)調(diào)用語句錯誤的是()。k=f(a,b);k=add(a,b);k=(*f)(a,b);k=*f(a,b):參考答案:D【解析】D)選項(xiàng)中?f(a,b)表示調(diào)用后返回一個指向整型數(shù)據(jù)的地址指針,即該函數(shù)的返回值為指針類型,所以不能將其賦值給整形變量匕25、有以下程序:#include<stdio.h>main(){intn,*p=NULL;*p=&n;printf(HInputn:");scanf(H%d",&p);printf("outputn:");printf(H%d\n",p):)該程序試圖通過指針p為變量n讀入數(shù)據(jù)并輸出,但程序有多處錯誤,以下語句正確的是()intn**p=NULL;*p=&n;scanf("%d\&p)printf("%d\n",p);參考答案:A【解析】選項(xiàng)B)的正確寫法應(yīng)為p=&n:選項(xiàng)C)的正確寫法應(yīng)為scanf("%d",p):選項(xiàng)D)的正確寫法應(yīng)為printf("%d\n",*p)。26、下列定義數(shù)組的語句中,正確的是()。#defineN10intx[N]:intN=10;intx[N];intx[0..10];intx[]:參考答案:A【解析】數(shù)組說明的一般形式為:類型說明符數(shù)組名[常量表達(dá)式]。B)中N是變量,不能用變量定義數(shù)組長度。C)選項(xiàng)中數(shù)組長度是非法的ー串?dāng)?shù)字。定義數(shù)組時必須為其指明長度,D)選項(xiàng)中數(shù)組長度為空,所以非法。27、有以下程序:#include<stdio.h>main(){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");程序運(yùn)行后的輸出結(jié)果是()。A)0304B)2050〇3344D)3040參考答案:D【解析】第一次循環(huán)i為〇,i%2為〇,執(zhí)行switch(a[〇]%2)中的caseO語句后內(nèi)容即a[0]++,a[0]的值變成3;第二次循環(huán)i的值為1,i%2為1,執(zhí)行easel:a[i]=0I所以a[l]的值變成〇;第三次循環(huán)i的值為2,i%2為〇,執(zhí)行switch(a[2]%2)中的case1語句后的內(nèi)容a[2]--,a[2]的值變成4;第四次循環(huán)i的值為3,i%2為1,執(zhí)行easel:a[i]=0;所以a[3]的值變成〇。28、有以下程序:#include<stdio.h>main(){ intb[3][3]={0,1,2,0,1,2,0,1,2),i,j,t=l;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][bU][i]]5printf(H%d\nH,t);)1程序運(yùn)行后的輸出結(jié)果是().3419參考答案:B【解析】每次內(nèi)循環(huán)只循環(huán)一次就結(jié)束,第一次外循環(huán)時t=t+b⑼[b[〇][0]]=1+b[0][0]=1+0=1J第二次外循環(huán)時t=t+b[l]的l][l]]=l+b[l][l]=l+l=2;第三次外循環(huán)時t=t+b[2nb[2][2]]=2+b[2][2]=2+2=4o29、以下語句中存在語法錯誤的是()〇charss[6][20];ss[l]="right?M;charss()[20]={"right?M};char*ss[6];ss[l]="right?";D)char*ss()={"right?"}:參考答案:A【解析】數(shù)組定義后,不可以對數(shù)組整體賦值,s是二維數(shù)組,因ss[l]是一維字符數(shù)組,即字符串,字符串賦值可以使用strcpy(ss[l],"right")5這樣的形式,而選項(xiàng)A)中對二維數(shù)組中的第〃ド維(相當(dāng)于ー個ーー維數(shù)組)賦值,是不可以的。選項(xiàng)B)和D)是定義時對數(shù)組初始化,這是可以的。選項(xiàng)C)中,將字符串在內(nèi)存中的首地址賦給指針數(shù)組的ー個元素,這是可以的。30、以下不能將s所指字符串正確復(fù)制到t所指存儲空間的是()A)do{*t++=*s++;}while(*s);for(i=0;t[i]=s[i];i++);while(*t=*s){t++;s++}for(i=0,j=0;t[i++]=s|j++];);參考答案:A【解析】do{*t++=*s++;)while(*s)5不能因?yàn)楫?dāng)?s=ヘ〇時,whi砥*s)跳出循環(huán),這樣字符串結(jié)束標(biāo)志ゝ〇,沒有復(fù)制給?t,造成セ不完整。注意,*t++=*s++是先執(zhí)行t=*s,然后オ進(jìn)行t=t+l,s=s+loB),C),D)都能將、〇,復(fù)制過去。31、有以下程序:#include<stdio.h>voidswap(char*x,char*y){chart;t=*x;*x=*y; *y=t;}main(){char*s1=Habc",*s2="123";swap(sl,s2);printf("%s,%s\n",si,s2);程序執(zhí)行后的輸出結(jié)果是()。321,cbaabcJ23123,abcIbc,a23參考答案:D【解析】字符串是ー個特殊的數(shù)組,所以按照數(shù)組的規(guī)則,si應(yīng)該指向的是數(shù)組的首地址,即”abc〃的第一個字符的地址。s2指向的是〃123〃的第一個字符的地址。調(diào)用swap函數(shù)之后交換的是兩個字符串的第一個字符’a’和‘1’的內(nèi)容,所以打印輸出為D)。32、有以下函數(shù):intfun(char*x,char*y){intn=0;while((*x==*y)&&*x!=、〇'){x++; y++; n++;}returnn;)函數(shù)的功能是()。A)將y所指字符串賦給x所指存儲空間B)查找x和y所指字符串中是否有V)'〇統(tǒng)計(jì)x和y所指字符串中最前面連續(xù)相同的字符個數(shù)D)統(tǒng)計(jì)x和y所指字符串中相同的字符個數(shù)參考答案:C【解析】本題中由循環(huán)條件可知遇到‘、。’或x與y所指的字符的值不等中的一個條件時就結(jié)束,所以功能是統(tǒng)計(jì)x和y所指字符串中最前面連續(xù)相同的字符個數(shù)。33、有以下程序:#include<stdio.h>intfun(){staticintx=l;x*=2;returnx;main(){inti,s=1;for(i=1;i<=3;i++) s*=fun();printf(n%d\n%s);}程序運(yùn)行后的輸出結(jié)果是()。A)10B)30〇0D)64參考答案:D【解析】 本題目中靜態(tài)局部變量X,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運(yùn)行期間都不釋放。所以第一次循環(huán)s的值為2,第二次循環(huán)中,返回的x的值為4,所以s的值為8,第三次循環(huán),返回的x的值為8,所以s的值為64。34、在ーー個C源程序文件中所定義的全局變量,其作用域?yàn)椋ǎ?。A)由具體定義位置和extern說明來決定范圍B)所在程序的全部范圍〇所在函數(shù)的全部范圍D)所在文件的全部范圍參考答案:A【解析】全局變量的作用域是從聲明處到文件的結(jié)束。所以選擇A)35、以下敘述中錯誤的是()〇A)可以通過typedef增加新的類型B)可以用typede昭已存在的類型用ー個新的名字來代表〇用typedef定義新的類型名后,原有類型名仍有效D)用typedef可以為各種類型起別名,但不能為變量起別名參考答案:A【解析】關(guān)鍵字typedef的作用只是將C語言中的已有的數(shù)據(jù)類型作了置換,并不是增加新的類型,所以A)錯誤。36、有以下程序:#include<stdio.h>structS{inta,b; }data[2]={10,100,20,200):main(){structSp=data[l];printf("%d\n",++(p.a));程序運(yùn)行后的輸出結(jié)果是()〇10112021參考答案:D【解析】聲明data是結(jié)構(gòu)S數(shù)組。初始化data[0].a=10;data[0].b=100;data[l].a=20;data[l].b=200。主函數(shù)中p=dataロ];即p.a=data[l]ap.b=data[l].b:執(zhí)行語句printf("%ホゼ,++(p.a));打印輸出時p.a先增1再打印。p.a=data[l].a=20?先增1等于21。3フ、有以下程序:#include<stdio.h>#define PT 3.5;#define S(x)PT*x*x;main(){inta=l,b=2;prinlf("%4.1f\n",S(a+b)); }程序運(yùn)行后的輸出結(jié)果是()〇7.531.5〇程序有錯無輸出結(jié)果D)14.0參考答案:C【解析】宏定義不是C語句,末尾不需要有分號。所以語句printf("%4.1f\n",S(a+b))J展開后為printf("%4.1f\n”,3.5;*a+b*a+b;);所以程序會出現(xiàn)語法錯誤。38、有以下程序:#include<stdio.h>main(){unsignedchara=2,b=4,c=5,d;d=alb;d&=c;printf("%d\nM,d); }程序運(yùn)行后的輸出結(jié)果是()。34〇5D)6參考答案:B【解析】&按位與,如果兩個相應(yīng)的二進(jìn)制位都為1,則該位的結(jié)果值為1,否則為〇。I按位或,兩個相應(yīng)的二進(jìn)制位中只要有一個為1,該位的結(jié)果值為1。2的二進(jìn)制為00000010,4的二進(jìn)制為00000100,所以做或運(yùn)算結(jié)果為00000110,該數(shù)與5即00000101做與操作結(jié)果為00000100,即439、有以下程序:#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=l;*b=2,*c=3;a=b;printf("%d,%d,%d\n",*a,*b,*c);I程序運(yùn)行后的輸出結(jié)果是()。
1,1,32,2,31,2,33,3,3參考答案:D【解析】malloc函數(shù)動態(tài)分配ー個整型的內(nèi)存空間,然后把函數(shù)返回的地址用(int*)強(qiáng)制類型轉(zhuǎn)換為整型指針,再把它賦給a,b,c,即讓指針變量a,b,c都指向剛申請的內(nèi)存空間。所以只有最后ー個賦值語句?c=3的值保留在了該空間內(nèi),因?yàn)閍,b,c三個指針變量均指向該空間,所以打印該空間內(nèi)的數(shù)值為3。40以下敘述中正確的是()〇A)當(dāng)對文件的讀(寫)操作完成之后,必須將它關(guān)閉,古則可能導(dǎo)致數(shù)據(jù)丟失B)打開一個已存在的文件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋〇在ー個程序中當(dāng)對文件進(jìn)行了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù)D)C語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)參考答案:A【解析】B)選項(xiàng)中打開ー個已存在的文件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)不一定被覆蓋,也可以對源文件進(jìn)行追加操作等。C)選項(xiàng)中在ー個程序中當(dāng)對文件進(jìn)行了寫操作后,不用先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù),可以用fseek()函數(shù)進(jìn)行重新定位即可。D)選項(xiàng)中,C語言中的文件可以進(jìn)行隨機(jī)讀寫。無紙化選擇31、下列敘述中正確的是()。A)棧是"先進(jìn)先出”的線性表B)隊(duì)列是"先進(jìn)后出”的線性表〇循環(huán)隊(duì)列是非線性結(jié)構(gòu)D)有序線性表既可以采用順序存儲結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯Y(jié)構(gòu)參考答案:D【解析】棧是先進(jìn)后出的線性表,所以A)錯誤:隊(duì)列是先進(jìn)先出的線性表,所以B)錯誤:循環(huán)隊(duì)列是線性結(jié)構(gòu)的線性表,所以C)錯誤。2、支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。列列叉棧樹隊(duì)ニ參考答案:A【解析】棧支持子程序調(diào)用。棧是ー種只能在一端進(jìn)行插入或刪除的線性表,在主程序調(diào)用了函數(shù)時要首先保存主程序當(dāng)前的狀態(tài),然后轉(zhuǎn)去執(zhí)行子程序,最終把子程序的執(zhí)行結(jié)果返回到主程序中調(diào)用子程序的位置,繼續(xù)向下執(zhí)行,這種調(diào)用符合棧的特點(diǎn),因此本題的答案為A)=3、某ニ叉樹有5個度為2的結(jié)點(diǎn),則該ニ叉樹中的葉子結(jié)點(diǎn)數(shù)是()。10864參考答案:C【解析】根據(jù)ニ叉樹的基本性質(zhì)3:在任意一棵ニ叉樹中,度為〇的葉子節(jié)點(diǎn)總是比度為2的節(jié)點(diǎn)多一個,所以本題中是5+1=6個。.下列排序方法中,最壞情況下比較次數(shù)最少的是().A)冒泡排序B)簡單選擇排序〇直接插入排序D)堆排序參考答案:D【解析】冒泡排序與簡單插入排序與簡單選擇排序法在最壞情況下均需要比較n(n—1)/2次,而堆排序在最壞情況下需耍比較的次數(shù)是皿性?.軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應(yīng)用軟件的是()?A)編譯程序B)操作系統(tǒng)〇教務(wù)管理系統(tǒng)D)匯編程序參房答案:c【解析】編譯軟件、操作系統(tǒng)、匯編程序都屬于系統(tǒng)軟件,只有C)教務(wù)管理系統(tǒng)オ是應(yīng)用軟件。6、下面敘述中錯誤的是()A)軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤B)對被調(diào)試的程序進(jìn)行"錯誤定位”是程序調(diào)試的必要步驟〇程序調(diào)試通常也稱為DebugD)軟件測試應(yīng)嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性參考答案:a【解析】軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,并不涉及改正錯誤,所以選項(xiàng)A)錯誤。程序調(diào)試的基本步驟有:錯誤定位、修改設(shè)計(jì)和代碼,以排除錯誤、進(jìn)行回歸測試,防止引進(jìn)新的錯誤。程序調(diào)試通常稱為Debug,即排錯。軟件測試的基本準(zhǔn)則有:所有測試都應(yīng)追溯到需求、嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性、充分注意測試中的群集現(xiàn)象、程序員應(yīng)避免檢查自己的程序、窮舉測試不可能、妥善保存測試計(jì)劃等文件。7、耦合性和內(nèi)聚性是對模塊獨(dú)立性度量的兩個標(biāo)準(zhǔn)。下列敘述中正確的是()。A)提高耦合性降低內(nèi)聚性有利于提高模塊的獨(dú)立性B)降低耦合性提高內(nèi)聚性有利于提高模塊的獨(dú)立性〇耦合性是指ー個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度D)內(nèi)聚性是指模塊間互相連接的緊密程度參考答案:B【解析】模塊獨(dú)立性是指每個模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性,所以A)錯誤,B)正確。耦合性是模塊間互相連接的緊密程度的度量而內(nèi)聚性是指ー個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度,所以。與D)錯誤。8、數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是()。A)數(shù)據(jù)庫設(shè)計(jì)B)數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)〇數(shù)據(jù)庫維護(hù)D)數(shù)據(jù)庫管理員培訓(xùn)參考答案:A【解析】數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是數(shù)據(jù)庫的設(shè)計(jì)。9、有兩個關(guān)系R,S如下:由關(guān)系R通過運(yùn)算得到關(guān)系S,則所使用的運(yùn)算為()。
A)B)C)D)B拝影入接A)B)C)D)B拝影入接紅選投插連答【解析】投影運(yùn)算是指對于關(guān)系內(nèi)的域指定可引入新的運(yùn)算。本題中S是在原有關(guān)系R的內(nèi)部進(jìn)行的,是由R中原有的那些域的列所組成的關(guān)系。所以選擇B)。10、將E-R圖轉(zhuǎn)換為關(guān)系模式時,實(shí)體和聯(lián)系都可以表示為()〇A)屬性B)鍵C)關(guān)系D)域參考答案:C【解析】從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實(shí)體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性。11、以下敘述中錯誤的是()〇A)使用三種基本結(jié)構(gòu)構(gòu)成的程序只能解決簡單問題B)結(jié)構(gòu)化程序由順序、分支、循環(huán)三種基本結(jié)構(gòu)組成〇C語言是ー種結(jié)構(gòu)化程序設(shè)計(jì)語言D)結(jié)構(gòu)化程序設(shè)計(jì)提倡模塊化的設(shè)計(jì)方法參考答案;A【解析】使用順序,選擇(分支),循環(huán)三種基本結(jié)構(gòu)構(gòu)成的程序可以解決所有問題,而不只是解決簡單問題,所以A)錯誤。12、以下四個程序中,完全正確的是()。#include<stdio.h>main();{/*/programming/*/printf(°programming!\n'*);}#include<stdio.h>main(){/*programming*/TOC\o"1-5"\h\zprintf(''programming!\nH); }#include<stdio.h>main(){/*/*programming*/*/printf("programming!\nM); }include<stdio.h>main(){/*programming*/printf(''programming!\n"); }參考答案:B【解析】C語言中注糅語句的注釋方法是:/?注釋內(nèi)容?/或〃注釋一行。所以A)與C)錯誤,D)選項(xiàng)中預(yù)編譯命令inchide<stdio.h>前丟掉了"#"號。所以選擇B)。13、C源程序中不能表示的數(shù)制是()〇A)十六進(jìn)制B)ハ進(jìn)制C)十進(jìn)制D)二進(jìn)制參考答案:D【解析】在C語言中整型常量可以用十進(jìn)制、ハ進(jìn)制和十六進(jìn)制等形式表示,但不包括二進(jìn)制,所以選擇D)。14、以下選項(xiàng)中,能用作用戶標(biāo)識符的是()〇_0_8_8voidunsigned參考答案:A【解析】C語言中標(biāo)識符由字母、下劃線、數(shù)字組成,且開頭必須是字母或下劃線。另外,關(guān)鍵字不能作為標(biāo)識符。B)中以數(shù)字8開頭,所以錯誤。C)與D)中用的是關(guān)鍵字void與unsigned,所以錯誤。15、若有定義語句:intx=10;,則表達(dá)式x—=x+x的值為( )〇A)0B)一20—1010參考答案:C【解析】算術(shù)運(yùn)算符+的優(yōu)先級高于ー=,且ー=的結(jié)合方向?yàn)樽杂蚁蜃?所以表達(dá)式x-=x+x可以表示成x=x-(x+x)=10-(10+10)=-10,選擇C)。16、有以下程序:#include<stdio.h>main(){inta=l,b=0;printf(M%d,",b=a+b);printf("%d\n",a=2*b);1,21,03,20,0參考答案:A【解析】首先打印b=a+b=l+0=l的值1,此時已給b賦值為1。然后打印a=2*b=2*l=2的值2。所以結(jié)果是1,2.17、有以下程序:#include<stdio.h>main(){intal,a2;charcl,c2:scanf("%d%c%d%c",&al,&cl,&a2,&c2);printf("%d,%c,%d,%c",al,cl,a2,c2);)若想通過鍵盤輸入,使得al的值為12,a2的值為34,cl的值為字符a,c2的值為字符b,程序輸出結(jié)果是:12,a,34,b則正確的輸入格式是(以下一代表空格,vCR>代表回車)()。A)12Ig34ーエb<CR>12—*aj34]-£b<CR>12,a,34,b<CR>12a34b<CR>參考答案:D【解析】在輸入多個數(shù)據(jù)時,若格式控制串中無非格式字符,則認(rèn)為所有輸入的字符均為有效字符。所以應(yīng)按選項(xiàng)D)的順序輸入數(shù)據(jù)。18、若變量已正確定義,在if(W)printf("%d\n",k);中,以下不可替代W的是( )。aob+cch=getchar()a==b+ca++參考答案:A【解析】選項(xiàng)A)是非法的表達(dá)式,C語言中沒有0運(yùn)算符。19、有以下程序段:#include<stdio.h>inta,b,c;a=10; b=50; c=30;if(a>b)a=b,b=c;c=a;printf(Ma=%db=%dc=%d\nn,a,b,c);程序的輸出結(jié)果是()。a=10b=50c=30a=10b=50c=10〇a=10b=30c=10D)a=50b=30c=50參考答案:B【解析】本題中a>b的條件不滿足,所以不執(zhí)行逗號表達(dá)式a=b,b=c:的操作,而是執(zhí)行c=a操作,即c的值為10。20、下列敘述中正確的是()。A)在switch語句中,不一定使用break語句B)在switch語句中必須使用defaull〇break語句必須與switch語句中的case配對使用D)break語句只能用于switch語句參考答案:A【解析】 default語句在switch語句中可以省略,所以B)錯誤:switch語句中并非每個case后都需要使用break語句,所以C)錯誤;break語句還可以用于for等循環(huán)結(jié)構(gòu)中,所以D)錯誤。21、以下不構(gòu)成無限循環(huán)的語句或語句組是()〇n=0;do{++n;}while(n<=0);n=0:while(1){n++;}n=10;while(n);{n ;}for(n=0,i=l;;i++)n+=i;參考答案:A【解析】選項(xiàng)A)中do后面的語句只執(zhí)行了一次便結(jié)束了循環(huán):B)選項(xiàng)中條件while⑴永遠(yuǎn)成立,所以是死循環(huán);C)選項(xiàng)中n的值為10,而循環(huán)體為空語句,所以while(n)永遠(yuǎn)為真,進(jìn)入死循環(huán);D)選項(xiàng)中for語句第二個表達(dá)式為空,所以沒有判別條件,進(jìn)入死循環(huán)。22、有以下程序:#include<stdio.h>main(){intc=0,k;for(k=l:k<3:k++)switch(k){default:c+=k;case2:c++;break;case4:c+=2;break;)printf(H%d\nH,c);}程序運(yùn)行后的輸出結(jié)果是()〇7539參考答案:C【解析】向switch語句塊傳送參數(shù)后,編譯器會先尋找匹配的case語句塊,找到后就執(zhí)行該語句塊,遇到break跳出;如果沒有匹配的語句塊,則執(zhí)行default語句塊。case與default沒有順序之分。所以第一次循環(huán)k的值為1,執(zhí)行c+=k,c的值為1,再執(zhí)行case2后的語句c++,c的值為2,遇到break語句跳出循環(huán);第二次循環(huán)k的值為2,執(zhí)行case2后面的語句c++,c的值為3,跳出循環(huán)。23、有以下程序:#include<stdio.h>intf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(H%d\nn,d):)程序運(yùn)行后的輸出結(jié)果是()。71089參考答案:0【解析】調(diào)用f(a,b)函數(shù)返回3,調(diào)用f(a,c)函數(shù)返回6,所以外層調(diào)用f(f(a,b),f(a,c));即調(diào)用f(3,6)函數(shù)返回9。24、若有定義語句:doublea,*p=&a;以下敘述中錯誤的是()。A)定義語句中的?號是一個間址運(yùn)算符B)定義語句中的?號是ー個說明符〇定義語句中的p只能存放double類型變量的地址D)定義語句中,*p=&a把變量a的地址作為初值賦給指針變量p參考答案:A【解析】在變量定義doublea,*p=&a;中,?號是ー個指針運(yùn)算符,而非間址運(yùn)算符,所以A)錯誤。25、若有定義語句:doublex,y,*px,*py;執(zhí)行了px=&x;py=&y;之后,正確的輸入語句是()〇scanf(H%lf%leH,px,py);scanf(M%f%f&x,&y);scanf(n%f%f,x,y);scanf(H%lf%ir,x,y);參考答案:A【解析】因?yàn)閤,y都是double型數(shù)據(jù),所以輸入時的格式字符應(yīng)為%此所以B)與C)錯誤。D)選項(xiàng)中scanf("%lf%lf\x,y);應(yīng)為scanf("%lf%lf”,&x,&y):〇26以下定義數(shù)組的語句中錯誤的是()〇intnumロ[3]={{1,2}34,5,6};intnum[2][4]={{1,2},{3,4},{5,6}}:intnum[]={1,2,3,4,5,6};intnum[][4]={1,2,3,4,5,6};參考答案:B【解析】B)選項(xiàng)中定義的數(shù)組為2行4列,而賦值時賦成了3行所以出錯。27、有以下程序:#include<stdio.h>voidfun(inta,intb){intt;t=a;a=b;b=t;)main(){int c[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i<10;i+=2)fun(c[i],c[i+l]);for(i=0;i<10;i++)printf(M%d,n,c[i]);printf(n\nH);1程序的運(yùn)行結(jié)果是()。A)1,2,3,4,5,6,7,8,9,0,B)2,1,4,3,6,5,8,7,0,9,〇0,9,8,7,6,5,4,32,1,D)0,1,2,3,4,5,6,7,8,9,參考答案:A【解析】函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實(shí)參的值傳送給形參,而不能把形參的值反向地傳送給實(shí)參。因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實(shí)參中的值不會變化,所以數(shù)組c中的元素的值并沒有變化,選擇A)。28、有以下程序:#include<stdio.h>main(){intx[3][2]={0},i;for(i=0;i<3;i++)scanf(M%dM,x[i]);printf(n%3d%3d%3d\n",x[0][0],x[0][l],x[l][0]):}若運(yùn)行時輸入:246c回車〉,則輸出結(jié)果為()〇2042000240D)246參考答案:A【解析】本題中輸入的3個數(shù)據(jù)2,4,6分別賦值給了x[〇][〇],x[l][0],x⑵[〇]。x[〇][1]仍為初始時的。,所以打印輸出時的結(jié)果為A)選項(xiàng)。29、有以下程序段:#include<stdio.h>intj;floaty;charname[50J;scanf(n%2d%f%s,',&j,&y,name);當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A)566.0B)55566.0〇7777.0D)566777.0參考答案:A【解析】它是格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。其屮的格式命令可以說明最大域?qū)挕T诎俜痔?%)與格式碼之間的整數(shù)用于限制從對應(yīng)域讀入的最大字符數(shù)。所以j的值為55,y的值為566.0,字符數(shù)組name為7777abc。30、下列語句組中,正確的是()。char*s;s="Olympic";chars[7];s="Olympic";char*s;s={"Olympic");chars[7];s={"Olympic"};參考答案:A【解析】字符型指針變量可以用選項(xiàng)A)的賦值方法:char*s;s="Olympic"(選項(xiàng)C)的寫法:char*s,s={"Olympic"};是錯誤的。字符數(shù)組可以在定義的時候初始化:chars[]={"Olympic"};?或者chars[}="Olympic",都是正確的。但是不可以在定義字符數(shù)組后,對數(shù)組名賦值。(數(shù)組名是常量,代表數(shù)組首地址)所以選項(xiàng)B)和選項(xiàng)D)都是錯誤的。対于本例,選項(xiàng)B)、D)中字符數(shù)組s的大小至少為8,才能存放下字符串。(字符串的末尾都有結(jié)束標(biāo)志"、0")。31、有以下函數(shù):intfun(char*s){char*t=s:while(*t++);return(t—s);)該函數(shù)的功能是()A)計(jì)算S所指字符串的長度B)比較兩個字符串的大小〇計(jì)算S所指字符串占用內(nèi)存字節(jié)的個數(shù)D)將S所指字符串復(fù)制到字符串t中參考答案:A【解析】首先char*s接受一個字符型數(shù)組的首地址并將這個首地址賦給另ー個字符型指針char*t,while(*t++)不斷循環(huán)直到*t為W,再將t-l,這時字符指針t指向字符串的最后ー個字符,又因?yàn)閟指向字符數(shù)組的首地址即字符串的首地址所以retum(t-s)便是返回字符數(shù)組中字符串的長度。32、有以下程序(注:字符a的ASCH碼位為97):#include<stdio.h>main(){char*s={"abc”};do{printf(M%dM,*s%10);++s; }while(*s);程序運(yùn)行后的輸出結(jié)果是()〇789abc〇7890D)979899參考答案:A【解析】 因?yàn)樾懽址鸻,b,c的ASCII的值分別為97,98,99,而在dowhile循環(huán)語句中,每次對字符的ASCII的值取余數(shù)并輸出,所以分別輸出7,8,9。33、設(shè)有如下函數(shù)定義:#include<stdio.h>intfun(intk){if(k<l)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;)若執(zhí)行調(diào)用語句:n=fun(3);,則函數(shù)fun總共被調(diào)用的次數(shù)是()。2345參考答案:B【解析】首先n=fun(3),3被當(dāng)作參數(shù)傳遞進(jìn)去,這就進(jìn)行了一次調(diào)用,3被當(dāng)做參數(shù)傳進(jìn)去后,程序會執(zhí)行這句elsereturnfun(k—1)+1:這就調(diào)用了第二次,而參數(shù)是3—1也就是2。2被當(dāng)做參數(shù)傳進(jìn)去后,程序會執(zhí)行這句elsereturnfun(k-1)+1:這就調(diào)用了第三次,而參數(shù)是2—1也就是1。1被當(dāng)做參數(shù)傳進(jìn)去后,程序會執(zhí)行這句elseif(k==l)return1;不再遞歸調(diào)用,所以最終結(jié)果為3次。34、有以下程序:#include<stdio.h>intf(intn);main(){inta=3,s;s=f(a);s=s+f(a);printf("%d\n",s);)intf(intn){staticinta=1;n+=a++;returnn;)程序運(yùn)行后的輸出結(jié)果是()。98710參考答案:A【解析】題目中靜態(tài)局部變量a,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元,在程序整個運(yùn)行期冋都不釋放。所以第一次調(diào)用函數(shù)執(zhí)行n+=a++;時a先與n相加在再進(jìn)行自增。n的值為4,a的值為2,且a變量執(zhí)行完后空間沒有釋放。再執(zhí)行s=s+f(a)時,s的值為4,調(diào)用f(a)函數(shù)時n的返回值為n=3+2=5,且此時a的值為3了。所以s的值為9。35、設(shè)有定義:structcomplex{intreahunreal;}datal={1,8},data2;則以下賦值語句中錯誤的是()〇A)data2=(2,6);data2=datal;data2.real=data1.real;data2.real=data1.unreal;參考答案:A【解析】A)選項(xiàng)中可以在聲明變量的同事為data2賦值,但是data2=(2,6);應(yīng)寫作data2={2,6}〇所以選擇A)。36、有以下程序:#include<stdio.h>structS{intn:inta[20]: };voidf(structS*p){inti,j,t;for(i=0;i<p—>n—1;i++)for(j=i+l;j<p->n;j++)if(p->a[i]>p—>a[j]){t=p->a[i];p->a[i]=p->a[j]; p->a[j]=t;}}main(){inti;structSs={10,{2,3,1,6,8,7,5,4,10,9}};f(&s);for(i=0;i<s.n; i++)printf(M%d,0,s.a[i]);)程序運(yùn)行后的輸出結(jié)果是()。A)2,3,1,6,8,7,5,4,10,9,B)10,9,8,7,6,5,4,3,2,1,〇1,2,3,4,5,6,7,8,9,10,D)10,9,8,7,6,1,2,3,4,5,參考答案:C【解析】本題的子函數(shù)f的功能是對結(jié)構(gòu)體變量s中第二個成員數(shù)組中所有的數(shù)據(jù)進(jìn)行從小到大的冒泡排序,所以結(jié)果是C)。37、有以下程序:#include<stdio.h>#include<string.h>typedefstruct{charname[9];charsex;intscore[2]; }STU;STUf(STUa){STUb={“Zhao",'m',85,90);inti;strcpy(,);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];returna;)main(){STUc={“Qian”,f,95,92},d;d=f(c);printf("%s,%c,%d,%d,",,d.sex,d.score[0],d.score[l]);printf(u%s,%c,%d,%d\nH, ,c.sex,c.score[0],c.score[l]);程序運(yùn)行后的輸出結(jié)果是()?A)Zhao,m,85,9〇,Qian,f,95,92B)Zhao,m,85,90,Zhao,m,85,90Qian,f,95,92,Qian,f,95,92Qian,f,95,92,Zhao,m,85,90參考答案:A【解析】本題考査的是函數(shù)調(diào)用時的參數(shù)傳遞問題。程序在調(diào)用函數(shù)f時,傳給函數(shù)f的參數(shù)只是結(jié)構(gòu)變量c在棧中的一個拷貝,函數(shù)f所做所有操作只是針對這個數(shù)據(jù)拷貝進(jìn)行的修改,這些都不會影響變量c的值。38、以下關(guān)于宏的敘述中正確的是()〇A)宏替換沒有數(shù)據(jù)類型限制B)宏定義必須位于源程序中所有語句之前〇宏名必須用大寫字母表示D)宏調(diào)用比函數(shù)調(diào)用耗費(fèi)時間參考答案:A【解析】宏定義寫在函數(shù)的花括號外邊,作用域?yàn)槠浜蟮某绦?通常在文件的最開頭,所以B)選項(xiàng)中宏定義必須位于源程序中所有語句之前是錯誤的。宏名一般用大寫,但不是必須用大寫,所以C)選項(xiàng)錯誤。宏展開不占運(yùn)行時間,只占編譯時間,函數(shù)調(diào)用占運(yùn)行時間(分配內(nèi)存、保留現(xiàn)場、值傳遞、返回值),所以D)選項(xiàng)錯誤。39、設(shè)有以下語句:inta=1,b=2,c;c=aA(b?2);執(zhí)行后,c的值為()〇7986參考答案:B【解析】b為2,二進(jìn)制為00000010,執(zhí)行左移兩位操作后為00001000,然后與a00000001做異或操作結(jié)果為00001001,即十進(jìn)制的940有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]={l,2,3}?i,n;fp=fopen(,,dl.datM,W);for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\nM);fclose(fp);fp=fopen("dl.da匕Hr");fscanf(fp,"%d”,&n);fclose(fp):printf(n%d\nH,n);}程序的運(yùn)行結(jié)果是()。A)321123001123參考答案:D【解析】程序首先將數(shù)組a[10]中的元素1、2、3分別寫入了文件dl.dat文件中,然后又將dl.dat文件中的數(shù)據(jù)123,整體寫入到了變量n的空間中,所以打印n時輸出的數(shù)據(jù)為123。無紙化選擇41、下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是().A)循環(huán)隊(duì)列B)帶鏈隊(duì)列〇ニ叉樹D)帶鏈棧參考答案:C【解析】樹是簡單的非線性結(jié)構(gòu),所以ニ叉樹作為樹的ー種也是?種非線性結(jié)構(gòu)。2、下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照“先進(jìn)后出"原則存取數(shù)據(jù)的是()。A)循環(huán)隊(duì)列B)棧C)隊(duì)列D)ニ叉樹參考答案:B【解析】棧是按先進(jìn)后出的原則組織數(shù)據(jù)的。隊(duì)列是先進(jìn)先出的原則組織數(shù)據(jù)3、對于循環(huán)隊(duì)列,下列敘述中正確的是()。A)隊(duì)頭指針是固定不變的B)隊(duì)頭指針一定大于隊(duì)尾指針〇隊(duì)頭指針一定小于隊(duì)尾指針D)隊(duì)頭指針可以大于隊(duì)尾指針,也可以小于隊(duì)尾指針參考答案:D【解析】循環(huán)隊(duì)列的隊(duì)頭指針與隊(duì)尾指針都不是固定的,隨著入隊(duì)與出隊(duì)操作要進(jìn)行變化。因?yàn)槭茄h(huán)利用的隊(duì)列結(jié)構(gòu)所以對頭指針有時可能大于隊(duì)尾指針有時也可能小于隊(duì)尾指針。4、算法的空間復(fù)雜度是指()。A)算法在執(zhí)行過程中所需要的計(jì)算機(jī)存儲空間B)算法所處理的數(shù)據(jù)量〇算法程序中的語句或指令條數(shù)D)算法在執(zhí)行過程中所需要的臨時工作単無數(shù)參考答案:A【解析】算法的空間復(fù)雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間。所以選擇A)。5、軟件設(shè)計(jì)中劃分模塊的ー個準(zhǔn)則是().A)低內(nèi)聚低耦合B)高內(nèi)聚低耦合〇低內(nèi)聚高耦合D)咼內(nèi)聚咼耦合參考答案:B【解析】一?般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之冋的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性。6、下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)原則的是().A)可封裝B)自頂向下〇模塊化D)逐步求精參考答案:A【解析】結(jié)構(gòu)化程序設(shè)計(jì)的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語句,所以選擇A)。7、軟件詳細(xì)設(shè)計(jì)生產(chǎn)的圖如下:該圖是()N—S圖PAD圖〇程序流程圖D)E-R圖參考答案:C【解析】N-S圖提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,所以A)不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細(xì)設(shè)計(jì)的圖形表示工具,所以B)不對。E—R圖是數(shù)據(jù)庫中的用于表示E—R模型的圖示工具,所以D)不對。根據(jù)圖中所示表示方法是進(jìn)行軟件詳細(xì)設(shè)計(jì)時使用的程序流程圖。8、數(shù)據(jù)庫管理系統(tǒng)是()。A)操作系統(tǒng)的一部分B)在操作系統(tǒng)支持下的系統(tǒng)軟件〇ー種編譯系統(tǒng)D)ー種操作系統(tǒng)參考答案:B【解析】數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機(jī)構(gòu),它是ー種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等。是一種在操作系統(tǒng)之上的系統(tǒng)軟件。9、在E-R圖中,用來表示實(shí)體聯(lián)系的圖形是()。A)橢圓形B)矩形C)菱形D)三角形參考答案:C【解析】在E-R圖中實(shí)體集用矩形,屬性用橢圓,聯(lián)系用菱形。10、有三個關(guān)系R、S和T如下:則關(guān)系T是由關(guān)系R和S通過某種操作得到,該操作為()。參考答案:D【解析】在關(guān)系T中包含了關(guān)系R與S中的所有元組,所以進(jìn)行的是并的運(yùn)算。11、以下關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)的敘述中正確的是A)結(jié)構(gòu)化程序使用got。語句會很便捷B)在C語言中,程序的模塊化是利用函數(shù)實(shí)現(xiàn)的〇ー個結(jié)構(gòu)化程序必須同時由順序、分支、循環(huán)三種結(jié)構(gòu)組成D)由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題參考答案:B【解析】濫用goto語句將使程序的流程毫無規(guī)律,可讀性差,對于初學(xué)者來說盡量不要使用,所以A錯誤。ー個結(jié)構(gòu)化程序可以包含順序、分支、循環(huán)結(jié)構(gòu)中的ー種或多種,所以C錯誤。由三種基本結(jié)構(gòu)構(gòu)成的程序可以解決任何復(fù)雜的問題,所以D錯誤。12、對于ー個正常運(yùn)行的C程序,以下敘述中正確的是A)程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束B)程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束〇程序的執(zhí)行總是從main函數(shù)開始D)程序的執(zhí)行總是從程序的第一個函數(shù)開
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國電話振鈴器行業(yè)投資前景及策略咨詢研究報告
- 2025年儲冰車項(xiàng)目可行性研究報告
- 2025至2030年中國尼塔綢數(shù)據(jù)監(jiān)測研究報告
- 寵物飼養(yǎng)員崗位能力培訓(xùn)考核試卷
- 地?zé)豳Y源利用技術(shù)考核試卷
- 建筑砌塊施工現(xiàn)場管理考核試卷
- 護(hù)坡勞務(wù)承包合同范本2025年安全施工專項(xiàng)
- 農(nóng)產(chǎn)品倉儲庫存優(yōu)化策略考核試卷
- 2025-2030年新能源汽車廢舊電池回收企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年數(shù)學(xué)解題輔導(dǎo)機(jī)器人行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- VDA6.3 2023過程審核教材
- 烹飪實(shí)訓(xùn)室安全隱患分析報告
- 《金屬加工的基礎(chǔ)》課件
- 運(yùn)輸行業(yè)春節(jié)安全生產(chǎn)培訓(xùn) 文明駕駛保平安
- 體驗(yàn)式沙盤-收獲季節(jié)
- 老年護(hù)理陪護(hù)培訓(xùn)課件
- 2019年420聯(lián)考《申論》真題(山西卷)試卷(鄉(xiāng)鎮(zhèn)卷)及答案
- 醫(yī)院投訴糾紛及處理記錄表
- YY/T 0698.5-2023最終滅菌醫(yī)療器械包裝材料第5部分:透氣材料與塑料膜組成的可密封組合袋和卷材要求和試驗(yàn)方法
- 醬香型白酒工廠設(shè)計(jì)
- 【深度教學(xué)研究國內(nèi)外文獻(xiàn)綜述2100字】
評論
0/150
提交評論