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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2021-2022年湖南省永州市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.設有序表中的元素為(13,18,24,35,47,50,62),則在其中利用二分法查找值為24的元素需要經過()次比較容易

A.1B.2C.3D.4

2.設有定義:intn=0,*p=&n,**q=&p;則下列選項中正確的賦值語句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

3.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序運行后的輸出結果是()。

A.9,8,9B.7,8,7C.7,8,3D.1,2,1

4.

5.在下面的二維數組定義中,正確的是()。

A.inta[5][];

B.inta[][5];

C.inta[][3]={{1,3,5},{2}};

D.inta[](10);

6.以下程序的輸出結果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

7.以下程序的輸出結果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1

8.設散列表長m=14,散列函數H(K)=K%11,已知表中已有4個結點:r(15)=4;r(38)=5;r(61)=6;r(84)=7,其他地址為空,如用二次探測再散列處理沖突,關鍵字為49的結點地址是_____。

A.8B.3C.5D.9

9.printf函數中用到格式符%5s,其中數字5表示輸出的字符串占用5列。如果字符串長度大于5,則輸出按方式()。

A.從左起輸出該字串,右補空格B.按原字符長從左向右全部輸出C.右對齊輸出該字串,左補空格D.輸出錯誤信息

10.下列程序的輸出結果是()。

#include<stdio.h>

intb=2;

intfunc(int*A)

{b+=*a;retumb;}

main()

{inta=1,t=2;

t+=func(&A);

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

}

A.4B.5C.6D.8

11.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}執(zhí)行程序時,給變量X輸入10,程序的輸出結果是()。A.55B.54C.65D.45

12.若i、j已定義成mt型,則下列程序段中內循環(huán)體的總執(zhí)行次數是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

13.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當運行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序將等待用戶輸入第2個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

14.若定義下列結構體,結構體變量p的出生年份賦值正確的語句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;

A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;

15.以下程序的輸出結果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}

A.abe+ABC=DEFdef

B.abc+abe=defdef

C.abcaABCDEFdef

D.abcabcdefdef

16.計算機高級語言程序的運行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的事()。

A.C語言程序僅可以編譯執(zhí)行B.C語言程序僅可以解釋執(zhí)行C.C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D.以上說法都不對

17.有以下程序:#include<stdio.h>main(){chara=H;a=(a>=Aa<=2)?(a-A+a):a;printf("%c\n",a);}程序運行后的輸出結果是()。A.AB.aC.HD.h

18.若有定義語句“char*s1=“OK”,*s2=“ok”;”,以下選項中,能夠輸出“OK”的語句是()。

A.if(strcmp(s1,s2)!=0)puts(s2);

B.if(strcmp(s1,s2)!=0)puts(s1);

C.if(strcmp(s1,s2)==1)puts(s1);

D.if(strcmp(s1,s2)==0)puts(s1);

19.有以下程序

main()

{

intn[3],i,j;

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

n[i]=0;

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

for(j=0;j<2;j++)

n[j]=n[i]+1;

printf("%d\n",n[1]);

}

程序運行后的輸出結果是A.A.2

B.1

C.0

D.3

20.若有說明語句:charc='\72'則變量c()。

A.包含1個字符B.包含2個字符C.包含3個字符D.說明不合法,c的值不確定

二、2.填空題(20題)21.下列程序的輸出結果是______。

main()

{inta=2,b=4,e=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

22.若a=10,b=20,則表達式!(a<b)的值是【】。

23.結構化分析方法是面向______進行分析的方法。

24.若有如下程序:

main()

{intx=4;y=3,Z=2,t;

t=x<y<z;

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

}

則程序運行后的輸出結果是【】。

25.若有以下定義,則不移動指針p,且通過指針p引用值為98的數組元素的表達式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

26.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。

27.以下和程序中,主函數調用了lineMax函數,實現在N行M列的二維數組中,找出每一行上的最大值,請?zhí)羁铡?/p>

#defineN3

#defineM4

voidlineMax(intx[N][M])

{inti,j,p;

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

{p=0;

for(j=1;j<M;j++)

if(x[i][p]<x[i][j]【】;

printf("Themaxvalueinlineis%d\n",【】);

}

{

main()

{intx[N][M]={1,5,4,2,6,4,3,8,2,3,1};

【】;

}

28.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體“項目主管”與實體“項目”的聯系屬于______的聯系。

29.已知字符A的ASCII代碼值為65,以下程序運行時若從鍵盤輸入:B33<回車>。則輸出結果是______。

#include<stdio,h>

main()

{

chara,b;

a=geCchar();scanf("%d“,&b);

a=a-'A'+‘0';b=b*2;

printf('%c%c\n",a,b);

}

30.軟件的需求分析階段的工作,可以概括為四個方面:【】、需求分析、編寫需求規(guī)格說明書和需求評審。

31.面向對象的模型中,最基本的概念是對象和______。

32.設inta=5,b=6,表達式(++a==b--)?++a:--b的值是【】。

33.軟件測試中路徑覆蓋測試是整個測試的基礎,它是對軟件【】進行測試。

34.以下程序運行后的輸出結果是【】。

#include<stdio.h>

msin()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

35.若有定義doublea[5];,則a數組元素下標的上限為______。

36.若a是int型變量,則下列表達式的值為______。

(a=2*3,a*2),a+4

37.下面程序執(zhí)行后輸出的結果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

38.以下程序的輸出結果是【】。

main()

{char*p[]={"BOOL","OPK","H","SP"};

inti;

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

39.若變量n中的值為24,則函數共輸出【】行,最后一行有【】個數。

voidprint(intn,intaa)

{inti;

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

{printf("%6d,aa[i]);

if(!(i%5))printf("\n");

}

printf("\n");

}

40.以下函數把b字符串連到a字符串的后面,并返回a中新字符串的長度,請?zhí)羁铡?/p>

strcen(chara[],charb[])

{

intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;}

returnnum;

}

三、1.選擇題(20題)41.設有intx=11;則表達式(x++*1/3)的值是()。

A.3B.4C.11D.12

42.對建立良好的程序設計風格,下面描述正確的是()

A.程序應簡單、清晰、可讀性好B.符號名的命名只要符合語法C.充分考慮程序的執(zhí)行效率D.程序的注釋可有可無

43.有以下程序:main(){intx=3,y=2,z=1;printf("%d\n",x/y&~z);}程序運行后的輸出結果是()。

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

44.關系表中的每一橫行稱為—個______。

A.元組B.字段C.屬性D.碼

45.下列關系運算中,能使經運算后得到的新關系中元組個數少于原來關系中元組個數的是()。

A.選擇B.投影C.連接D.并

46.若要求從鍵盤讀入含有窄格字符的字符串,應使用函數()。

A.getc()B.gets()C.getchar()D.scanf()

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

A.C程序中的#include和#define行均不是C語句

B.除逗號運算符外,賦值運算符的優(yōu)先級最低

C.C程序中,j++;是賦值語句

D.C程序中,+、-、*、/、%是算術運算符,可用于整型和實型數的運算

48.設有下列說明語句:StrcutStr{intx;floaty;charz;}st;則下列的敘述中不正確的是()。

A.struct是結構體類型的關鍵字

B.st是結構體類型名

C.x、y、z都是結構體成員名

D.structstr是結構體類型名

49.若有下面的說明和定義,則sizeof(structaA)的值是()struetaa{intr1;doubler2floatr3;unionuu{charu1[5];longu2[2];}ua;}mya;

A.30B.29C.24D.22

50.下列屬于C語言語句的是______。

A.printf("%d\n",a)

B.#include<stdio.h>

C.a=b;b=c;c=a;

D./*thisisaprogram*/

51.以下程序的輸出結果是_______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;print("%d%d%d,a[2],a[5],a[8]);}

A.258B.741C.852D.369

52.以下程序的輸出結果是#include<stdio.h>#include<string,h>main(){charb1[8]="abcdefg",b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pB);printf("%d\n",strlen(b2));}

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

53.下面程序段的運行結果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;pfintf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

54.有以下程序

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);}

程序運行后的輸出結果是

A.4B.3C.2D.1

55.棧和隊列的共同點是()。

A.都是先進后出B.都是先進先出C.只允許在端點處插入和刪除元素D.沒有共同點

56.設有下列二叉樹:

對此二叉樹中序遍歷的結果是

A.ABCDEFB.DABECFC.BDAECFD.DBEFCA

57.下列說法正確的是()

A.在執(zhí)行C程序時不是從main函數開始的

B.C程序書寫格式嚴格限制,一行內必須寫一個語句

C.C程序書寫格式自由,一個語句可以分寫在多行上

D.C程序書寫格式嚴格限制,一行內必須寫一個語句,并要有行號

58.以下程序的輸出結果是()。#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&C);prt(&a,&b,&C);}

A.11,42,3112,22,41

B.11,41,201,42,20

C.11,21,4011,21,21

D.11,41,2112,42,22

59.以下數組定義中不正確的是_______。

A.inta[2][3];

B.intb[][3]={0,1,2};

C.intc[100][100={0};

D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};

60.下面結構體的定義語句中,不正確的是______。

A.structdate{intmonth;intday;intyear;}Structdatedatel;

B.stmctdate{intmonth;intday;intyear;}datel;

C.struct{intmonth;intday;intyear;}date1;

D.#defineDATEstmctdateDATE{intmonth;intday;intyear;}datel;

四、選擇題(20題)61.

62.算法的空間復雜度是指()。

A.算法程序的長度B.算法程序中的指令條數C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間

63.C語言中,合法的字符串常量是()。

A."M"B.\tC.100D.MUST

64.

65.

66.

67.表達式“~0x11”的值是()。

A.0xFFEEB.0x71C.0x0071D.0xFFF1

68.以下選項中,能用作數據常量的是()。

A.115LB.0118C.1.5el.5D.0115

69.層次型、網狀型和關系型數據庫劃分原則是()。

A.記錄長度B.文件的大小C.聯系的復雜程度D.數據之間的聯系方式

70.(37)下面不屬于軟件設計原則的是()

A.抽象

B.模塊化

C.自底向上

D.信息隱蔽

71.已定義:inta=25,b=14,c=19;,以下三目運算符(?:)所構成語句的執(zhí)行后

a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序輸出的結果是

A.***a=25,b=13,c=19B.***a=26,b=14,c=19C.###a=25,b=13,c=19D.###a=26,b=14,c=19

72.

73.讀取二進制文件的函數調用形式為:fread(buffersize,count,fp);,其中buffer代表的是()。

A.一個文件指針,指向待讀取的文件

B.一個整型變量,代表待讀取的數據的字節(jié)數

C.一個內存塊的首地址,代表讀人數據存放的地址

D.一個內存塊的字節(jié)數

74.若有定義語句:

char}sl=‘’0K”,:Its2=”ok”;

以下選項中,能夠輸出“OK”的語句是()。

A.if(strcmp(sl,s2)!=0)puts(s2);

B.if(strcmp(sl,s2)!=0)puts(s1);

C.if(strcmp(sl,s2)==1)puts(s1);

D.if(strcmp(sl,s2)==0)puts(s1);

75.以下程序的輸出結果是()。

A.9B.8C.7D.6

76.有如下程序

voidfunc1(intst[],inti)

{printf("%c",st[i]);

if(i<3){i+=2;func2(st,i);}

}

voidfunc2(intst[],inti)

{printf("%c",st[i]);

if(i<3){i+=2;func1(st,i);}

}

main()

{charst[]="hello,friend!";

inti=0;func1(st,i);

printf("\n");}

程序執(zhí)行后輸出的結果是

A.helloB.hel

C.hloD.編譯出錯

77.

78.

79.以下定義數組的語句中錯誤的是()。

80.以下不能輸出字符A的語句是()。(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:給一維數組arr輸人任意4個整數,并按如下的規(guī)律輸出。例如,若輸入2345,則程序運行后輸出以下矩陣:請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數proc(),它的功能是:只刪除字符串前導和尾部的*號,串中字母之間的*號都不刪除。形參m給出了字符串的長度,形參h給出了字符串中前*號的個數,形參e給出了字符串中最后*號的個數。在編寫函數時,不得使用C語言提供的字符串函數。例如,若字符串中的內容為****a*bc*def*g****,刪除后,字符串中的內容則應當是a*bc*def*g。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.D解析:選項A),B),C)的指針賦值表達方式都不正確,*p=5表達整數5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。

3.C在main函數中調用了f函數使形參s指向數組a。執(zhí)行“S[1]+=6”;語句,則“a[1]=8;”執(zhí)行“*s=7;”語句,則“a[0]=7”;執(zhí)行“s+=2;”語句,則s指向數組的第3個元素并返回s。調用后,函數返回值賦給指針P,則*P=3,因此輸出的結果為7,8,3。故本題答案為C選項。

4.C

5.C

6.A解析:n--是先使用后自減,--n是先自減后使用。n=4時,執(zhí)行n--后,n變?yōu)?,執(zhí)行--n后,n變?yōu)?,所以,第一次輸出時,n為2;同上過程,第二次輸出時,n為0。

7.B函數調用時,prt函數的作用是為使m數組中的數自增1,因此數組下標從0開始,每個元素都自加1。

8.D

9.B

10.B解析:本題考查函數調用時的參數傳遞。在執(zhí)行函數func時,由于全局定義了一個變量b,所以在函數體中執(zhí)行時b=2+1=3,最終t=2+3=5。

11.A函數intfun(intn)的功能是求1+2+…+n的值并返回。所以執(zhí)行程序時,給變量x輸入10后,執(zhí)行語句“x=fun(x);”,X的值將變?yōu)?到10中10個整數的累加和,即55。

12.B本題考查for循環(huán)的使用。對于第1個for循環(huán),任何一個i,內層j的循環(huán)都要使j~0到3,j=4時不符合,所以退出j循環(huán);然后i減1,J仍然要從0~3,j=4時退出J循環(huán)直到i變成0,退出i循環(huán)。第一條for語句執(zhí)行6次,第二條for語句執(zhí)行4次,所以內循環(huán)體執(zhí)行6*4=24次。

13.A解析:本題考查的是getchar()函數。getchar()函數執(zhí)行時將從鍵盤緩沖區(qū)中讀取用戶的輸入,而不管輸入的是否可打印字符,所以當輸入a<回車>后,鍵盤緩沖區(qū)被輸入的實際上是兩個字符:'a'和'\\n'。故選項A的說法是正確的。

14.C解析:本題主要考查怎樣為嵌套定義的結構中的成員賦值:由于worker中的birth是一個st型的結構,在給birth賦值時,不能將birth作為一個整體,要用“.”運算再深入一層訪問到最基本的成員x、y、z。

15.B解析:字符數組元素作函數參數是單向的值傳遞。函數cchar的功能是將大寫字母轉換為小寫字母。主函數中while循環(huán)語句的條件是判斷指針p當前指向的字符是否為空,若不為空,則調用函數cchar,即主函數中通過循環(huán)語句將字符串'ABC+abc=defDEF'中的大寫字母全部轉換為小寫字母,因此printf的輸出結果為選項B。

16.A解釋執(zhí)行是計算機語言的一種執(zhí)行方式。由解釋器現場解釋執(zhí)行,不生成目標程序。如BASIC便是解釋執(zhí)行。一般解釋執(zhí)行效率較低,低于編譯執(zhí)行。而C程序是經過編譯生成目標文件然后執(zhí)行的,所以C程序是編譯執(zhí)行。

17.D多元運算符問號前面表達式為真,所以(a-A+a)賦值給a,括號里的運算是把大寫字母變成小寫字母,所以答案應為選項D。

18.B“strcmp(S1,S2)”是字符串比較函數,比較規(guī)則是兩個字符串自左向右逐個字符相比較(按照ASCII值大小)。因為“OK”<“ok”,所以“strcmp(S1,S2)”為負值。故本題答案為B選項。

19.D初始時定義一個大小為3個一維整型數組,第一個for語句是對數組賦初值,每個值都為0。后面是一個for語句的嵌套調用,外層的循環(huán)變量i的取值為[0,2],內層循環(huán)變量的取值范圍為[0,2]。最初外層的循環(huán)變量i=0,內層的循環(huán)變量j取值從0到2,計算n[j]=n[0]+1,得到n[0]=1,n[1]=1,n[2]=1。外層for語句的循環(huán)變量為1時,內層的循環(huán)變量j取值從0到2,計算n[j]=n[1]+1,得到n[0]=2,n[1]=2,n[2]=2。外層for語句的循環(huán)變量為2時,內層的循環(huán)變量j取值從0到2,計算n[j]=n[2]+1,得到n[0]=3,n[1]=3,n[2]=3。最后的輸出結果為3。

20.A解析:C語言的字符型常量中,允許用一種特殊形式的字符常量,就是以一個“\\”開頭的字符。其中,“\\ddd”表示用ASCII碼(八進制數)表示一個字符,本題中的charc='\\72'H口表示占一個字符的變量c的ASCII碼值。

21.88解析:本程序定義了3個指針變量p1、p2、p,并且將a、b的地址分別賦給p1、p2,則*p1=a=2,*p2=b=4,所以表達式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(P)代表了c的存儲單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數8賦給了變量c。

22.00解析:已知a=10,b=20,所以邏輯表達式a<b的值為true,即為1,在這個表達式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應當為false,即為0。

23.數據流數據流解析:結構化分析方法的實質是著眼于數據流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數據流圖和數據字典為主要工具,建立系統(tǒng)的邏輯模型。

24.11解析:因為x=4,y=3,所以表達式x<y的值為假(0),又因為z=2,所以0<z的值為真(1),故最終輸出的結果為1。

25.*(p+5)或p[5]*(p+5)或p[5]

26.88解析:fabs函數功能是求x的絕對值,計算結果為double型。pow功能是計算x的y次方的值,計算結果同樣為double型。所以本題表達式相當于2.0的3.0次方,結果為8.000000。

27.p=jx[i][p]lineMax(x)

28.1對多(或1:N)1對多(或1:N)

29.1B1B解析:在C語古中,字符型變量可以看作整型變量來對待,與整型所不同的是字符型變量在內存中只占1個字節(jié),而整型是2個字節(jié).字符型變量中所有的數值是它所表示字符的ASCII碼值.ASCII碼中的一些相關字符是順序排列的,如'0',的ASCII碼值為48,'1'為49以此類推一直到'9';'A'的ASCII碼值為65,'B'為66以此類推一直到'Z'。本題程序首先定義了兩個字符型變量a和b,然后分別使用getchar()和scanf()函數讀取輸入的字符'B'和十進制整數33到a和b中,因為a-'A'+'0'等于,'B'-'A'+'0'='1'+'0'='1',而b*2等于33*2=66'A'+1='B'。所以最終輸出的結果是:1B。

30.需求獲取需求獲取解析:軟件的需求分析階段的工作,可以概括為四個方面:需求獲取、需求分析、編寫需求規(guī)格說明書和需求評審。需求獲取的目的是確定對目標系統(tǒng)的各方面需求;需求分析是對獲取的需求進行分析和綜合,最終給出系統(tǒng)的解決方案和目標系統(tǒng)的邏輯模型;編寫需求規(guī)格說明書作為需求分析的階段成果,可以為用戶、分析人員和設計人員之間的交流提供方便,可以直接支持目標軟件系統(tǒng)的確認,又可以作為控制軟件開發(fā)進度的依據;需求評審是對需求分析階段的工作進行的復審,驗證需求文檔的一致性、可行性、完整性和有效性。

31.類類

32.77解析:此表達式為三目運算符,++a的值為6,b--的值為6,則整個表達式的值為++a的值,++a的值為7。請注意前綴++,--和后綴++,--的區(qū)別。

33.結構結構解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結構進行測試。

34.1371513715解析:程序中n是一個有5個元素,且元素值全為0的數組。在for循環(huán)中,當i=1時,n[1]=n[0]*2+1,此時n[1]=1;i=2時,n[2]=n[1]*2+1,此時n[2]=3;i=3時,n[3]=n[2]*2+1,此時n[3]=7;i=4時,n[4]=n[3]*2+1,此時n[4]=15,循環(huán)結束。輸出函數中%d后有空格,因此輸出結果為13715。

35.44解析:一維數組元素的定義形式為:數組名[N],則該數組中元素的下限是0,上限是N-1。

36.1010解析:此題考查逗號表達式。逗號表達式的值是最后一個表達式的值,所以本題的返回值是a+4。前面已經給a賦值6,所以追回值a+4=6+4=10。

37.22解析:本題變量m既是外部變量(值是13),又是fun函數的局部變量(值為3)。函數fun(x*y-m)的值為7*5-3=32,在main函數中,fun(a,b)/m中的m應取外部變量的值13,因此輸出2。

38.SOSO解析:題中需要注意兩個問題:一是for循環(huán)的修正表達式共執(zhí)行兩次“i-”操作;二是*p[i]是對某個字符的引用。

39.54

40.\0'n++

41.A解析:當自加運算符做后綴表達式的時候,表達式的值不變,只有變量的值增加1,所以表達式(x++*1/3)相當于(11*1/3),值為3。

42.A解析:符號名的命名不僅要符合語法,而且符號名的命名應具有一定實際含義,以便于對程序功能的理解。所以,選項B錯誤。程序設計風格強調“清晰第一,效率第二”,而不是效率第一。所以,選項C錯誤。程序中的注釋部分雖然不是程序的功能,計算機在執(zhí)行程序時也不會執(zhí)行它,但在程序中加入正確的注釋能夠幫助讀者理解程序,注釋是提高程序可讀性的重要手段。所以,選項D錯誤。本題的正確答案為A。

43.D解析:位與運算符“&”,按二進位進行“與”運算,如果兩個相應的二進制位都為1,則該位的結果值為1,否則為0;取反運算符“~”,用來對一個二進制按位取反,即將0變1,1變0。在prinf()函數的表達式中,“&”前面表達式的值為1(3/2=1)表示為二進制為00000001,而按位取反運算符“~”的優(yōu)先級高于按位與運算符“&”,先計算“&”后面的取反運算符“~”。z的二進制表示為00000001,取反后為11111110,最后進行“&”,即“00000001&11111110”可知結果為00000000,故最后的值為0。

44.A解析:在關系數據庫中,關系模型采用二維表來表示,簡稱“表”。二維表是由表框架及表元組組成。在表框架中,按行可以存放數據,每行數據稱為元組。

45.A解析:選擇運算是在指定的關系中選取所有滿足給定條件的元組,構成一個新的關系,而這個新的關系是原關系的一個子集。因此,一個關系經選擇運算后得到的新關系中,元組個數少于原來關系中元組個數。

46.B解析:scanf()語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf()函數不能輸入空格;getchar()函數用于輸入字符,其調用形式為:ch=getchar(),getchar()函數從終端讀入一個字符作為函數值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執(zhí)行。gets()函數的調用形式為:gets(str_adr),其中str_adr是存放輸入字符串的起始地址,可以是字符數組名、字符數組元素的地址或字符指針變量。ge

47.D解析:“%”是求余運算符,其兩側的數值只能為整型,不能用于實型數據的運算。

48.B解析:本題主要考查結構類型的定義:struct是結構體類型的關鍵字;structstr是結構體類型名;x、y、z都是結構體成員名;st是結構變量名。

49.D

50.C解析:在C語言中,一個完整的C語句必須在語句末尾出現分號,分號是C語句的必要組成部分。本題答案為C。

51.C解析:在本題運行時主要注意的是當i=9時,a[i]=10-9=1:i=8時,a[i]=10-8=2;i=7時,a[i]=10-7=3;……依此類推,直到i=0時,a[i]=10-0=10:此時,i的值已變?yōu)?1,判斷for的循環(huán)條件,不成立,然后輸出a[2],a[5],a[8]分別為8,5,2。

52.D解析:本題考核的知識點是指針變量的運算及字符函數strcpy()的應用。strepy()函數的作用是把第二個參數代表的字符串,復制到第一個參數指向得數組中.首先定義了兩個字符數組b1和b2,并用一個字符串給b1賦初值,然后定義了一個字符型指針變量pb,通過賦初值使它指向b1[3]。接著執(zhí)行while循環(huán),該循環(huán)執(zhí)行了3次;第一次判斷條件“--pb>=b1”,使pb的值為“b1+2”,執(zhí)行“strcpy(b2,pB);”后,b2中的內容為“cdefg”;第二次判斷條件“--pb>=b1”,使pb的值為“b1+1”,執(zhí)行“strcpy(b2,pB);”后b2的內容為“bcdefg”第三次判斷條件“--pb>=b1”使Pb的值為“b1”,執(zhí)行“strcpy(b2,pB);”后b2的內容為“abcdefg”。最后輸出b2數組中存放的字符串長度,顯然是7。(這里還有一個關鍵點:就是每當執(zhí)行一次while循環(huán)判斷條件,就執(zhí)行一次“--Pb”,他使得指針pb自減1,即前移一位)所以,4個選項中D為所選。

53.B解析:先定義了一個指向字符型數組str的指針P,指針P指向數組str的首地址,p+3將指針指向str[3],又因為字符型數組在存放字符串時會自動在末尾加上'\\0',所以*(p+3)=0。

54.B解析:在main函數中,對f(1)和f(2)的值進行了累加。

f(1)=1

f(2)=f(1)+1=2

最后,j的值為1+2=3

55.C棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進行插入或刪除操作,是一種“后進先出”的線性表;而隊列只允許在表的一端進行插入操作,在另一端進行刪除操作,是一種“先進先出”的線性表:本題答案為C)。

56.C解析:二叉樹的遍歷分為先序、中序、后序三種不同方式。本題要求中序遍歷,遍歷順序應該為:中序遍歷左子樹->訪問根結點->中序遍歷右子樹。按照定義,中序遍歷序列是BDAECF。

57.C

58.B

59.D解析:一維數組的定義方式為:

類型說明符數組名[常量表達式];

選項A符合此定義形式,正確;C語言中多維數組賦初值時可以部分賦值,也可以不指定除第一維以外的其他維的大小,故選項C正確;另外,如果對全部數組元素都賦初值,則定義數組時對第一維的長度可以不指定,但第二維的長度不能省,所以選項B正確,而選項D是錯誤的。

60.A

61.C

62.D【解析】算法的空間復雜度是指執(zhí)行這個算法所需要的內存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數據所占的存儲空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數據結構所需要的附加存儲空間。如果額外空間量相對于問題規(guī)模來說是常數,則稱該算法是原地工作的。在許多實際問題中,為了減少算法所占的存儲空間,通常采用壓縮存儲技術,以便盡量減少不必要的額外空間。

63.A字符串常量必須用雙引號括起來,因此只有選項A)正確。

64.D\r\n

65.D

66.C

67.A本題主要考查按位求反運算:十六進制整型常量的形式是以數字Ox開頭的十六進制字符串;位求反運算的規(guī)則是:將二進制表示的運算對象按位取反,即將1變0,將0變1。

68.AA選項中l(wèi)15L表示ll5是長整型數據,合法。B選項是八進制常量的表示方法,但是在八進制中不能含有數字8,所以B錯誤。c選項中e后面應該是整數不能是小數l.5,所以c錯誤。D選項中八進制常量應該是數字…0開始,而不是字母…O開始。

69.D層次模型的基本結構是樹形結構,網狀模型是一個不加任何條件限制的無向圖,關系模型采用二維表來表示,所以三種數據庫的劃分原則是數據之間的聯系方式。

70.C

71.C本題主要考查三目運算符(?:)。在本題中,有三個整型變量a、b、c,它們的初值分別為25、14、19,然后執(zhí)行三目運算,a<=25&&b--<=2&&c等價于(a<=25)&&(b--<=2)&&c。

由于變量a的初值為25,因此,(a<=25)的結果為真;由于變量b的初值為14,(b--<=2)的結果為假,根據&&的性質可知,其中的操作數只要有假,則計算結束,返回最終的結果為假,因此,后面的程序執(zhí)行printf(″###a=%d,b=%d,c=%d\n″,a,b,c)部分,那么答案只能在C和D中產生,從這兩個選項中給出的結果可以看出,它們的區(qū)別只有b的輸出結果,一個是13,而一個是14。從上面的程序分析,變量b進行了一次自減操作,最后的結果應該是13。因此,本題的正確答案是C。

72.B

73.Cfread函數中的參數buffer是內存塊的首地址,輸入的數據存入此內存塊中。

74.Bstrcmp(sl,s2)是字符串比較函數,比較規(guī)則是兩個字符串自左向右逐個字符相比(按照ASCIl碼值大小),-以第一個不相同的字符的大小作為比較結果。因為。O。<10.,所以strcmp(sl,s2)為負值,只有B選項正確。

75.B逗號表達式a++,b++,a+b先計算a++,a=2;再計算b++,b=3;表達式的值就是a+b的值,為5。表達式C++的值是C遞增前的值,為3。所以fun((a++,b++,a+b),C++)等價于fun(5,3),返回值為5+3=8。

76.D本題主要考查全局變量的作用域。在本題中,程序首先聲明兩個無返回值函數func1和func2。func1函數帶有兩個形參,一個是需要輸出的數字,一個是輸出數組元素的下標。在函數體中,首先輸出以形參作為下標的數組元素值,然后執(zhí)行if條件判斷語句,其條件為形參變量i<3。如果結果為真,則將變量i加2后保存,然后調用func2函數;如果條件結果為假,則結束該函數。

從程序中不難看出,func2函數與func1函數基本類似,只是最后它對函數func1進行調用,與前者不同,兩個函數是互相調用的。

在主函數中首先定義了一個字符數組,并賦了初值,然后定義一個變量i并賦值為0,如果數組st是一個全局數組,那么調用函數func1,根據我們對函數func1的分析可知,此時能輸出st[0]即字符’h’,而此時if語句的結果為真,執(zhí)行i加2并調用func2函數操作。此時變量i的值為2,因此,輸出st[2]即字符‘l’,此時函數func2中的if條件語句結果為真,同樣執(zhí)行i加2并調用func1函數操作,然后通過func1函數輸出st[4]即字符‘o’,但由于數組只是一個局部數組,局部數組的作用域是定義它的函數或者程序段,調用函數func1時,數組有效,當再調用函數func2時,已經超出了數組的作用域。因此,系統(tǒng)在編譯時會報錯。本題答案選D。

77.D

78.A

79.AA)選項中定義的數組為2行4列,而賦值時賦成了3行,因此出錯。

80.BB選項輸出的格式為%d,即為整型格式,所以輸出字符A的ASCI1碼值65,而不是字符A。由于大寫字母比與其對應的小寫字母的ASCI1碼值小32,所以A正確。字符A的ASCI1碼值就是65,所以以%C格式輸出可以輸出字符A,所以c正確。由于字符A的ASCI1碼值比字符B的小1,所以D正確。

81.(1)錯誤:voidproc(intarr)

正確:voidproc(int*arr)

(2)錯誤:arrEj]=arr[j+1];

正確:arr[j]=arr[j-1];

【解析】由主函數ee的函數調用可知,函數proc的形參為整型的指針變量。因此,“voidproc(intarr)”應改為“voidproc(int*arr)”。從“a[j]=a[j+1];”可知,當“j=M-1”

時“a[j+1];”越界了,而程序的思路是把前一個數放到后一個中,再把最后面的數放到第一個中,因此把arr[j+1]改為arr[j-1]。

82.

【解析】題目要求不能用C語言提供的字符串函數,可以利用移動字符串指針來實現,首先移動字符串指針到第一個不是*的位置,通過指針的移動,來實現把第一個不是星號的字符與最后一個不是星號的字符放到a數組中,最后用ˊ\0ˊ來作為字符串結束的標志。

2021-2022年湖南省永州市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.設有序表中的元素為(13,18,24,35,47,50,62),則在其中利用二分法查找值為24的元素需要經過()次比較容易

A.1B.2C.3D.4

2.設有定義:intn=0,*p=&n,**q=&p;則下列選項中正確的賦值語句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

3.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序運行后的輸出結果是()。

A.9,8,9B.7,8,7C.7,8,3D.1,2,1

4.

5.在下面的二維數組定義中,正確的是()。

A.inta[5][];

B.inta[][5];

C.inta[][3]={{1,3,5},{2}};

D.inta[](10);

6.以下程序的輸出結果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

7.以下程序的輸出結果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1

8.設散列表長m=14,散列函數H(K)=K%11,已知表中已有4個結點:r(15)=4;r(38)=5;r(61)=6;r(84)=7,其他地址為空,如用二次探測再散列處理沖突,關鍵字為49的結點地址是_____。

A.8B.3C.5D.9

9.printf函數中用到格式符%5s,其中數字5表示輸出的字符串占用5列。如果字符串長度大于5,則輸出按方式()。

A.從左起輸出該字串,右補空格B.按原字符長從左向右全部輸出C.右對齊輸出該字串,左補空格D.輸出錯誤信息

10.下列程序的輸出結果是()。

#include<stdio.h>

intb=2;

intfunc(int*A)

{b+=*a;retumb;}

main()

{inta=1,t=2;

t+=func(&A);

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

}

A.4B.5C.6D.8

11.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}執(zhí)行程序時,給變量X輸入10,程序的輸出結果是()。A.55B.54C.65D.45

12.若i、j已定義成mt型,則下列程序段中內循環(huán)體的總執(zhí)行次數是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

13.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當運行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序將等待用戶輸入第2個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

14.若定義下列結構體,結構體變量p的出生年份賦值正確的語句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;

A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;

15.以下程序的輸出結果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}

A.abe+ABC=DEFdef

B.abc+abe=defdef

C.abcaABCDEFdef

D.abcabcdefdef

16.計算機高級語言程序的運行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的事()。

A.C語言程序僅可以編譯執(zhí)行B.C語言程序僅可以解釋執(zhí)行C.C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D.以上說法都不對

17.有以下程序:#include<stdio.h>main(){chara=H;a=(a>=Aa<=2)?(a-A+a):a;printf("%c\n",a);}程序運行后的輸出結果是()。A.AB.aC.HD.h

18.若有定義語句“char*s1=“OK”,*s2=“ok”;”,以下選項中,能夠輸出“OK”的語句是()。

A.if(strcmp(s1,s2)!=0)puts(s2);

B.if(strcmp(s1,s2)!=0)puts(s1);

C.if(strcmp(s1,s2)==1)puts(s1);

D.if(strcmp(s1,s2)==0)puts(s1);

19.有以下程序

main()

{

intn[3],i,j;

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

n[i]=0;

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

for(j=0;j<2;j++)

n[j]=n[i]+1;

printf("%d\n",n[1]);

}

程序運行后的輸出結果是A.A.2

B.1

C.0

D.3

20.若有說明語句:charc='\72'則變量c()。

A.包含1個字符B.包含2個字符C.包含3個字符D.說明不合法,c的值不確定

二、2.填空題(20題)21.下列程序的輸出結果是______。

main()

{inta=2,b=4,e=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

22.若a=10,b=20,則表達式!(a<b)的值是【】。

23.結構化分析方法是面向______進行分析的方法。

24.若有如下程序:

main()

{intx=4;y=3,Z=2,t;

t=x<y<z;

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

}

則程序運行后的輸出結果是【】。

25.若有以下定義,則不移動指針p,且通過指針p引用值為98的數組元素的表達式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

26.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。

27.以下和程序中,主函數調用了lineMax函數,實現在N行M列的二維數組中,找出每一行上的最大值,請?zhí)羁铡?/p>

#defineN3

#defineM4

voidlineMax(intx[N][M])

{inti,j,p;

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

{p=0;

for(j=1;j<M;j++)

if(x[i][p]<x[i][j]【】;

printf("Themaxvalueinlineis%d\n",【】);

}

{

main()

{intx[N][M]={1,5,4,2,6,4,3,8,2,3,1};

【】;

}

28.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體“項目主管”與實體“項目”的聯系屬于______的聯系。

29.已知字符A的ASCII代碼值為65,以下程序運行時若從鍵盤輸入:B33<回車>。則輸出結果是______。

#include<stdio,h>

main()

{

chara,b;

a=geCchar();scanf("%d“,&b);

a=a-'A'+‘0';b=b*2;

printf('%c%c\n",a,b);

}

30.軟件的需求分析階段的工作,可以概括為四個方面:【】、需求分析、編寫需求規(guī)格說明書和需求評審。

31.面向對象的模型中,最基本的概念是對象和______。

32.設inta=5,b=6,表達式(++a==b--)?++a:--b的值是【】。

33.軟件測試中路徑覆蓋測試是整個測試的基礎,它是對軟件【】進行測試。

34.以下程序運行后的輸出結果是【】。

#include<stdio.h>

msin()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

35.若有定義doublea[5];,則a數組元素下標的上限為______。

36.若a是int型變量,則下列表達式的值為______。

(a=2*3,a*2),a+4

37.下面程序執(zhí)行后輸出的結果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

38.以下程序的輸出結果是【】。

main()

{char*p[]={"BOOL","OPK","H","SP"};

inti;

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

39.若變量n中的值為24,則函數共輸出【】行,最后一行有【】個數。

voidprint(intn,intaa)

{inti;

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

{printf("%6d,aa[i]);

if(!(i%5))printf("\n");

}

printf("\n");

}

40.以下函數把b字符串連到a字符串的后面,并返回a中新字符串的長度,請?zhí)羁铡?/p>

strcen(chara[],charb[])

{

intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;}

returnnum;

}

三、1.選擇題(20題)41.設有intx=11;則表達式(x++*1/3)的值是()。

A.3B.4C.11D.12

42.對建立良好的程序設計風格,下面描述正確的是()

A.程序應簡單、清晰、可讀性好B.符號名的命名只要符合語法C.充分考慮程序的執(zhí)行效率D.程序的注釋可有可無

43.有以下程序:main(){intx=3,y=2,z=1;printf("%d\n",x/y&~z);}程序運行后的輸出結果是()。

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

44.關系表中的每一橫行稱為—個______。

A.元組B.字段C.屬性D.碼

45.下列關系運算中,能使經運算后得到的新關系中元組個數少于原來關系中元組個數的是()。

A.選擇B.投影C.連接D.并

46.若要求從鍵盤讀入含有窄格字符的字符串,應使用函數()。

A.getc()B.gets()C.getchar()D.scanf()

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

A.C程序中的#include和#define行均不是C語句

B.除逗號運算符外,賦值運算符的優(yōu)先級最低

C.C程序中,j++;是賦值語句

D.C程序中,+、-、*、/、%是算術運算符,可用于整型和實型數的運算

48.設有下列說明語句:StrcutStr{intx;floaty;charz;}st;則下列的敘述中不正確的是()。

A.struct是結構體類型的關鍵字

B.st是結構體類型名

C.x、y、z都是結構體成員名

D.structstr是結構體類型名

49.若有下面的說明和定義,則sizeof(structaA)的值是()struetaa{intr1;doubler2floatr3;unionuu{charu1[5];longu2[2];}ua;}mya;

A.30B.29C.24D.22

50.下列屬于C語言語句的是______。

A.printf("%d\n",a)

B.#include<stdio.h>

C.a=b;b=c;c=a;

D./*thisisaprogram*/

51.以下程序的輸出結果是_______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;print("%d%d%d,a[2],a[5],a[8]);}

A.258B.741C.852D.369

52.以下程序的輸出結果是#include<stdio.h>#include<string,h>main(){charb1[8]="abcdefg",b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pB);printf("%d\n",strlen(b2));}

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

53.下面程序段的運行結果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;pfintf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

54.有以下程序

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);}

程序運行后的輸出結果是

A.4B.3C.2D.1

55.棧和隊列的共同點是()。

A.都是先進后出B.都是先進先出C.只允許在端點處插入和刪除元素D.沒有共同點

56.設有下列二叉樹:

對此二叉樹中序遍歷的結果是

A.ABCDEFB.DABECFC.BDAECFD.DBEFCA

57.下列說法正確的是()

A.在執(zhí)行C程序時不是從main函數開始的

B.C程序書寫格式嚴格限制,一行內必須寫一個語句

C.C程序書寫格式自由,一個語句可以分寫在多行上

D.C程序書寫格式嚴格限制,一行內必須寫一個語句,并要有行號

58.以下程序的輸出結果是()。#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&C);prt(&a,&b,&C);}

A.11,42,3112,22,41

B.11,41,201,42,20

C.11,21,4011,21,21

D.11,41,2112,42,22

59.以下數組定義中不正確的是_______。

A.inta[2][3];

B.intb[][3]={0,1,2};

C.intc[100][100={0};

D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};

60.下面結構體的定義語句中,不正確的是______。

A.structdate{intmonth;intday;intyear;}Structdatedatel;

B.stmctdate{intmonth;intday;intyear;}datel;

C.struct{intmonth;intday;intyear;}date1;

D.#defineDATEstmctdateDATE{intmonth;intday;intyear;}datel;

四、選擇題(20題)61.

62.算法的空間復雜度是指()。

A.算法程序的長度B.算法程序中的指令條數C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間

63.C語言中,合法的字符串常量是()。

A."M"B.\tC.100D.MUST

64.

65.

66.

67.表達式“~0x11”的值是()。

A.0xFFEEB.0x71C.0x0071D.0xFFF1

68.以下選項中,能用作數據常量的是()。

A.115LB.0118C.1.5el.5D.0115

69.層次型、網狀型和關系型數據庫劃分原則是()。

A.記錄長度B.文件的大小C.聯系的復雜程度D.數據之間的聯系方式

70.(37)下面不屬于軟件設計原則的是()

A.抽象

B.模塊化

C.自底向上

D.信息隱蔽

71.已定義:inta=25,b=14,c=19;,以下三目運算符(?:)所構成語句的執(zhí)行后

a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序輸出的結果是

A.***a=25,b=13,c=19B.***a=26,b=14,c=19C.###a=25,b=13,c=19D.###a=26,b=14,c=19

72.

73.讀取二進制文件的函數調用形式為:fread(buffersize,count,fp);,其中buffer代表的是()。

A.一個文件指針,指向待讀取的文件

B.一個整型變量,代表待讀取的數據的字節(jié)數

C.一個內存塊的首地址,代表讀人數據存放的地址

D.一個內存塊的字節(jié)數

74.若有定義語句:

char}sl=‘’0K”,:Its2=”ok”;

以下選項中,能夠輸出“OK”的語句是()。

A.if(strcmp(sl,s2)!=0)puts(s2);

B.if(strcmp(sl,s2)!=0)puts(s1);

C.if(strcmp(sl,s2)==1)puts(s1);

D.if(strcmp(sl,s2)==0)puts(s1);

75.以下程序的輸出結果是()。

A.9B.8C.7D.6

76.有如下程序

voidfunc1(intst[],inti)

{printf("%c",st[i]);

if(i<3){i+=2;func2(st,i);}

}

voidfunc2(intst[],inti)

{printf("%c",st[i]);

if(i<3){i+=2;func1(st,i);}

}

main()

{charst[]="hello,friend!";

inti=0;func1(st,i);

printf("\n");}

程序執(zhí)行后輸出的結果是

A.helloB.hel

C.hloD.編譯出錯

77.

78.

79.以下定義數組的語句中錯誤的是()。

80.以下不能輸出字符A的語句是()。(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:給一維數組arr輸人任意4個整數,并按如下的規(guī)律輸出。例如,若輸入2345,則程序運行后輸出以下矩陣:請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數proc(),它的功能是:只刪除字符串前導和尾部的*號,串中字母之間的*號都不刪除。形參m給出了字符串的長度,形參h給出了字符串中前*號的個數,形參e給出了字符串中最后*號的個數。在編寫函數時,不得使用C語言提供的字符串函數。例如,若字符串中的內容為****a*bc*def*g****,刪除后,字符串中的內容則應當是a*bc*def*g。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.D解析:選項A),B),C)的指針賦值表達方式都不正確,*p=5表達整數5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。

3.C在main函數中調用了f函數使形參s指向數組a。執(zhí)行“S[1]+=6”;語句,則“a[1]=8;”執(zhí)行“*s=7;”語句

溫馨提示

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

評論

0/150

提交評論