2021-2022年湖南省婁底市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2021-2022年湖南省婁底市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2021-2022年湖南省婁底市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2021-2022年湖南省婁底市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2021-2022年湖南省婁底市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年湖南省婁底市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序段:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下選項中表達(dá)式的值為11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->x

2.下列結(jié)構(gòu)體類型說明和變量定義中正確的是()。

A.structREC;{intn;charc;};RECt1,t2;

B.typedefstruct{intn;charc;}REC;RECt1,t2;

C.typedefstructREC;{intn=0;charc=‘A’;}t1,t2;

D.struct{intn;charc;}REC;RECt1,t2;

3.若有定義intx=3,y=2和floata=2.5,b=3.5,則表達(dá)式:(x+y)%2+(int)a/(int)b的值是()。

A.0B.2C.1.5D.1

4.有以下程序:#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-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(“%d”,y[i]);printf(“\n”);}程序的運行結(jié)果是()。

A.-3,-1,1,3,B.-12,-3,0,0,C.0,1,2,3,D.-3,-3,-3,-3,

5.面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,它的基本原理是()。

A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系

B.強(qiáng)調(diào)模擬現(xiàn)實世界中的算法而不強(qiáng)調(diào)概念

C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題

D.不強(qiáng)調(diào)模擬現(xiàn)實世界中的算法而強(qiáng)調(diào)概念

6.以下程序的輸出結(jié)果是()。main{inta=1,b;for(b=1,b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a=3;}printf("%d\n",b);}A.A.3B.4C.5D.6

7.在供應(yīng)關(guān)系中,實體供應(yīng)商和實體零件之間的聯(lián)系是()。

A.多對多B.一對一C.多對一D.一對多

8.

9.

10.以下敘述中正確的是()。

A.在switch語句中,不一定使用break語句

B.break語句只能用于switch語句

C.break語句必須與switch語句中的case配對使用

D.在switch語句中必須使用default

11.有以下程序#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(“%d\n”,d);}程序運行后的輸出結(jié)果是A.10B.9C.8D.7

12.

13.順序查找法適合于存儲結(jié)構(gòu)為()的線性表。

A.散列存儲B.順序存儲或鏈?zhǔn)酱鎯.壓縮存儲D.索引存儲

14.在循環(huán)雙鏈表的p所指的結(jié)點之前插入s所指結(jié)點的操作是()。A.p->prior->prior

B.p->prior->prior

C.s->prior->next=s

D.s->prior->prior=s

15.以下敘述中錯誤的是()。

A.C語言編寫的函數(shù)源程序,其文件名后綴可以是C

B.C語言編寫的函數(shù)都可以作為一個獨立的源程序文件

C.C語言編寫的每個函數(shù)都可以進(jìn)行獨立的編譯并執(zhí)行

D.一個C語言程序只能有一個主函數(shù)

16.某二叉樹結(jié)點的中序序列為A、B、C、D、E、F、G,后序序列為B、D、C、A、F、G、E,該二叉樹對應(yīng)的層次遍歷序列為()

A.E、G、F、A、C、D、B

B.E、A、C、B、D、G、F

C.E、A、G、C、F、B、D

D.E、G、A、C、D、F、B

17.參加百年阿里培訓(xùn)的n位同學(xué)結(jié)伴去西湖旁邊為游人指路,兩人一組,他們打算先讓體重之和恰好為102公斤的同學(xué)一組,請給出一個算法找到這樣的組合,或者確定他們中不存在這樣的組合,其中最優(yōu)的算法時間復(fù)雜度為?(假設(shè)體重均為整數(shù))()

A.O(log(n))B.O(n)C.O(nlog(n))D.O(n^2)

18.有以下程序:#include<stdio,h>#include<string,h>struetSTU{intnam;floatTotalSeore;};voidf(strnctSTUp){structSTUs[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore=s[1].TotalScore;main(){structSTUs[2]={{20041,703},{20042,580}};f(s[0]);printf("%d%3.Of\n",s[0].num,s[0].TotalSeore);}程序運行后的輸出結(jié)果是()。

A.20045537B.20044550C.20042580D.20041703

19.程序設(shè)計的任務(wù)包括()。

A.編寫程序代碼并上機(jī)調(diào)試B.確定所用數(shù)據(jù)結(jié)構(gòu)C.確定所用算法D.以上選項均正確

20.下面關(guān)于哈希(Hash,雜湊)查找的說法正確的是()

A.哈希函數(shù)構(gòu)造的越復(fù)雜越好,因為這樣隨機(jī)性好,沖突小

B.除留余數(shù)法是所有哈希函數(shù)中最好的

C.不存在特別好與壞的哈希函數(shù),要視情況而定

D.若需在哈希表中刪去一個元素,不管用任何方法解決沖突都只要簡單地將該元素刪去即可

二、2.填空題(20題)21.若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請寫出完整的的輸出語句()。

22.C語言中用______表示邏輯值為“真”,用數(shù)字“0”表示邏輯值為“假”。

23.設(shè)有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

執(zhí)行上面的程序段后,*(ptr+5)的值為______。

24.以下程序的作用是:從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(【】);

ch=fsetc(fp);

while(!feof(fp)){putchar(ch);ch=fgetc(fp);}

putchar('\n');fclose(fp);

}

25.以下程序的功能是調(diào)用函數(shù)fun計算:m=1-2+3-4+…+9-10,并輸出結(jié)果。請?zhí)羁铡?/p>

intfun(intn)

{

intm=0,f=1,i;

for(i=1:i<=n;i++)

{

m+=i*f;

f=______;

}

returnm;

}

main()

{printf(“m=%d\n”,______)};

26.下列程序的輸出結(jié)果是【】。

main()

{

inta[]={2,4,6},*prt=&a[0],x=8,y,z;

for(y=0;y<3;y++)

z=(*(ptr+y<x)?*(ptr+y):x;

printf("%d\n",z);

}

27.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

28.下列程序的輸出結(jié)果是______。

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

29.若有說明chars1[]="Thatgirl",s2[]="isbeautiful";則使用函數(shù)strcmp(s1,s2)后,結(jié)果是______。

30.下列程序的運行結(jié)果是______。

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf('%s\n",p);

}

31.有以下程序:

#include<stdio.h>

main()

{charch1,ch2;intn1,n2;

ch1=getchar();ch2=getehar();

n1=ch1-'0';n2=n1*10+(ch2-'0');

printf("%d\n",n2);

}

程序運行時輸入:12<回車>,執(zhí)行后的輸出結(jié)果是【】。

32.耦合和內(nèi)聚是評價模塊獨立性的兩個主要標(biāo)準(zhǔn),其中______反映了模塊內(nèi)各成分之間的聯(lián)系。

33.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

#deftneJFT(x)x*x

main()

{inta,k=3;

a=++JFT(k+1);

printf("%d",a);

}

34.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

main()

{ints[]={1,2,3,4},i;

intx=0;

for(i=0;i<4;i++)

{x=sb(s,x);

printf("%d",x);}

printf("\n");}

sb(s1,y)

int*s1,y;

{staticinti1=3;

y=s1[i1];

i1--;

return(y);}

35.以下程序的功能是根據(jù)輸入的"y"("Y")與"n"("N"),在屏幕上分別顯示出"ThisisYES."與"ThisisNO."??瞻滋幮枰钊氲膬?nèi)容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

36.軟件維護(hù)活動包括以下幾類:改正性維護(hù)、適應(yīng)性維護(hù)、【】維護(hù)和預(yù)防性維護(hù)。

37.以下程序的輸出結(jié)果是【】。

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{

inti=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

38.以下函數(shù)fun的功能是返回str所指字符中中以形參c中字符開頭的后續(xù)字符串的首地址,例如:str所指字符串為“Hello!”,c中的字符為'e',則函數(shù)返回字符串"ello!"的首地址。若str所指字符串為空中或不包含c中的字符,則函數(shù)返回NULL。請?zhí)羁铡?/p>

char*fun(char*str,charc)

{intn=0;char*p=str;

if(p!=NULL)

while(P[n]!=c&&p[n]!='\0')n++;

if(p[n]=='\0')retumNULL;

return(【】);

}

39.以卜函數(shù)sstrcat()的功能是實現(xiàn)寧符串的連接,即將t所指字符串復(fù)制到s所指字符串的尾部。例如:s所指字符串為abcd,t所指字符申為efgh,函數(shù)調(diào)用后s所指字符串為abcdefgh。請?zhí)羁铡?/p>

#include<string.h>

voidsstrcat(char*s,char*t)

{intn;

n=strlen(s);

while(*(s+n)=){s++;t++;}

}

40.軟件需求規(guī)格說明書應(yīng)具有完整性、無歧義性、正確性、可驗證性、可修改性等特性,其中最重要的是【】。

三、1.選擇題(20題)41.有以下程序:#include<stdio.h>main(){unsignedchara,b;a=413;b=4&3;printf("%d%d\n",a,b);}執(zhí)行后的輸出結(jié)果是()。

A.70B.07C.11D.430

42.為了使模塊盡可能獨立,要求()。

A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強(qiáng)

B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強(qiáng)

43.下列寫法正確的是()。

A.main(){inti=3,j;j=5}

B.main(){inti=3;

C.main()

D.main(){;}

44.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序運行后的輸出結(jié)果是______。

A.運行后報錯B.66C.611D.510

45.下面的程序輸出結(jié)果是______。#definer16#ifr==16voidp(inta){printf("%x",a);}#elsevoidp(inta){printf("%d",a);}#endifmain(){p(32);}

A.32B.20C.編譯時錯誤D.運行時錯誤

46.一些重要的程序語言(如Pascal語言)允許過程的遞歸調(diào)用,而實現(xiàn)遞歸調(diào)用中的存儲分配通常用()。

A.棧B.堆C.數(shù)組D.鏈表

47.信息隱蔽的概念與下述哪一種概念直接相關(guān)()。

A.軟件結(jié)構(gòu)定義B.模塊獨立性C.模塊類型劃分D.模塊耦合度

48.有以下程序#include<stdio.h>main(){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");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%d\n",n);}程序的運行結(jié)果是

A.12300B.123C.1D.321

49.下列程序的輸出結(jié)果是______。main(){inti,x[3][3]=(1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d,",x[i][2-i]);}

A.1,5,9B.1,4,7C.3,5,7D.3,6,9

50.在C語言中,表達(dá)式10!=9的值是______。

A.真B.非零值C.0D.1

51.若一個外部變量的定義形式為staticintx;,那么,其中static的作用應(yīng)該是______。

A.將變量存儲在靜態(tài)存儲區(qū)B.使變量x可以由系統(tǒng)自動初始化C.使x只能在本文件內(nèi)引用D.使x的值可以永久保留

52.用十六進(jìn)制的地址碼給存儲器的字節(jié)編址,其地址編號從0000到FFFF,則該存儲器的容量為()

A.1MBB.256KBC.64KBD.640KB

53.下列關(guān)鍵字中,不屬于C語言變量存儲類別的是______。

A.registerB.autoC.externD.public

54.C語言規(guī)定,函數(shù)返回值的類型是由

A.return語句中的表達(dá)式類型所決定

B.調(diào)用該函數(shù)時的主調(diào)函數(shù)類型所決定

C.調(diào)用該函數(shù)時系統(tǒng)臨時決定

D.在定義該函數(shù)時所指定的函數(shù)類型所決定

55.語句“printf("a\bhow\'are\'y\\\bou\n");”的輸出結(jié)果是()。

A.a\bhow\'are\'y\\bou

B.a\bhow\'are\'y\bou

C.how'are'you

D.ahow'are'y\bou

56.若要用下面的程序片段使指針變量p指向一個存儲整型變量的動態(tài)存儲單元int*pp=______malloc(sizeof(int));則應(yīng)填入______。

A.intB.int*C.(*int)D.(int*)

57.現(xiàn)代計算機(jī)之所以能自動地連續(xù)進(jìn)行數(shù)據(jù)處理,主要是因為()

A.采用了開關(guān)電路B.采用了半導(dǎo)體器件C.具有存儲程序的功能D.采用了二進(jìn)制

58.若有函數(shù)內(nèi)部說明:inta[3][4];則數(shù)組a中各元素

A.可在程序的運行階段得到初值0

B.可在程序的編譯階段得到初值0

C.不能得到確定的初值

D.可在程序的編譯或運行階段得到初值0

59.程序中頭文件type1.h的內(nèi)容是()。#defineN5#defineM1N*3程序如下:#define"type1.h"#defineM2N*2main(){inti;i=M1+M2;printf("%d\n",i);}程序編譯后運行的輸出結(jié)果是()。

A.10B.20C.25D.30

60.執(zhí)行以下語句的結(jié)果為______。y=10;x=y++;

A.x-10,y=10B.x=11,y=11C.x=10,y=11D.x=11,y=10

四、選擇題(20題)61.以下關(guān)于邏輯運算符兩側(cè)運算對象的敘述中正確的是()。

A.可以是任意合法的表達(dá)式B.只能是整數(shù)0或非0整數(shù)C.可以是結(jié)構(gòu)體類型的數(shù)據(jù)D.只能是整數(shù)0或1

62.有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;

}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

printf("%d\n",j);

}

程序的運行結(jié)果是

A.4B.3

C.2D.1

63.

64.已知大寫字母A的ASCII碼是65,小寫字母a的ACSII碼是97。下列能將變量C中的大寫字母轉(zhuǎn)換為對應(yīng)小寫字母的語句是()。

A.c=(c-'A')%26+'A'B.c=c+32C.c=c-'A'+'A'D.c=('A'+C)%26-'a'

65.

66.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關(guān)系運算包括()。

A.選擇、投影、連接B.排序、查找、統(tǒng)計C.關(guān)聯(lián)、更新、排序D.顯示、打印、制表

67.

68.有以下程序:

程序運行后的輸出結(jié)果是()。

A.12B.14C.1234D.123456

69.設(shè)intx=7,則~x的值是()。

A.-8B.7C.-1D.1

70.關(guān)系規(guī)范理論是關(guān)系數(shù)據(jù)庫進(jìn)行邏輯設(shè)計的基礎(chǔ),這個理論最基本的要求是關(guān)系中的每個屬性是()。

A.類型不變的B.寬度不變的C.不可分割的D.互不相關(guān)的

71.有以下程序段程序的輸出結(jié)果是()。

A.a=10b=50c=10

B.a=10b=50c=30

C.a=10b=30c=lO

D.a=50b=30c=50

72.以下選項中敘述錯誤的是()。

A.C程序函數(shù)中定義的賦有初值的靜態(tài)變量,每調(diào)用一次函數(shù),賦一次初值

B.在同一函數(shù)中,各復(fù)合語句內(nèi)可以定義變量,其作用域僅限本復(fù)合語句內(nèi)

C.C程序函數(shù)中定義的自動變量,系統(tǒng)不自動賦確定的初值

D.C程序函數(shù)的性能不可以說明為static型變量

73.以下程序的輸出結(jié)果是()。

#include<stdio.h>

voidmain()

{inta,b,d=241;

a=d/100%9;

b=(-1)&&(-1);

printf("%d,%d\n",a,b);}

A.6,1B.2,1C.6,0D.2,0

74.設(shè)有如下程序段

75.下面結(jié)構(gòu)體的定義語句中,錯誤的是()。

A.structord{intx;intY;intZ;};struetorda;

B.structord{intx;inty;intZ;}structorda;

C.structord{intX;intY;intZ;}a;

D.struct{intX;inty;intZ;}a;

76.

77.若有語句:Char*line[5];,以下敘述中正確的是()。

A.定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為Char的指針變量

B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組

C.定義line是一個指針數(shù)組,語句中的*號稱為間址運算符

D.定義line是一個指向字符型函數(shù)的指針

78.

79.設(shè)有如下說明

typedefstruct

{intn;

charc;

doublex;

}STD;

則以下選項中,能正確定義結(jié)構(gòu)體數(shù)組并賦初值的語句是

A.STDtt[2]={{1,’A’,62},{2,’B’,75}};B.STDtt[2]={1,"A",62,2,"B",75};

C.structtt[2]={{1,’A’},{2,’B’}};D.structtt[2]={{1,"A",62.5},{2,"B",75.0}};

80.運算符________的優(yōu)先級最高。

A.[]B.+=C.?:D.++

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc的功能是:判斷字符ch是,與str所指字符串中的某個字符相同;若相同,則什么也不做,若不同,則將其插在串的最后。請修改程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

//****found****

voidproc(charstr,charch)

{

while(*str&&*str!=ch)str++;

//****found****

if(*str==ch)

{str[0]=ch;

//****found****

str[1]=0:

}

}

voidmain

{

charstr[81],ch;

system("CLS");

printf("\nPleaseenterastring:");

gets(str);

printf("\nPleaseenterthecharacterto

search:");

ch=getchar;

proc(str,ch);

printf("\nTheresultis%s\n",str);

}

六、程序設(shè)計題(1題)82.某學(xué)生的記錄由學(xué)號、8門課程成績和平均分組成,學(xué)號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù),其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。

例如,學(xué)生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。

注意:部分源程序給出如下。

請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN8

typedefstruct

{

charnum[10];

doubles[N];

doubleave;

}STREC;

voldfun(STREC*a)

{

}

voidmain

STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};

inti;

fun(&s);

printf("The%ssstudentdata:\n",s.num);

for(i=0;i<N;i++)

printf("%4.1fkn",s.s[i]);

printf("\nknave=%7.3fkn",s.aVe);

printf("\n");

}

參考答案

1.C解析:要計算一個復(fù)雜的表達(dá)式時,首先要弄明白表達(dá)式中所有運算符的優(yōu)先級與結(jié)合性,本題中所涉及的運算符中,->的優(yōu)先級最高,*和++的優(yōu)先級相同,但其結(jié)合性為從右至左。所以選項A等價于*pt->y)也就是pt所指向的結(jié)構(gòu)體的成員指針變量y所指向的內(nèi)容。從前面的程序段不難看出,pt指向結(jié)構(gòu)體數(shù)組c的首地址,也就是指向它的第1個元素,在它的第1個元素中,指針變量y又被初始化為指向控型數(shù)組a的首地址,即指向數(shù)組a的第1個元素。故選項A中的表達(dá)式的值為a[0],也就是1。選項B中表達(dá)式的值就是c[0].x,即10。根據(jù)優(yōu)先級和結(jié)合性,選項C中的表達(dá)式等價于++(pt->x),由于是前綴++,所以整個表達(dá)式的值為pt->x的值加1,故為11。而選項D中,++是后綴形式,所以(pt++)的值還是pt的原值,即等于pt->x的值10。故應(yīng)該選擇C。

2.B選項A中“structREC”后面不能有分號。C選項中“typedefstructREC”的后面也不能有分號。選項D中“REC”是結(jié)構(gòu)體變量,不能當(dāng)作結(jié)構(gòu)體類型來使用。故本題答案為B選項。

3.D

4.A本題由fun函數(shù)可知,執(zhí)行for循環(huán),當(dāng)i=0時,b[0]=a[0][0]-a[0][3]=1-4=-3;當(dāng)i=1時,b[1]=a[1][1]-a[1][2]=6-7=-1;當(dāng)i=2時,b[2]=a[2][2]-a[2][1]=11-10=1;當(dāng)i=3時,b[3]=a[3][3]-a[3][0]=16-13=3。主函數(shù)中輸出y數(shù)組元素的值為:-3,-1,1,3。故本題答案為A選項。

5.C\n面向?qū)ο蟮脑O(shè)計方法的基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。它雖強(qiáng)調(diào)模擬現(xiàn)實世界中的概念而不強(qiáng)調(diào)算法,但是它鼓勵開發(fā)者在軟件開發(fā)的過程中從應(yīng)用領(lǐng)域的概念角度去思考。

\n

6.B當(dāng)b=1時,a=1,第二個if語句成立,此時a=6,返回for循環(huán);當(dāng)b=2,兩個if語句都為假,此時a=3,再返回循環(huán);當(dāng)b=3,第二個if成立,此時a=8,繼續(xù)循環(huán);當(dāng)b=4,第一個if成立,退出for循環(huán)體時b為4,a為8。

7.A一家供應(yīng)商可提供多種零件,一種零件也可被多家供應(yīng)商提供。所以實體供應(yīng)商和實體零件之間的聯(lián)系是多對多。本題答案為A選項。

8.C

9.B

10.Aswitch語句中不一定使用break語句,選項A正確;break語句除了用于switch語句,還可以用于循環(huán)語句中,選項B、C錯誤;switch語句不一定需要使用default語句,選項D錯誤。本題答案為A選項。

11.B

12.C

13.B

14.D

15.C函數(shù)是指預(yù)先定義功能塊,其目的是提高程序的重用性。在C語言中函數(shù)的源程序,后綴名可以為C。C語言所編寫的函數(shù)都可以是一個獨立的源文件。一個C語言程序只能有一個主函數(shù)。C語言中編寫的函數(shù)不是每個都可以獨立地編譯和執(zhí)行的,因為C語言中程序的開始為主函數(shù),如果程序中沒有主函數(shù)則無法進(jìn)行編譯和執(zhí)行。

16.C

17.B

18.D解析:函數(shù)f中定義了結(jié)構(gòu)體類型的變量P作為形參,在main函數(shù)中,將結(jié)構(gòu)體變量s[0]中的值傳給了形參變量P,在函數(shù)f中,雖然改變了p中的內(nèi)容,但其改變對main函數(shù)中s[0]的值不產(chǎn)生影響,所以main函數(shù)中輸出s[0]的數(shù)據(jù)仍然是main函數(shù)中初始化時的數(shù)據(jù)。

19.D程序設(shè)計是一門技術(shù),需要相應(yīng)的理論、技術(shù)、方法和工具來支持。程序設(shè)計的任務(wù)包括選項A)、B)、c)等方面。

20.C

21.printf(“a=%db=%d”aB);printf(“a=%d,b=%d”,a,B);解析:printf函數(shù)的一般格式為:“printf(格式控制,輸出表列)”。

22.非0非0解析:邏輯運算中,非0表示邏輯“真”,用。表示邏輯“假”。

23.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個知識點:①在C語言中,字符型數(shù)組在存放字符串時會自動在末尾加上字符串結(jié)束標(biāo)識符'\\0'所以題中數(shù)組str有6個元素。②ptr指向數(shù)組str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。

24.filea.dat"r"filea.dat,'r'解析:fopen函數(shù)的調(diào)用方式通常為fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并且是要讀取文件中的內(nèi)容,所以空白處應(yīng)當(dāng)填入'filea.dat','r'。

25.-f或f*-1或-1*f或f*(-1)或(*1)*f。fun(10)-f或f*-1或-1*f或f*(-1)或(*1)*f。\r\nfun(10)解析:本題考核的知識點是C程序的簡單應(yīng)用。本題要求調(diào)用fun()函數(shù)計算m的值,故在主函數(shù)中的空格處應(yīng)該填調(diào)用fun()函數(shù)的語句。fun()函數(shù)有一個形參n,為每次參加計算的值的個數(shù),故在主函數(shù)中的空格處應(yīng)該填fun(10),回到fun()函數(shù),函數(shù)用到了一個for循環(huán),共循環(huán)n次,當(dāng)循環(huán)第i次的時候,m的值等于m=1-2+……+[(-1)的i-1次方]*1所以在fun()函數(shù)的空格處應(yīng)該填使f改變符號的語句,故應(yīng)填*f或f*-1或-1*f或f*(-1)或(-1)*f。

26.66解析:條件運算符的優(yōu)先級高于賦值運算符,因此本題先計算關(guān)系個表達(dá)式(*ptr+y)<x)?(ptr+y):x的值,再賦紿變量z,當(dāng)y=O時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(pry)=2,所以z=2;當(dāng)y=1時*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=4,所以z=4;當(dāng)y=2時,*(ptr+y)=6,*((ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。

27.實例將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。所以,類是對象的抽象,對象則是其對應(yīng)類的一個實例。

28.3691236912解析:本題考查最基本的for循環(huán):for(cc=1;cc<5;cc++)規(guī)定循環(huán)次數(shù)為4次,每次a+=3即每次a的值增3,但因為fun函數(shù)中變量a為static類型,所以每次調(diào)用完于函數(shù)之后,變量a所做的改變都要保存。

29.-1-1解析:strcmp(s1,s2)函數(shù)的作用是:對字符數(shù)組s2和字符數(shù)組s1進(jìn)行比較。如果s1<s2,則返回負(fù)數(shù);如果s1==s2,則返回0;如果s1>s2,則返回正數(shù)。

30.efghefgh解析:本題考核的知識點是通過指針引用字符串.函數(shù)“的作用是讓形參指針s指向該字符串的右半部分.主函數(shù)中首先定義了一個字符型指針變量p和字符型指針str;并初始化為“abcdefgh”,然后調(diào)用函數(shù)ss,將實參str傳給形參s,因此可知該函數(shù)返回的指針,指向str所指的字符串“abcdefgh”的右半部分,即指向字符串“efgh”,所以最后輸出指針p(指針p的值為調(diào)用函數(shù)ss(sD)的返回值)所指向的字符串為“efgh。

31.1212解析:程序中的ch1與ch2為字符型變量,輸入12后,ch1得到字符'1',ch2得到字符'2'。n1=ch1-'0'將字符1,轉(zhuǎn)換為數(shù)值1,同理,n2為1*10+2=12。程序執(zhí)行后輸出十進(jìn)制整數(shù)12。

32.內(nèi)聚內(nèi)聚

33.99解析:宏替換的原則是按原樣替換,本題中遇到形參x則以實參k+1替換,其他字符不變,所以JFT(k+1)經(jīng)替換后為k+1,k+1,則a=++k+1*k+1。若k的值為3,則經(jīng)過運算為a=4+1*4+1=9。

34.43214321解析:靜態(tài)存儲類的局部變量其生存期為整個程序的運行期間,作用域卻只是定義它的函數(shù)或局部范圍。注意:局部變量和全局變量的作用域。

35.getchargetchar解析:考查了字符可以作為整型變量來對待,參與操作。題中要求根據(jù)輸入的字符調(diào)用函數(shù)YesNo來判斷輸入的字符是y(Y)還是n(N),字符的輸入可用字符輸入函數(shù)getchar。函數(shù)YesNo用來判斷一個字符是y(Y)還是n(N),主要用了一個switch多分支結(jié)構(gòu)來比較輸入字符與字符\ue008'y',\ue009'Y'、,'n','N'是否相等來實現(xiàn)的。

36.完善性軟件維護(hù)活動包括以下幾類:改正性維護(hù),適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù),完善性維護(hù)是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。

37.1616解析:首先用j和MCRA(i)替換MCRB(n,m)中的參數(shù)n和m,變成2*MCRA(j)+MCRA(i),再用j和i替換MCRA(m)中的參數(shù)m,變成2*2*j+2*i=2*2*3+2*2=16。

38.str+n或p+nstr+n或p+n解析:此題主要是將形參c中的字符與str中的字符相比較,返回以形參c中字符開頭的后續(xù)字符串,函數(shù)fun中的變量n用于記錄形參c中字符在str字符串中的位置,故返回的結(jié)果用str+n或p+n表示。

39.*t*t解析:函數(shù)中首先讓n=stxlen(s)所以while循環(huán)的循環(huán)條件表達(dá)式中*(s+n)指向字符串s的結(jié)束標(biāo)志'0',處,而該處應(yīng)該等于字符串t的第1個字符,另外循環(huán)體中讓s和t指向下一個字符,即s+n和t同時被移動到下一個位置,所以該處應(yīng)該填*t,即t所指內(nèi)容.當(dāng)t指向字符串結(jié)束標(biāo)志'\\0'的時候,整個循環(huán)條件表達(dá)式的值也為0(“假”)了,循環(huán)結(jié)束.正好滿足將t所指字符串復(fù)制到s所指的字符串的尾部。

40.正確性正確性解析:本題考查軟件工程中需求規(guī)格說明書的評審。衡量需求規(guī)格說明書好壞的標(biāo)準(zhǔn)按重要性次序排列為:正確性、無歧義性、完全性、可驗證性、一致性、可理解性、可修改性和可追蹤性。因此,劃線處應(yīng)填入“正確性”。

41.A解析:&是按位“與”運算符,其運算規(guī)則是:參加運算的兩個運算量,如果兩個相應(yīng)的位都為1,則該位的結(jié)果值為1,否則為0。|是按位“或”運算符,其運算規(guī)則是:兩個相應(yīng)位中只要有一個為1,該位的結(jié)果為1。4轉(zhuǎn)換為二進(jìn)制數(shù)為0100,3轉(zhuǎn)換為二進(jìn)制數(shù)為0011,則4|3=0111,即7,4&3=0000,即0。

42.B解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。耦合性與內(nèi)聚性是模塊獨立性的兩個定性標(biāo)準(zhǔn),耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。本題答案為B。

43.D解析:本題考查語句的基本構(gòu)成。選項A)中j=5后面少了一個分號:選項B)中少了“}”;選項C)不是一個完整的函數(shù)定義格式,一個完整的函數(shù)定義格式還包括一對花括號:選項D)正確,是一個空語句。

44.A解析:本題考核的知識點是通過指針引用數(shù)組的元素的方法.本題中首先定義了一個一維數(shù)組a并初始化,由于定義該數(shù)組的時候省略了長度,因此該數(shù)組的長度為初始化時候賦初值的個數(shù)即為12。數(shù)組名a代表數(shù)組的首地址,所以*p=a+5語句使得p指向數(shù)組的第6個元素,而在程序中定義了一個指針q并讓它指向空,實際上程序并沒有在內(nèi)存中為指針q開辟存儲空間,這樣給q賦值不允許的,故該程序運行后報錯。所以,4個選項中選項A符合題意。

45.B解析:“#definer16”的作用是指定用標(biāo)識符r來代替16,因此程序編譯時只編譯#if部分,故程序運行時,打印輸出十六進(jìn)制的32,即20。

46.A解析:一些較流行的程序語言允許過程的遞歸調(diào)用。遞歸調(diào)用就是過程調(diào)用本身。遞歸實現(xiàn)的是:當(dāng)過程每一次執(zhí)行后,都能返回到最近一次調(diào)用它的過程中。這樣各調(diào)用點之間形成一種后進(jìn)先出關(guān)系,而棧結(jié)構(gòu)正適合來存儲這些調(diào)用點。

47.B解析:信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。衡量軟件的模塊獨立性的度量標(biāo)準(zhǔn)是耦合性和內(nèi)聚性。一個模塊的耦合性越強(qiáng),則該模塊的模塊獨立性越強(qiáng)。

48.B解析:在函數(shù)中首先把整型數(shù)組a[10]中的每個元素寫入文件d1.dat中,然后再次打開這個文件,把文件d1.dat中的內(nèi)容讀入到整型變量n中,最后輸出變量n的值。

49.C

50.D

51.C解析:事實上,無論有無static修飾,外部變量都具有A、B和C三種特性。作為一種修飾,static僅是限制此類型外部變量韻引用范圍:只能在定義它的文件范圍內(nèi)使用。

52.C

53.D解析:變量的存儲類別具體包含四種:自動的(auto),靜態(tài)的(static),寄存器的(register),外部的(extern)。

54.D解析:C語言容許函數(shù)返回一個值,通過re-turn語句實現(xiàn),其格式是:

return(表達(dá)式);或return表達(dá)式;

功能是把表達(dá)式的值帶回主調(diào)函數(shù)的調(diào)用處,作為函數(shù)的返回值。函數(shù)返回值的類型以函數(shù)類型為準(zhǔn),為了明確表示“不帶回值”,可用“void”類型說明符定義“空類型”。在以下幾種情況下,可不在調(diào)用函數(shù)中對被調(diào)用函數(shù)類型聲明:①如果函數(shù)值是整型或字符型,可不進(jìn)行聲明,系統(tǒng)自動默認(rèn)函數(shù)值是整型。②如果被調(diào)用函數(shù)的定義出現(xiàn)在調(diào)用函數(shù)之前,可不進(jìn)行聲明。注意:函數(shù)的定義。

55.C解析:“\\b”格式符表示退格,功能是將它后面的字母把它前面的字母覆蓋,導(dǎo)致“\\b'’格式符前面的字母不能輸出;“\\'”格式符表示輸出單引號字符;“\\\\”格式符表示輸出反斜線字符。

56.D解析:不論p是指向什么類型的指針變量,都可以通過強(qiáng)制類型轉(zhuǎn)換的方法使之類型一致,強(qiáng)制類型轉(zhuǎn)換的格式為(數(shù)據(jù)類型*)。

57.C

58.C本題主要考查數(shù)組的定義及初始化。在對數(shù)組進(jìn)行定義和初始化時,需要注意以下事項。

(1)數(shù)組的內(nèi)存空間在編譯時確定,定義數(shù)組時的n值只能使用常量,不能使用變量。

(2)定義數(shù)組時可以不標(biāo)明數(shù)組元素的個數(shù),而是通過賦初值的方式確定,編譯系統(tǒng)將自動計算花括號內(nèi)的數(shù)據(jù)數(shù)量作為數(shù)組的元素個數(shù)。

(3)數(shù)組初始化時,當(dāng)初值的個數(shù)小于整型常量n時,編譯系統(tǒng)會自動補(bǔ)0。一旦給定初值數(shù)超過n,編譯系統(tǒng)將報錯。

(4)初始化數(shù)組的元素類型,必須與定義數(shù)組時的類型一致。

(5)數(shù)組名記錄了數(shù)組在內(nèi)存中的首地址,其值不能更改。

(6)除字符數(shù)組外,不能直接用數(shù)組名對數(shù)組進(jìn)行整體輸入或輸出。

本題中定義了一個3行4列的數(shù)組,但沒有對其進(jìn)行賦初值操作,可能我們會想在系統(tǒng)編譯時會自動補(bǔ)0,這只是在初值個數(shù)小于數(shù)組定義大小的情況下的操作,如果沒有進(jìn)行賦初值操作,數(shù)組中的元素值是不能被確定的。因此,本題答案選C。

59.C解析:i=M1+M2=N*3+N*2=5*3+5*2=25。

60.C解析:執(zhí)行語句x=y++,是先將y的值10賦給x,然后y自增。

61.AC語言的邏輯運算符比較特別,它的操作數(shù)沒有明確的數(shù)據(jù)類型,可以是任意合法的表達(dá)式,所以選擇A。

62.B題目給出的程序包括兩個部分:main函數(shù)和f函數(shù)。main函數(shù)的運行最后將變量j的值輸出,j的值為f(1)+f(2)。f函數(shù)只有一個實參n,當(dāng)n等于1時,f(1)的值為1,當(dāng)n大于1時,f的值為f(n-1)+1;若n=2,則f的值為f(1)+1=2,j的值為1+2=3。

63.A

64.B根據(jù)ASCII碼可知大寫字符A與小寫字符a的ASCIl碼相差32,而D中應(yīng)該是加上'a',選項A和C左側(cè)的表達(dá)式都是大寫字符C與大寫字符A的差與'a'的ASCIl代碼的和就是小寫字符c的ASCII代碼。

65.D

66.A\n關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關(guān)系運算,包括選擇運算、投影運算、連接運算。本題答案為A)。

\n

67.B

68.D本題考查的是文件的綜合應(yīng)用。本題首先以創(chuàng)建方式打開文件”d2.dat”,兩次調(diào)用fprintf函數(shù)把a(bǔ)[O],a[1],a[2],a[3],a[4],a[5]的值寫到文件”d2.d8t”中,文件”d2.dat”的內(nèi)容為:1,2,3<回車>4,5,6。然后把該文件關(guān)閉再以只讀方式打開,文件位置指針指向文件頭,再通過fs-canf函數(shù)從中讀取兩個整數(shù)到k和n中,由于格式符之間無間隔,因此輸入數(shù)據(jù)可以用回車隔開,故輸入的k的值為123,n的值為456。

69.A本題主要考查按位求反運算和C語言正負(fù)數(shù)的表示,“O”代表正數(shù),“1”代表負(fù)數(shù);x=7的二進(jìn)制為00111,第一個0代表正數(shù),~x為11000,第一個l代表負(fù)數(shù),值為8。

70.C關(guān)系規(guī)范理論是關(guān)系數(shù)據(jù)庫進(jìn)行邏輯設(shè)計的基礎(chǔ),這個理論最基本的要求是關(guān)系中的每個屬性是不可分割的。

71.A本題中a>b的!條件不滿足,因此不執(zhí)行逗號表達(dá)式“a=b,b=-c;”的操作,而是執(zhí)行“c=a”的操作,即c的值為10?!时绢}答案為A)。

72.A靜態(tài)變量不是每調(diào)用一次就賦一次初值,而是將需要定義許多相同的具有相同屬性的值時,使用靜態(tài)變量來節(jié)省空間,所以A選項錯誤。

73.B241/100=2,2%9=2,所以a=2,b為兩個非零的值的邏輯與,結(jié)果為1,。

74.A本題主要考查的是字符數(shù)組、字符串和字符指針的一些概念。數(shù)組元素個數(shù),是在定義數(shù)組的時候確定的,本題的S數(shù)組元素個數(shù)是20。而字符串長度是從該字符串的第1個字符開始,一直到“\0”字符為止,所歷經(jīng)的字符個數(shù),

“\0”不算在內(nèi)。所以本題P所指字符串(”Beijin9”)的長度為7。因此選項B)的敘述不正確。s是數(shù)組名,而不是指針變量,因此選項C)不正確。數(shù)組s中除了包含字符串“Beijin9”外,還包含其后的20個以內(nèi)字節(jié)的內(nèi)容,而指針變量p中包含的只是數(shù)組s的首地址。因此選項D)的說法也不正確。

75.B結(jié)構(gòu)體定義的類型說明的一般形式為:struct結(jié)構(gòu)體標(biāo)識名{類型名1結(jié)構(gòu)成員名表l;類型名2結(jié)構(gòu)成員名表2;···};。注意:①結(jié)構(gòu)體說明同樣要以分號結(jié)尾;②緊跟在結(jié)構(gòu)體類型說明之后進(jìn)行定義;③在說明一個無名結(jié)構(gòu)體類型的同時,直接進(jìn)行定義;④先說明結(jié)構(gòu)體類型,再單獨進(jìn)行變量定義等。所以B選項錯誤。

76.D

77.A解析:理解復(fù)雜定義要掌握兩點:一、右結(jié)合原則.本題中的定義char*line[5];等價于char*(line[5]);;二、自外向內(nèi)分解成typedef語句。char*(line[5]);等價于typedefchar*A;Aline[5];其中A被typedef定義成字符指針的別名,然后line被定義成A的一維數(shù)組,即字符指針的一維數(shù)組。再來看看行指針的定義char(*line)[5];它應(yīng)該被分解成typedefcharB[5];B*line;其中B被定義成包含5個元素的一維字符數(shù)組,然后line被定義成指向B的指針,即指向包含5個元素的一維字符數(shù)組的指針。所以兩者切不可混淆了,后者的括號不能省略。故本題應(yīng)該選擇A。

78.C

79.C本題主要考查關(guān)鍵字typedef的作用和結(jié)構(gòu)體的初始化。C語言不僅提供了豐富的數(shù)據(jù)類型,而且還允許由用戶自己定義類型說明符,也就是說,允許由用戶為已存在的數(shù)據(jù)類型名定義一個“別名”。類型定義符typedef即可用來完成此功能。說明新類型名的語句一般形式為:

typedef類型名標(biāo)識符;

這里的“類型名”必須是在此語句之前已有定義的類型標(biāo)識符,可以是任何基本類型、結(jié)構(gòu)或聯(lián)合類型符號。

在本題中,通過題目中程序的定義可以知道,STD為該結(jié)構(gòu)體的類型,而不是結(jié)構(gòu)體變量,因此,STDtt[2]的聲明是正確的。

由于結(jié)構(gòu)體的第三個成員變量為雙精度型,而在選項A中,輸入與其對應(yīng)的值是整型,數(shù)據(jù)類型不匹配,因此不正確。

由于結(jié)構(gòu)體的第二個成員變量為字符型,而在選項B和選項D中,用雙引號引起,表示字符串,而不是單個字符,因此不正確。

在選項C中,雖然缺少一個元素,但系統(tǒng)提供了一個默認(rèn)的值0。因此,這個賦值語句是正確的。

80.A

81.\n\t(1)錯誤:voidproc(charstr,charch)

\n正確:voidproc(char*str,charch)

\n(2)錯誤:if(*str==ch)

\n正確:if(*str==\0)

\n(3)錯誤:str[1]=0;

\n正確:str[1]=\0;

\n【解析】形參的個數(shù)和類型由調(diào)用該函數(shù)的實參的個數(shù)和類型決定,由main函數(shù)中調(diào)用的函數(shù)proc可知,“void

\nproe(charstr,charch)”應(yīng)改為“voidproc(char*str,char

\nch)”;將字符串中的每一個字符與給定字符相比較,'-3字符串結(jié)束或者字符串中有與給定字符相同的字符時結(jié)束。如果到字符串的最后一個字符仍沒找到與給定字符相同的字符,將給定字符插在字符串的最后,因此,“if(*str==ch)”應(yīng)改為“if(*str==\0)”;最后還要為字符串添加一個結(jié)束符,因此“str[1]=0;”應(yīng)改為“str[1]=\0”。\n

82.voidfun(STREC*a)

\n{

\ninti;

\na->ave=0.0;

\nfor(i=0;i<N;i++)

\na->ave=a->ave+a->s[i];

\n/*求各門課程成績的總和*/

\na->ave=a->ave/N;/*求平均分*/

\n}

\n【解析】本題考查的是指向結(jié)構(gòu)體類型的指針變量做參數(shù)和結(jié)構(gòu)體類型成員的運算。fun函數(shù)中求出平均成績,要帶回主函數(shù)則必須定義一個指針類型的形參STREC*a,同時引用成員使用指向運算符,a->ave和a->s[i]。

\n2021-2022年湖南省婁底市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序段:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下選項中表達(dá)式的值為11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->x

2.下列結(jié)構(gòu)體類型說明和變量定義中正確的是()。

A.structREC;{intn;charc;};RECt1,t2;

B.typedefstruct{intn;charc;}REC;RECt1,t2;

C.typedefstructREC;{intn=0;charc=‘A’;}t1,t2;

D.struct{intn;charc;}REC;RECt1,t2;

3.若有定義intx=3,y=2和floata=2.5,b=3.5,則表達(dá)式:(x+y)%2+(int)a/(int)b的值是()。

A.0B.2C.1.5D.1

4.有以下程序:#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-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(“%d”,y[i]);printf(“\n”);}程序的運行結(jié)果是()。

A.-3,-1,1,3,B.-12,-3,0,0,C.0,1,2,3,D.-3,-3,-3,-3,

5.面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,它的基本原理是()。

A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系

B.強(qiáng)調(diào)模擬現(xiàn)實世界中的算法而不強(qiáng)調(diào)概念

C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題

D.不強(qiáng)調(diào)模擬現(xiàn)實世界中的算法而強(qiáng)調(diào)概念

6.以下程序的輸出結(jié)果是()。main{inta=1,b;for(b=1,b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a=3;}printf("%d\n",b);}A.A.3B.4C.5D.6

7.在供應(yīng)關(guān)系中,實體供應(yīng)商和實體零件之間的聯(lián)系是()。

A.多對多B.一對一C.多對一D.一對多

8.

9.

10.以下敘述中正確的是()。

A.在switch語句中,不一定使用break語句

B.break語句只能用于switch語句

C.break語句必須與switch語句中的case配對使用

D.在switch語句中必須使用default

11.有以下程序#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(“%d\n”,d);}程序運行后的輸出結(jié)果是A.10B.9C.8D.7

12.

13.順序查找法適合于存儲結(jié)構(gòu)為()的線性表。

A.散列存儲B.順序存儲或鏈?zhǔn)酱鎯.壓縮存儲D.索引存儲

14.在循環(huán)雙鏈表的p所指的結(jié)點之前插入s所指結(jié)點的操作是()。A.p->prior->prior

B.p->prior->prior

C.s->prior->next=s

D.s->prior->prior=s

15.以下敘述中錯誤的是()。

A.C語言編寫的函數(shù)源程序,其文件名后綴可以是C

B.C語言編寫的函數(shù)都可以作為一個獨立的源程序文件

C.C語言編寫的每個函數(shù)都可以進(jìn)行獨立的編譯并執(zhí)行

D.一個C語言程序只能有一個主函數(shù)

16.某二叉樹結(jié)點的中序序列為A、B、C、D、E、F、G,后序序列為B、D、C、A、F、G、E,該二叉樹對應(yīng)的層次遍歷序列為()

A.E、G、F、A、C、D、B

B.E、A、C、B、D、G、F

C.E、A、G、C、F、B、D

D.E、G、A、C、D、F、B

17.參加百年阿里培訓(xùn)的n位同學(xué)結(jié)伴去西湖旁邊為游人指路,兩人一組,他們打算先讓體重之和恰好為102公斤的同學(xué)一組,請給出一個算法找到這樣的組合,或者確定他們中不存在這樣的組合,其中最優(yōu)的算法時間復(fù)雜度為?(假設(shè)體重均為整數(shù))()

A.O(log(n))B.O(n)C.O(nlog(n))D.O(n^2)

18.有以下程序:#include<stdio,h>#include<string,h>struetSTU{intnam;floatTotalSeore;};voidf(strnctSTUp){structSTUs[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore=s[1].TotalScore;main(){structSTUs[2]={{20041,703},{20042,580}};f(s[0]);printf("%d%3.Of\n",s[0].num,s[0].TotalSeore);}程序運行后的輸出結(jié)果是()。

A.20045537B.20044550C.20042580D.20041703

19.程序設(shè)計的任務(wù)包括()。

A.編寫程序代碼并上機(jī)調(diào)試B.確定所用數(shù)據(jù)結(jié)構(gòu)C.確定所用算法D.以上選項均正確

20.下面關(guān)于哈希(Hash,雜湊)查找的說法正確的是()

A.哈希函數(shù)構(gòu)造的越復(fù)雜越好,因為這樣隨機(jī)性好,沖突小

B.除留余數(shù)法是所有哈希函數(shù)中最好的

C.不存在特別好與壞的哈希函數(shù),要視情況而定

D.若需在哈希表中刪去一個元素,不管用任何方法解決沖突都只要簡單地將該元素刪去即可

二、2.填空題(20題)21.若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請寫出完整的的輸出語句()。

22.C語言中用______表示邏輯值為“真”,用數(shù)字“0”表示邏輯值為“假”。

23.設(shè)有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

執(zhí)行上面的程序段后,*(ptr+5)的值為______。

24.以下程序的作用是:從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(【】);

ch=fsetc(fp);

while(!feof(fp)){putchar(ch);ch=fgetc(fp);}

putchar('\n');fclose(fp);

}

25.以下程序的功能是調(diào)用函數(shù)fun計算:m=1-2+3-4+…+9-10,并輸出結(jié)果。請?zhí)羁铡?/p>

intfun(intn)

{

intm=0,f=1,i;

for(i=1:i<=n;i++)

{

m+=i*f;

f=______;

}

returnm;

}

main()

{printf(“m=%d\n”,______)};

26.下列程序的輸出結(jié)果是【】。

main()

{

inta[]={2,4,6},*prt=&a[0],x=8,y,z;

for(y=0;y<3;y++)

z=(*(ptr+y<x)?*(ptr+y):x;

printf("%d\n",z);

}

27.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

28.下列程序的輸出結(jié)果是______。

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

29.若有說明chars1[]="Thatgirl",s2[]="isbeautiful";則使用函數(shù)strcmp(s1,s2)后,結(jié)果是______。

30.下列程序的運行結(jié)果是______。

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf('%s\n",p);

}

31.有以下程序:

#include<stdio.h>

main()

{charch1,ch2;intn1,n2;

ch1=getchar();ch2=getehar();

n1=ch1-'0';n2=n1*10+(ch2-'0');

printf("%d\n",n2);

}

程序運行時輸入:12<回車>,執(zhí)行后的輸出結(jié)果是【】。

32.耦合和內(nèi)聚是評價模塊獨立性的兩個主要標(biāo)準(zhǔn),其中______反映了模塊內(nèi)各成分之間的聯(lián)系。

33.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

#deftneJFT(x)x*x

main()

{inta,k=3;

a=++JFT(k+1);

printf("%d",a);

}

34.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

main()

{ints[]={1,2,3,4},i;

intx=0;

for(i=0;i<4;i++)

{x=sb(s,x);

printf("%d",x);}

printf("\n");}

sb(s1,y)

int*s1,y;

{staticinti1=3;

y=s1[i1];

i1--;

return(y);}

35.以下程序的功能是根據(jù)輸入的"y"("Y")與"n"("N"),在屏幕上分別顯示出"ThisisYES."與"ThisisNO."??瞻滋幮枰钊氲膬?nèi)容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

36.軟件維護(hù)活動包括以下幾類:改正性維護(hù)、適應(yīng)性維護(hù)、【】維護(hù)和預(yù)防性維護(hù)。

37.以下程序的輸出結(jié)果是【】。

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{

inti=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

38.以下函數(shù)fun的功能是返回str所指字符中中以形參c中字符開頭的后續(xù)字符串的首地址,例如:str所指字符串為“Hello!”,c中的字符為'e',則函數(shù)返回字符串"ello!"的首地址。若str所指字符串為空中或不包含c中的字符,則函數(shù)返回NULL。請?zhí)羁铡?/p>

char*fun(char*str,charc)

{intn=0;char*p=str;

if(p!=NULL)

while(P[n]!=c&&p[n]!='\0')n++;

if(p[n]=='\0')retumNULL;

return(【】);

}

39.以卜函數(shù)sstrcat()的功能是實現(xiàn)寧符串的連接,即將t所指字符串復(fù)制到s所指字符串的尾部。例如:s所指字符串為abcd,t所指字符申為efgh,函數(shù)調(diào)用后s所指字符串為abcdefgh。請?zhí)羁铡?/p>

#include<string.h>

voidsstrcat(char*s,char*t)

{intn;

n=strlen(s);

while(*(s+n)=){s++;t++;}

}

40.軟件需求規(guī)格說明書應(yīng)具有完整性、無歧義性、正確性、可驗證性、可修改性等特性,其中最重要的是【】。

三、1.選擇題(20題)41.有以下程序:#include<stdio.h>main(){unsignedchara,b;a=413;b=4&3;printf("%d%d\n",a,b);}執(zhí)行后的輸出結(jié)果是()。

A.70B.07C.11D.430

42.為了使模塊盡可能獨立,要求()。

A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強(qiáng)

B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強(qiáng)

43.下列寫法正確的是()。

A.main(){inti=3,j;j=5}

B.main(){inti=3;

C.main()

D.main(){;}

44.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序運行后的輸出結(jié)果是______。

A.運行后報錯B.66C.611D.510

45.下面的程序輸出結(jié)果是______。#definer16#ifr==16voidp(inta){printf("%x",a);}#elsevoidp(inta){printf("%d",a);}#endifmain(){p(32);}

A.32B.20C.編譯時錯誤D.運行時錯誤

46.一些重要的程序語言(如Pascal語言)允許過程的遞歸調(diào)用,而實現(xiàn)遞歸調(diào)用中的存儲分配通常用()。

A.棧B.堆C.數(shù)組D.鏈表

47.信息隱蔽的概念與下述哪一種概念直接相關(guān)()。

A.軟件結(jié)構(gòu)定義B.模塊獨立性C.模塊類型劃分D.模塊耦合度

48.有以下程序#include<stdio.h>main(){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");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%d\n",n);}程序的運行結(jié)果是

A.12300B.123C.1D.321

49.下列程序的輸出結(jié)果是______。main(){inti,x[3][3]=(1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d,",x[i][2-i]);}

A.1,5,9B.1,4,7C.3,5,7D.3,6,9

50.在C語言中,表達(dá)式10!=9的值是______。

A.真B.非零值C.0D.1

51.若一個外部變量的定義形式為staticintx;,那么,其中static的作用應(yīng)該是______。

A.將變量存儲在靜態(tài)存儲區(qū)B.使變量x可以由系統(tǒng)自動初始化C.使x只能在本文件內(nèi)引用D.使x的值可以永久保留

52.用十六進(jìn)制的地址碼給存儲器的字節(jié)編址,其地址編號從0000到FFFF,則該存儲器的容量為()

A.1MBB.256KBC.64KBD.640KB

53.下列關(guān)鍵字中,不屬于C語言變量存儲類別的是______。

A.registerB.autoC.externD.public

54.C語言規(guī)定,函數(shù)返回值的類型是由

A.return語句中的表達(dá)式類型所決定

B.調(diào)用該函數(shù)時的主調(diào)函數(shù)類型所決定

C.調(diào)用該函數(shù)時系統(tǒng)臨時決定

D.在定義該函數(shù)時所指定的函數(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論