全國計(jì)算機(jī)等級(jí)考試《二級(jí)C語言程序設(shè)計(jì)》歷年真題與模擬試題詳解446p(共448頁)_第1頁
全國計(jì)算機(jī)等級(jí)考試《二級(jí)C語言程序設(shè)計(jì)》歷年真題與模擬試題詳解446p(共448頁)_第2頁
全國計(jì)算機(jī)等級(jí)考試《二級(jí)C語言程序設(shè)計(jì)》歷年真題與模擬試題詳解446p(共448頁)_第3頁
全國計(jì)算機(jī)等級(jí)考試《二級(jí)C語言程序設(shè)計(jì)》歷年真題與模擬試題詳解446p(共448頁)_第4頁
全國計(jì)算機(jī)等級(jí)考試《二級(jí)C語言程序設(shè)計(jì)》歷年真題與模擬試題詳解446p(共448頁)_第5頁
已閱讀5頁,還剩446頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)歷年真題與模擬試題詳解最新資料,WORD格式,可編輯修改!目錄第一部分歷年真題及詳解52016年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解52015年9月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解182015年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解332014年9月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解482014年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解622013年9月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解762013年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解91201

2、2年9月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解1062012年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解1212011年9月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解1352011年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解1492010年9月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解1652010年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解1802009年9月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解1952009年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解2092008年9月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解224第二部分模擬

3、試題及詳解239全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)模擬試題及詳解(一)239全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)模擬試題及詳解(二)255第一部分歷年真題及詳解2016年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解(考試時(shí)間120分鐘 滿分100分)一、選擇題(每題1分,共40分)1有以下定義:struct dataint i;char c;double d;x;以下敘述中錯(cuò)誤的是( )。Ax的內(nèi)存地址與x.i的內(nèi)存地址相同Bstruct data是一個(gè)類型名C初始化時(shí),可以對x的所有成員同時(shí)賦初值D成員i、c和d占用的是同一個(gè)存儲(chǔ)空間【答案】D【解析】變量i、c、d是結(jié)構(gòu)體變量x中三

4、個(gè)不同的成員,占用不同的存儲(chǔ)空間。2以下函數(shù)的功能是:計(jì)算a的n次方作為函數(shù)值返回。double fun(double a,int n)int i;double s=1.0;for(i=1;i<=n;i+)s= ;return s;為實(shí)現(xiàn)上述功能,函數(shù)中下劃線處應(yīng)填入的是( )。As*iBs*aCs+i*iDs+a*a【答案】B【解析】s為a的(i-1)次方的結(jié)果,所以令s=s*a即可得到a的i次方。3有以下程序:#include<stdio.h>#include<string.h>main()char str ="Hello,Beijing"

5、printf("%d,%dn",strlen(str),sizeof(str);程序的運(yùn)行結(jié)果是( )。A13,13B13,14C13,15D14,15【答案】B【解析】strlen返回字符串的長度,不包含字符串末尾的結(jié)束字符0,結(jié)果為13;sizeof返回字符串所占存儲(chǔ)空間的大小,由于字符串最后要加上一個(gè)0,所以結(jié)果為13+1=14。4若有說明:typedef structint a;char c;w;,則以下敘述正確的是( )。A編譯后系統(tǒng)為w分配5個(gè)字節(jié)B編譯后系統(tǒng)為w分配6個(gè)字節(jié)C編譯后系統(tǒng)為w分配8個(gè)字節(jié)D編譯后系統(tǒng)不為w分配存儲(chǔ)空間【答案】D【解析】w是一個(gè)自定

6、義類型,不是變量,故編譯后系統(tǒng)不為w分配存儲(chǔ)空間。當(dāng)w定義為結(jié)構(gòu)體變量時(shí)才會(huì)為其分配存儲(chǔ)空間。5以下敘述中錯(cuò)誤的是( )。A同一個(gè)數(shù)組中所有元素的類型相同B不可以跳過前面的數(shù)組元素,給后面的元素賦初值0C定義語句:int a10=0;,給a數(shù)組中所有元素賦初值0D若有定義語句:int a4=1,2,3,4,5;,編譯時(shí)將忽略多余的初值【答案】D【解析】數(shù)組初始化時(shí),若賦初值的個(gè)數(shù)多于所定義數(shù)組的元素個(gè)數(shù)時(shí),編譯器會(huì)報(bào)錯(cuò)。6若有以下定義:struct ttchar name10;char sex;aa="aaaa",F,*p=&aa;則錯(cuò)誤的語句是( )。Ascanf

7、("%c",aa.sex);Baa.sex=getchar( );Cprintf("%cn",(*p).sex);Dprintf("%cn",p->sex);【答案】A【解析】sex是一個(gè)char類型變量,不是地址,A項(xiàng)應(yīng)為scanf("%c",&aa.sex);。7C語言編譯程序的功能是( )。A執(zhí)行一個(gè)C語言編寫的源程序B把C源程序翻譯成ASCII碼C把C源程序翻譯成機(jī)器代碼D把C源程序與系統(tǒng)提供的庫函數(shù)組合成一個(gè)二進(jìn)制執(zhí)行文件【答案】C【解析】編譯程序的功能是將“高級(jí)語言”翻譯為“機(jī)器語言”,將

8、C語言語句轉(zhuǎn)換成二進(jìn)制的機(jī)器指令。8有以下程序:#include<stdio.h>int fun(int n)if(n)return fun(n-1)+n;else return 0;main( )printf("%dn",fun(3);程序的運(yùn)行結(jié)果是( )。A4B5C6D7【答案】C【解析】fun函數(shù)是一個(gè)遞歸函數(shù),調(diào)用f(3),參數(shù)n=3,返回f(3-1)+3=f(2)+3=f(1)+2+3=f(0)+1+2+3=0+6=6。9有以下程序:#include<stdio.h>main( )int sum=0,x=5;dosum+=x;while(

9、!-x);printf("%dn",sum);程序的運(yùn)行結(jié)果是( )。A0B5C14D15【答案】B【解析】do-while循環(huán),先執(zhí)行循環(huán)體sum+=x,則sum=sum+x=0+5=5,再執(zhí)行while中的表達(dá)式,結(jié)果為0,退出循環(huán),所以運(yùn)行結(jié)果是5。10下面不屬于軟件設(shè)計(jì)階段任務(wù)的是( )。A軟件的功能確定B軟件的總體結(jié)構(gòu)設(shè)計(jì)C軟件的數(shù)據(jù)設(shè)計(jì)D軟件的過程設(shè)計(jì)【答案】A【解析】軟件設(shè)計(jì)階段的任務(wù)包括:結(jié)構(gòu)設(shè)計(jì);數(shù)據(jù)設(shè)計(jì);接口設(shè)計(jì);過程設(shè)計(jì)。軟件的功能確定是在需求分析階段完成的。11有以下程序:#include<stdio.h>#include<stri

10、ng.h>typedef structchar name9;char sex;float score2;STU;void f(STU*a)strcpy(a->name,"Zhao");a->sex=m;a->score1=90.0;main( )STU c="Qian",f,95.0,92.0,*d=&c; f(d);printf("%s,%c,%2.0f,%2.0fn",d->name,c.sex,c.score0,c.score1);程序的運(yùn)行結(jié)果是( )。AQian,f,95,92BZhao

11、,f,95,90CZhao,m,95,90DZhao,f,95,92【答案】C【解析】f函數(shù)調(diào)用時(shí),結(jié)構(gòu)體數(shù)組名作為實(shí)參傳給形參指針,結(jié)構(gòu)體指針a指向數(shù)組c的首地址。因此,f可以對數(shù)組c中的元素賦值,故返回主函數(shù)之后,數(shù)組c中的成員值已被更新。main函數(shù)中有賦值語句"*d=&c;",指針d指向結(jié)構(gòu)體數(shù)組c的首地址,故d->name=,輸出結(jié)果為Zhao,m,95,90。12在C語言程序中,下列說法正確的是( )。A函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套B函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套C函數(shù)的定義和調(diào)用均不可以嵌套D函數(shù)的定義和調(diào)用

12、均可以嵌套【答案】B【解析】函數(shù)定義都是在函數(shù)外部進(jìn)行的,函數(shù)調(diào)用是在函數(shù)內(nèi)部進(jìn)行的,所以函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套。13執(zhí)行以下程序段后,s的值為( )。int a =1,2,3,4,5,6,7,8,9,s=0,k;for(k=0;k<8;k+=2)s+=*(a+k);A13B16C17D45【答案】B【解析】數(shù)組a中的元素為:a0=1,a1=2,a8=9。k=0時(shí),s=s+*(a+0)=0+1=1;k=2時(shí),s=1+*(a+2)=1+3=4;k=4時(shí),s=4+5=9;k=6時(shí),s=9+7=16。14有以下程序:#include<stdio.h>#defin

13、e M 5#define f(x,y) x*y+Mmain( )int k;k=f(2,3)*f(2,3);printf("%dn",k);程序的運(yùn)行結(jié)果是( )。A22B41C100D121【答案】B【解析】宏定義中的函數(shù)在調(diào)用時(shí)只做簡單的替換,不能進(jìn)行任何修改。所以k=2*3+5*2*3+5=41。15有以下程序:#include<stdio.h>main( )char ch=Z;ch=(ch-A+1)%26+A;putchar(ch);程序的運(yùn)行結(jié)果是( )。AZBYCBDA【答案】D【解析】Z的ASCII碼是90,A的ASCII碼是65,所以ch=(ch

14、-A+1)%26+A=26%26+65=65,輸出65對應(yīng)的字符A 。16下面屬于黑盒測試方法的是( )。A基本路徑測試B等價(jià)類劃分C判定覆蓋測試D語句覆蓋測試【答案】B【解析】等價(jià)類劃分法是一種典型的、重要的黑盒測試方法,它將程序所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分成若干個(gè)等價(jià)類進(jìn)行測試。基本路徑測試、判定覆蓋測試和語句覆蓋測試都屬于白盒測試。17有以下程序:#include<stdio.h>main( )int i,j,k,a=5,b=6;i=(a=b)?+a:-b;j=a+;k=b;printf("%d,%d,%dn",i,j,k);程序的運(yùn)行結(jié)果是(

15、 )。A7,6,5B5,5,5C7,5,5D5,6,5【答案】B【解析】條件表達(dá)式i=(a=b)?+a:-b;中先執(zhí)行a=b,值為假,根據(jù)三元運(yùn)算符語法規(guī)則,執(zhí)行-b,此時(shí)b為5,賦給i,i=5;j=a+,將a=5先賦給j,再進(jìn)行a+,j=5,a=6,k=b=5,故最后輸出的是5,5,5。18C語言程序中,若函數(shù)無返回值,則應(yīng)該對函數(shù)說明的類型是( )。AintBdoubleCcharDvoid【答案】D【解析】int表示返回值是整型,double表示返回值是雙精度型,char表示返回值是字符型,void表示無返回值。19有以下程序:#include<stdio.h>main( )

16、int k,n=0;char c,str="teach"for(k=0;strk;k+)c=strk;switch(k)case 1:case 3:case 5:putchar(c);printf("%d",+n);break;default:putchar(N);序的運(yùn)行結(jié)果是( )。ANe1NNBe1a2e3CNe1Nc2NDNa1NNNN【答案】C【解析】程序執(zhí)行過程:k=0時(shí),c=str0=t,執(zhí)行default分支,輸出N;k=1時(shí),c=e,執(zhí)行case 1分支,沒有break語句,繼續(xù)執(zhí)行case 3分支,沒有break語句,繼續(xù)執(zhí)行case

17、 5分支,輸出e1;k=2時(shí),c=a,輸出N;k=3,c=c,輸出c2;k=4,c=h,輸出N。故程序的輸出結(jié)果為Ne1Nc2N。20有以下程序:#include<stdio.h>void fun(char(*p)6)int i;for(i=0;i<4;i+)printf("%c",pii);printf("n");main( )char s66="ABCDE","abcde","12345","FGHIJ","fghij","

18、54321"fun(s); 程序的運(yùn)行結(jié)果是( )。AAa1FBAb3ICABCDDfghij【答案】B【解析】函數(shù)fun的功能是輸出sii,二維數(shù)組的對角線元素,所以程序會(huì)輸出s00、s11、s22、s33,即Ab3I。21設(shè)變量x為long int型并已正確賦值,以下表達(dá)式中能將x的百位上的數(shù)字提取出的是( )。Ax/10%100Bx%10/100Cx%100/10Dx/100%10【答案】D【解析】x/100的個(gè)位數(shù)是x的百位數(shù)上的數(shù)字,所以再進(jìn)行除10取余運(yùn)算即可得到該數(shù)字。22在E-R圖中,表示實(shí)體的圖形是( )。A矩形B橢圓C菱形D圓【答案】A【解析】在E-R圖中,矩形表

19、示實(shí)體集,矩形內(nèi)寫該實(shí)體集的名字。23下面對軟件特點(diǎn)描述不正確的是( )。A軟件是一種邏輯實(shí)體,具有抽象性B軟件開發(fā)、運(yùn)行對計(jì)算機(jī)系統(tǒng)具有依賴性C軟件開發(fā)涉及軟件知識(shí)產(chǎn)權(quán)、法律及心理等社會(huì)因素D軟件運(yùn)行存在磨損和老化問題【答案】D【解析】與硬件不同,軟件在運(yùn)行、使用期間不存在磨損、老化問題。24設(shè)x,y,z均為實(shí)型變量,代數(shù)式在C語言中的正確寫法是( )。Ax/y*zBx%y%zCx/y/zDx*z/y【答案】C【解析】運(yùn)算符×、/的結(jié)合順序是從左到右,所以x先除以y,再除以z。25有以下程序:#include<stdio.h>#define N 4void fun(in

20、t a N,int b )int i;for(i=0;i<N;i+)bi=aiN-1-i;main()int xNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,yN,i;fun(x,y);for(i=0;i<N;i+)printf("%d,",yi);printf("n");程序的運(yùn)行結(jié)果是( )。A1,2,3,4,B3,6,9,12,C4,7,10,13,D1,5,9,13,【答案】C【解析】調(diào)用fun函數(shù),yi=xiN-1-i,N=4,x是4行4列的二維數(shù)組。i=0時(shí),y0= x04-1=x03=4;i

21、=1時(shí),y1=x14-1-1=x12=7;i=2時(shí),y2=x24-1-2=x21=10;i=3時(shí),y3=x30=13。26在下列鏈表中,能夠從任意一個(gè)結(jié)點(diǎn)出發(fā)直接訪問到所有結(jié)點(diǎn)的是( )。A單鏈表B循環(huán)鏈表C雙向鏈表D二叉鏈表【答案】B【解析】線性單鏈表,必須從頭指針開始,才能訪問到所有的結(jié)點(diǎn);循環(huán)鏈表的最后一個(gè)結(jié)點(diǎn)的指針域指向表頭結(jié)點(diǎn),所有結(jié)點(diǎn)的指針構(gòu)成了一個(gè)環(huán)狀鏈,只要指出表中任何一個(gè)結(jié)點(diǎn)的位置就可以從它出發(fā)訪問到表中其他所有的結(jié)點(diǎn);雙向鏈表頭結(jié)點(diǎn)和尾結(jié)點(diǎn)之間沒有鏈接,所以如果從中間結(jié)點(diǎn)開始訪問無法直接訪問到所有結(jié)點(diǎn);二叉鏈表從除根結(jié)點(diǎn)之外的任意一個(gè)結(jié)點(diǎn)出發(fā)無法直接訪問到所有結(jié)點(diǎn)。27有以

22、下程序:#include<stdio.h>main( )int i,j,x=0;for(i=0;i<2;i+)x+;for(j=0;j<=3;j+)if(j%2=0)continue;x+;x+;printf("x=%dn",x);程序的運(yùn)行結(jié)果是( )。Ax=4Bx=6Cx=8Dx=12【答案】C【解析】第一次循環(huán):i=0,執(zhí)行x+后x=1,執(zhí)行內(nèi)層循環(huán)j=0,由于j%2!=0時(shí)才執(zhí)行x+,即只有j取1和3時(shí),執(zhí)行x+,此時(shí)x=1+1+1=3,跳出內(nèi)層循環(huán),執(zhí)行下一條x+,x=4,第二次循環(huán):x=1時(shí),重復(fù)上述循環(huán),共執(zhí)行兩次循環(huán),故x最終結(jié)果是4

23、*2=8。28對圖書進(jìn)行編目時(shí),圖書有如下屬性:ISBN書號(hào),書名,作者,出版社,出版日期。能作為關(guān)鍵字的是( )。AISBN書號(hào)B書名C作者,出版社D出版社,出版日期【答案】A【解析】關(guān)鍵字是指能惟一標(biāo)識(shí)元組的屬性或?qū)傩约?。書?hào)可以惟一標(biāo)識(shí)一本圖書,本題中,書名、作者、出版社、出版日期等字段都不能惟一標(biāo)識(shí)一本圖書。29若主函數(shù)中有定義語句:int a10,b10,c;,在主函數(shù)前定義的fun函數(shù)首部為:void fun(int x ),則以下選項(xiàng)中錯(cuò)誤的調(diào)用語句是( )。Afun(b);Bfun(&c);Cfun(&a3);Dfun(b11);【答案】D【解析】fun函數(shù)的

24、形式參數(shù)為一個(gè)數(shù)組,需要實(shí)參為一個(gè)地址,而b11是一個(gè)整型元素,參數(shù)類型不一致,且b11已經(jīng)溢出,所以D項(xiàng)錯(cuò)誤。30構(gòu)成C語言程序的三種基本結(jié)構(gòu)是( )。A順序結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)、遞歸結(jié)構(gòu)B順序結(jié)構(gòu)、嵌套結(jié)構(gòu)、遞歸結(jié)構(gòu)C順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)D選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、嵌套結(jié)構(gòu)【答案】C【解析】C語言程序是結(jié)構(gòu)化程序,由三種基本結(jié)構(gòu)組成:順序結(jié)構(gòu);選擇結(jié)構(gòu);循環(huán)結(jié)構(gòu)。31下列形式中不合法的常量是( )。A2.E8B-.28C-028D2e-8【答案】C【解析】0開頭表示的是八進(jìn)制整型常量,八進(jìn)制數(shù)只能用07的數(shù)字表示。32下列與棧結(jié)構(gòu)有關(guān)聯(lián)的是( )。A數(shù)組的定義域使用B操作系統(tǒng)的進(jìn)程調(diào)度C函數(shù)的

25、遞歸調(diào)用D選擇結(jié)構(gòu)的執(zhí)行【答案】C【解析】函數(shù)的遞歸調(diào)用是指函數(shù)調(diào)用函數(shù)本身,直到滿足特定條件時(shí)終止,然后從最后被遞歸調(diào)用處返回。遞歸函數(shù)是通過棧來實(shí)現(xiàn)的,所以調(diào)用原則和棧的實(shí)現(xiàn)相一致。33以下不是C語言字符型或字符串常量的是( )。A"Its"B"0"Ca=0D010【答案】C【解析】C項(xiàng)是一個(gè)賦值表達(dá)式。AB兩項(xiàng)是字符串常量,D項(xiàng)是字符常量。 34下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是( )。A雙向鏈表B循環(huán)鏈表C二叉鏈表D循環(huán)隊(duì)列【答案】C【解析】線性結(jié)構(gòu)的特點(diǎn):除了首結(jié)點(diǎn)和尾結(jié)點(diǎn)外,每一個(gè)結(jié)點(diǎn)只有一個(gè)前驅(qū)結(jié)點(diǎn)和一個(gè)后繼結(jié)點(diǎn)。線性表、棧、隊(duì)列都是線性結(jié)

26、構(gòu),循環(huán)鏈表和雙向鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu);帶鏈的棧是棧的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。二叉鏈表是二叉樹的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),二叉樹是非線性結(jié)構(gòu),所以二叉鏈表是非線性結(jié)構(gòu)。35有以下程序:#include<stdio.h>main()int k=10;printf("%4d,%o,%xn",k,k,k);程序的運(yùn)行結(jié)果是( )。(代表一個(gè)空格)A10,12,aB10,012,aC010,12,aD10,12,a【答案】D【解析】%4d表示輸出占4個(gè)字符的十進(jìn)制,故先輸出2個(gè)空格,然后輸出10;%o表示輸出八進(jìn)制,所以輸出10的八進(jìn)制為12;%x表示輸出十六進(jìn)制,即a。36數(shù)據(jù)庫管理

27、系統(tǒng)是( )。A操作系統(tǒng)的一部分B系統(tǒng)軟件C一種編譯系統(tǒng)D一種通信軟件系統(tǒng)【答案】B【解析】系統(tǒng)軟件主要包括:操作系統(tǒng)軟件;各種語言的解釋程序和編譯程序;各種服務(wù)性程序;各種數(shù)據(jù)庫管理系統(tǒng)。37若有定義:int a=1,b=2,c=3;,則執(zhí)行表達(dá)式(a=b+c)(+b)后,a,b,c的值依次為( )。A1,2,3B5,3,2C5,2,3D5,3,3【答案】C【解析】| 表示或運(yùn)算,當(dāng)?shù)谝粋€(gè)表達(dá)式為真時(shí),第二個(gè)表達(dá)式不執(zhí)行。根據(jù)運(yùn)算符的優(yōu)先級(jí)規(guī)則,先計(jì)算(a=b+c),將b+c的值賦值給a,則a=5,而 | 右邊的括號(hào)不會(huì)被執(zhí)行,所以b=2,c=3。38有兩個(gè)關(guān)系R和T如下:則由關(guān)系R得到關(guān)系

28、T的操作是( )。A選擇B交C投影D并【答案】C【解析】關(guān)系 T是由關(guān)系R的第1、3列的元組組成,這是對關(guān)系R進(jìn)行投影運(yùn)算的結(jié)果??梢院唵卫斫鉃椋哼x擇運(yùn)算是對行的操作,投影運(yùn)算是對列的操作。39設(shè)有:char s5,c;,則調(diào)用函數(shù)scanf能正確給s和c讀入數(shù)據(jù)的是( )。Ascanf("%s%c",s,c);Bscanf("%d%c",&s,&c);Cscanf("%d%c",s,&c);Dscanf("%s%c",s,&c);【答案】D【解析】s5中放的是字符串,故輸入的類型應(yīng)

29、該是%s;變量c中放的是字符,故輸入的類型是%c。要正確讀入數(shù)據(jù)必須要使用s和c的地址,而s代表就是字符數(shù)組的首地址。40若變量已正確定義并賦值,則錯(cuò)誤的賦值語句是( )。Aa+=a+1;Ba=sizeof(double);Ca=dc;Da+1=a;【答案】D【解析】賦值號(hào)“=”的左邊必須是一個(gè)變量名,不可以是表達(dá)式。二、程序填空題(共18分)下列給定的程序中,函數(shù)fun()的功能是:求出以下分?jǐn)?shù)序列的前n項(xiàng)和。2/1,3/2,5/3,8/5,13/8,21/13,和值通過函數(shù)值返回main()函數(shù)。例如,若輸入n=5,則應(yīng)輸出8.。注意:請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)

30、fun的橫線上填入所編寫的若干表達(dá)式或語句?!驹囶}源程序】#include<stdio.h>#include<conio.h>double fun(int n)int a=2,b=1,c,k;double【1】;for(k=1;k<=n;k+)s=s+1.0*a/b;c=a;a+=【2】;b=c;return(s);main( )int n=5;printf("nThe value of function is:%lfn",【3】);答:【1】s=0.0【2】b【3】fun(n)【解析】填空【1】:此處要對變量s進(jìn)行聲明,因?yàn)楹竺嬗袑的累加操

31、作,所以s一定要進(jìn)行初始化,即s=0.0。填空【2】:此處是循環(huán)求和,由數(shù)列可以看出后一項(xiàng)分?jǐn)?shù)的分子是前一項(xiàng)分母與分子之和,即a=a+b或者a+=b。填空【3】:此處進(jìn)行子函數(shù)調(diào)用。三、程序修改題(共18分)給定程序中函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算如下公式的值。y=1+例如,若m中的值為:5,則應(yīng)輸出:1.。請改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)?!驹囶}源程序】#include<stdio.h>double fun(int m)double y=1.0;int i;/*found*/for(i=2;i<

32、;m;i+)/*found*/y+=1/(i*i);return(y);main( )int n=5;printf("nThe result is %lfn",fun(n);答:(1)錯(cuò)誤:for(i=2;i<m;i+)正確:for(i=2;i<=m;i+)(2)錯(cuò)誤:y+=1(i*i)正確:y+=1.0(i*i)【解析】錯(cuò)誤(1):使用for循環(huán)計(jì)算公式取到m時(shí),最后一次循環(huán)應(yīng)該等于m,所以i<m應(yīng)改為i<=m。錯(cuò)誤(2):在除法運(yùn)算中,如果除數(shù)和被除數(shù)都是整數(shù),那么所除結(jié)果也是整數(shù),因此需要對結(jié)果進(jìn)行強(qiáng)制轉(zhuǎn)換或者將除數(shù)或被除數(shù)其中一個(gè)整型常量變?yōu)?/p>

33、浮點(diǎn)型常量。四、程序設(shè)計(jì)題(共24分)請編寫函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從pn-1(p<n-1)的數(shù)組元素平移到數(shù)組的前面。例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值為6。移動(dòng)后,一維數(shù)組的內(nèi)容應(yīng)為7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。注意:請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句?!驹囶}源程序】#include<stdio.h>#define N 80void fun(in

34、t *w,int p,int n)main()int aN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;int i,p,n=15;printf("The original data:n");for(i=0;i<n;i+)printf("%3d",ai);printf("nnEnter p:");scanf("%d",&p);fun(a,p,n);printf("nThe data after moving:n");for(i=0;i<n;i+)pr

35、intf("%3d",ai);printf("nn");答:void fun(int*w,int p,int n)int i,j,t;for(i=p;i<=n-1;i+)t=wn-1;for(j=n-2;j>=0;j-)wj+1=wj;w0=t;【解析】本題采用“循環(huán)右移”的算法。2015年9月全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言程序設(shè)計(jì)真題及詳解(考試時(shí)間120分鐘 滿分100分)一、選擇題(每題1分,共40分)1下列敘述中正確的是( )。A所有數(shù)據(jù)結(jié)構(gòu)必須有根結(jié)點(diǎn)B所有數(shù)據(jù)結(jié)構(gòu)必須有終端結(jié)點(diǎn)(即葉子結(jié)點(diǎn))C只有一個(gè)根結(jié)點(diǎn),且只有一個(gè)葉子結(jié)點(diǎn)的數(shù)據(jù)

36、結(jié)構(gòu)一定是線性結(jié)構(gòu)D沒有根結(jié)點(diǎn)或沒有葉子結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)一定是非線性結(jié)構(gòu)【答案】D【解析】D項(xiàng)正確,線性結(jié)構(gòu)的特點(diǎn)是:集合中必存在“第一個(gè)元素”且惟一;集合中必存在“最后一個(gè)元素”且惟一;除最后一個(gè)元素外,其他數(shù)據(jù)元素均有惟一的“后繼”;除第一個(gè)元素外,其他數(shù)據(jù)元素均有惟一的“前驅(qū)”。所以沒有根結(jié)點(diǎn)或沒有葉子結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)一定是非線性結(jié)構(gòu)。AB兩項(xiàng)錯(cuò)誤,不是所有數(shù)據(jù)結(jié)構(gòu)都必須有根結(jié)點(diǎn)和葉子結(jié)點(diǎn);C項(xiàng)錯(cuò)誤,數(shù)據(jù)結(jié)構(gòu)中若有中間結(jié)點(diǎn)不滿足只有一個(gè)前件或者后件的條件,就不是線性結(jié)構(gòu)。2以下敘述中錯(cuò)誤的是( )。AC語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令BC程序經(jīng)過編譯、鏈接步

37、驟之后才能形成一個(gè)真正可執(zhí)行的二進(jìn)制機(jī)器指令文件C用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個(gè)文本文件中DC語言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序【答案】A【解析】A項(xiàng)錯(cuò)誤,注釋語句不會(huì)被翻譯成二進(jìn)制的機(jī)器指令。C源程序經(jīng)過C編譯程序編譯之后生成后綴為.obj的二進(jìn)制文件(稱為目標(biāo)文件),然后由“鏈接程序”(Link)的軟件把.obj文件與各種庫函數(shù)連接起來生成一個(gè)后綴為.exe的可執(zhí)行文件。3C語言主要是借助以下( )功能來實(shí)現(xiàn)程序模塊化的。A定義函數(shù)B定義常量和外部變量C三種基本結(jié)構(gòu)語句D豐富的數(shù)據(jù)類型【答案】A【解析】C程序的模塊化主要通過函數(shù)來實(shí)現(xiàn)。C語言允許

38、對函數(shù)單獨(dú)進(jìn)行編譯,從而可以實(shí)現(xiàn)模塊化。4有以下程序段:char ch; int k;ch=a; k =12;printf("%c,%d,",ch,ch,k); printf("k=%dn",k);已知字符a的ASCII碼十進(jìn)制值為97,則執(zhí)行上述程序段后輸出的結(jié)果是( )。A因變量類型與格式描述符的類型不匹配,輸出無定值B輸出項(xiàng)與格式描述符個(gè)數(shù)不符,輸出為零值或不定值Ca,97,12k=12Da,97,k=12【答案】D【解析】字符變量的值是該字符的ASCII碼值,可以參與整型變量所允許的任何運(yùn)算?!癱h=a”,c表示以字符格式輸出ch的值,所以輸出為

39、a;d表示以十進(jìn)制代碼的形式輸出ch的值,為97;k沒有對應(yīng)的輸出格式,不輸出。在第二個(gè)語句中,首先輸出“k=”,然后以十進(jìn)制代碼輸出k的值,為12。5下列敘述中正確的是( )。A棧是“先進(jìn)先出”的線性表B隊(duì)列是“先進(jìn)后出”的線性表C循環(huán)隊(duì)列是非線性結(jié)構(gòu)D有序線性表既可以采用順序存儲(chǔ)結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)【答案】D【解析】有序的線性表既可采用順序存儲(chǔ)結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。A項(xiàng)錯(cuò)誤,棧是“先進(jìn)后出”的線性表;B項(xiàng)錯(cuò)誤,隊(duì)列是“先進(jìn)先出”的線性表;C項(xiàng)錯(cuò)誤,循環(huán)隊(duì)列是線性結(jié)構(gòu)的,有序的線性表既可采用順序存儲(chǔ)結(jié)構(gòu),也可采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。6若要實(shí)現(xiàn)total=1+2+3+4+5求和,以下

40、程序段錯(cuò)誤的是( )。Aint i=1,total=1;while(i<5) total +=i;i+=1;Bint i=1,total=0;while(i<=5) total +=i;i+=1;Cint i=0,total=0;while(i<5) i +=1;total+=i;Dint i=0,total=0;while(i<=5) total +=i;i+=1; 【答案】A【解析】A項(xiàng)執(zhí)行過程為:i=1,total=1,判斷while循環(huán)條件1<5成立,total=1+1,i=2;判斷循環(huán)條件執(zhí)行函數(shù)體,直到i=4,total=1+1+2+3+4,i=5;i

41、=5循環(huán)條件不成立,退出循環(huán),A項(xiàng)不能實(shí)現(xiàn)題目要求,錯(cuò)誤。B項(xiàng)執(zhí)行過程:i=1,total=0,1<=5成立,total=0+1=1,i=2;直到i=5,total=1+2+3+4+5,i=6;i=6條件不成立,退出循環(huán),程序正確。C項(xiàng)執(zhí)行過程:i=0,total=0,0<5成立,i=1,total=1;直到i=5,total=1+2+3+4+5;i=5條件不成立,退出循環(huán),程序正確。D項(xiàng)執(zhí)行過程:i=0,total=0,0<=5成立,total=0,i=1;直到i=5,total=1+2+3+4+5,i=6;i=6條件不成立,退出循環(huán),程序正確。7下列不屬于軟件工程3個(gè)要素

42、的是( )。A工具B過程C方法D環(huán)境【答案】D【解析】軟件工程是指用工程的方法來構(gòu)建和維護(hù)軟件,其要素包括:方法,用于完成軟件工程項(xiàng)目的技術(shù)手段;工具,用于支持軟件的開發(fā)、管理、文檔生成;過程,用于支持軟件開發(fā)的各個(gè)環(huán)節(jié)的控制、管理。8下面不屬于黑盒測試方法的是( )。A邊界值分析法B基本路徑測試C等價(jià)類劃分法D錯(cuò)誤推測法【答案】B【解析】常見的黑盒測試方法有:等價(jià)類劃分法、邊界值分析法、錯(cuò)誤推測法以及因果圖等;常見的白盒測試方法有:邏輯覆蓋測試和基本路徑測試。9有三個(gè)關(guān)系R、S和T如下:則下列操作中正確的是( )。AT=RSBT=RSCT=R×S DT=R-S【答案】D【解析】圖中

43、關(guān)系R比關(guān)系S多一行T中的元組,故由關(guān)系R和S得到關(guān)系T的操作是差。10下列選項(xiàng)中,不屬于數(shù)據(jù)管理員(DBA)職責(zé)的是( )。A數(shù)據(jù)庫維護(hù)B數(shù)據(jù)庫設(shè)計(jì)C改善系統(tǒng)性能,提高系統(tǒng)效率D數(shù)據(jù)類型轉(zhuǎn)換【答案】D【解析】數(shù)據(jù)庫管理員對數(shù)據(jù)庫進(jìn)行規(guī)劃、設(shè)計(jì)、維護(hù)、監(jiān)視等,其主要工作有:數(shù)據(jù)庫設(shè)計(jì),主要是對數(shù)據(jù)模式進(jìn)行設(shè)計(jì);數(shù)據(jù)庫維護(hù),對數(shù)據(jù)庫中的數(shù)據(jù)安全性、完整性、并發(fā)控制及系統(tǒng)恢復(fù)、數(shù)據(jù)定期轉(zhuǎn)儲(chǔ)等進(jìn)行實(shí)施與維護(hù);改善系統(tǒng)性能,不斷調(diào)整內(nèi)部結(jié)構(gòu),提高系統(tǒng)效率。11有以下程序#include <stdio.h>main()int a=0,b=0;/*給a賦值a=10;b=20;給b賦值*/pri

44、ntf("a+b=%dn",a+b);/*輸出計(jì)算結(jié)果*/程序運(yùn)行后的輸出結(jié)果是( )。Aa+b=0Ba+b=30Ca+b=10D出錯(cuò)【答案】A【解析】注釋/*和*/之間的代碼不參與編譯,所以a、b的值仍為0。12有以下程序段#include <stdio.h>main()int a,b,c; a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%d b=%d c=%dn",a,b,c);程序的輸出結(jié)果是( )。Aa=10 b=50 c=30Ba=10 b=50 c=10Ca=10 b=30 c=10

45、Da=50 b=30 c=50【答案】B【解析】C語言中使用分號(hào)來作為語句的結(jié)束,所以a=b,b=c;是一條含有逗號(hào)運(yùn)算符語句。if條件不滿足,直接執(zhí)行c=a。13下列二叉樹描述中,正確的是( )。A任何一棵二叉樹必須有一個(gè)度為2的結(jié)點(diǎn)B二叉樹的度可以小于2C非空二叉樹有0個(gè)或1個(gè)根結(jié)點(diǎn)D至少有2個(gè)根結(jié)點(diǎn)【答案】B【解析】非空的樹形結(jié)構(gòu)有且只有一個(gè)根結(jié)點(diǎn),二叉樹是每個(gè)結(jié)點(diǎn)最多有兩棵子樹的樹形結(jié)構(gòu)。度是一個(gè)結(jié)點(diǎn)所擁有的后件個(gè)數(shù),二叉樹中所有結(jié)點(diǎn)中的最大的度稱為二叉樹的度。14下列敘述中,不符合良好程序設(shè)計(jì)風(fēng)格要求的是( )。A程序的效率第一,清晰第二B程序的可讀性好C程序中要有必要的注釋D輸入數(shù)

46、據(jù)前要有提示信息【答案】A【解析】“清晰第一,效率第二”是當(dāng)今主導(dǎo)的程序設(shè)計(jì)風(fēng)格。對程序的要求不僅是能夠運(yùn)行正常,還要便于調(diào)試和維護(hù),所以程序要具有良好的可讀性,語句結(jié)構(gòu)應(yīng)該簡單直接,這有利于程序的開發(fā)與維護(hù)。15有以下程序#include <stdio.h>main() int x,y,z;x=y=1;z=x+,y+,+y;printf("%d,%d,%dn",x,y,z); 程序運(yùn)行后的輸出結(jié)果是( )。A2,3,1B2,3,2C2,3,3D2,2,1【答案】A【解析】對于表達(dá)式“z=x+,y+,+y;”,因?yàn)橘x值運(yùn)算符的優(yōu)先級(jí)高于逗號(hào)運(yùn)算符的優(yōu)先級(jí),所以可

47、以將上式改成“(z=x+),(y+),(+y)”。然后從左向右先計(jì)算表達(dá)式z=x+,后綴自增運(yùn)算先進(jìn)行其他運(yùn)算,再執(zhí)行自增運(yùn)算,所以z的值為1,x的值為2,再計(jì)算逗號(hào)表達(dá)式第二個(gè)表達(dá)式y(tǒng)+,此時(shí)y的值為1,y+的值為2,最后計(jì)算第三個(gè)表達(dá)式+y,y的值為3。16設(shè)二叉樹如下:則后序序列為( )。AABDEGCFHBDBGEAFHCCDGEBHFCADABCDEFGH【答案】C【解析】二叉樹的遍歷方式包括:前序遍歷,先訪問根結(jié)點(diǎn),再訪問左右子樹;中序遍歷,訪問根結(jié)點(diǎn)在訪問左右子樹之間;后序遍歷,在訪問左右子樹之后再訪問根結(jié)點(diǎn)。本題中,樹不為空,所以先后序遍歷左子樹,得DGEB,再后序遍歷右子樹,

48、得HFC,最后訪問根結(jié)點(diǎn)。所以該二叉樹的后序序列為DGEBHFCA。17以下敘述中正確的是( )。Abreak語句不能用于提前結(jié)束for語句的本層循環(huán)B使用break語句可以使流程跳出switch語句體Ccontinue語句使得整個(gè)循環(huán)終止D在for語句中,continue與break的效果是一樣的,可以互換【答案】B【解析】B項(xiàng)正確,break語句可以跳出switch語句和循環(huán)。A項(xiàng)錯(cuò)誤,break語句在for循環(huán)內(nèi)部的作用是跳出循環(huán);C項(xiàng)錯(cuò)誤,continue語句的作用是跳過本次循環(huán)體中余下尚未執(zhí)行的語句,立刻進(jìn)行下一次的循環(huán)條件判定,即僅結(jié)束本次循環(huán),并沒有使整個(gè)循環(huán)終止;D項(xiàng)錯(cuò)誤,co

49、ntinue和break的效果完全不同。18有以下程序:#include <stdio.h>main() int a=1,b=0;if(-a) b+;else if(a=0) b+=2;else b+=3;printf("%dn",b);程序運(yùn)行后的輸出結(jié)果是( )。A0B1C2D3【答案】C【解析】“+”和“-”運(yùn)算,當(dāng)以前綴形式出現(xiàn)時(shí),則先進(jìn)行加一或減一操作,再進(jìn)行其他運(yùn)算,當(dāng)以后綴形式出現(xiàn)時(shí),則先進(jìn)行其他運(yùn)算,再進(jìn)行加一或減一操作。a初始定義為1,b為0,執(zhí)行-a,a的值變?yōu)?,即if判斷為假,執(zhí)行b+=2,輸出b的值為2。19待排序的關(guān)鍵碼序列為(15,

50、20,9,30,67,65,45,90),要按關(guān)鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關(guān)鍵碼15被放到第( )個(gè)位置。A2B3C4D5【答案】B【解析】簡單選擇排序的算法可以描述為:前面的元素已經(jīng)有序,掃描剩下的線性表,找到最小的元素,將它交換到剩余表的最前面,直到剩余表為空。所以第一趟排序后,將選出的最小元素與15交換,15被放在第3個(gè)位置。20下列關(guān)系表達(dá)式中,結(jié)果為“假”的是( )。A(3+4)>6B(3!=4)>2C3<=4 | 3D(3<4)=1【答案】B【解析】A項(xiàng),先執(zhí)行3+4=7,7>6,結(jié)果為真;B項(xiàng),先執(zhí)行3!=4為真,即為1,

51、1>2結(jié)果為假;C項(xiàng),先執(zhí)行3<=4結(jié)果為真,即1,再邏輯或3,結(jié)果為真;D項(xiàng),先執(zhí)行3<4結(jié)果為真,即為1,再執(zhí)行1=1,結(jié)果為真。21有如下程序:#include <stdio.h>main()int i;for (i=0;i<5;i+)putchar(9-i);printf("n");程序運(yùn)行后的輸出結(jié)果是( )。A54321B98765C98765D43210【答案】B【解析】本題執(zhí)行過程為:i=0,輸出字符9,在i<5的情況下,依次輸出字符8、7、6、5。在i=5時(shí),退出for循環(huán)。最后顯示在命令窗口結(jié)果為98765。22

52、下列敘述中正確的是( )。A可以用關(guān)系運(yùn)算符比較字符串的大小B空字符串不占用內(nèi)存,其內(nèi)存空間大小是0C兩個(gè)連續(xù)的單引號(hào)是合法的字符常量D兩個(gè)連續(xù)的雙引號(hào)是合法的字符串常量【答案】D【解析】A項(xiàng)錯(cuò)誤,關(guān)系運(yùn)算符不能比較字符串大小,可以用函數(shù)庫中的字符串比較函數(shù)來比較字符串的大??;B項(xiàng)錯(cuò)誤,空字符串占用一個(gè)字節(jié)的內(nèi)存;C項(xiàng)錯(cuò)誤,字符常量是用單引號(hào)把一個(gè)字符括起來。D項(xiàng)正確,兩個(gè)連續(xù)的雙引號(hào)是一個(gè)字符串常量,稱為空串。23以下關(guān)于C語言函數(shù)參數(shù)傳遞方式的敘述正確的是( )。A數(shù)據(jù)只能從實(shí)參單向傳遞給形參B數(shù)據(jù)可以在實(shí)參和形參之間雙向傳遞C數(shù)據(jù)只能從形參單向傳遞給實(shí)參DC語言的函數(shù),參數(shù)既可以從實(shí)參單向傳遞給形參,也可以在實(shí)參和形參之間雙向傳遞,可視情況選擇使用【答案】A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論