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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.向一個棧頂指針為H的鏈棧中插入一個s所指向的結(jié)點(diǎn)時,需執(zhí)行()。

A.H->link=s

B.s->link=H->link;H->link=s;

C.s->link=H;H=s;

D.s->link=H;H=H->link;

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

A.形參可以是常量、變量或表達(dá)式

B.實(shí)參可以是常量、變量或表達(dá)式

C.實(shí)參的類型應(yīng)與形參的類型賦值兼容

D.實(shí)參的個數(shù)應(yīng)與形參的個數(shù)一致

3.判斷char型變量c1是否為小寫字母的正確表達(dá)式為()。

A.'a'<=c1<='z'

B.(c1>=A)‖(c1<=z)

C.('a'=>c1‖('z'<=c1)

D.(c1>='a')&&(c1<='z')

4.若有以下程序

則程序的輸出結(jié)果是

A.China!B.toChina!C.meyoutoChina!D.youtoChina!

5.C語言中最簡單的數(shù)據(jù)類型包括()。

A.整型、實(shí)型、邏輯型B.整型、實(shí)型、字符型C.整型、字符型、邏輯型D.字符型、實(shí)型、邏輯型

6.請選出以下程序的輸出結(jié)果()#include<stdio.h>sub(x,y,z)intx,y,*z;{*2=y(tǒng)-x;}main(){inta,b,c;sub(10,5,&A);sub(7,a,&B);sub(a,b,&C);printf("%d,%d,%d\n",a,b,C);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

7.在循環(huán)隊列中,若front與rear分別表示對頭元素和隊尾元素的位置,則判斷循環(huán)隊列空的條件是()。

A.front==rear+1B.rear==front+1C.front==rearD.front==0

8.排序方法中,將整個無序序列分割成若干小的子序列并分別進(jìn)行插入排序的方法,稱為______。

A.希爾排序B.冒泡排序C.插入排序D.選擇排序

9.現(xiàn)有如下程序段#include"stdio.h"main(){intk[30]={12,324,45,6,768,98,21,34,453,456};intcount=0,i=0;while(k[i]){if(k[i]%2==0||k[i]%5==0)count++;i++;}printf("%d,%d\n",count,i);}則程序段的輸出結(jié)果為

A.7,8B.8,8C.7,10D.8,10

10.判斷一個棧ST(最多元素為Maxsize)為滿的條件是()。

A.ST->top!==-1

B.ST->top==-1

C.ST->top!==Maxsize-1

D.ST->top==Maxsize-1

11.在n個結(jié)點(diǎn)的順序表中,算法的時間復(fù)雜度是O(1)的操作是()。

A.訪問第i個結(jié)點(diǎn)(1<=i<=n)和求第i個結(jié)點(diǎn)的直接前驅(qū)(2<=i<=n)

B.在第i個結(jié)點(diǎn)之后插入一個新結(jié)點(diǎn)(1<=i<=n)

C.刪除第i個結(jié)點(diǎn)(1<=i<=n)

D.將n個結(jié)點(diǎn)從小到大排序

12.

13.有如下程序段:

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<'B'):

執(zhí)行該程序后,x的值為()。A.A.trueB.falseC.0D.1

14.若有以下定義;chara;intb;floatc;doubled;則表達(dá)式“a*b+d-c”值的類型為()

A.floatB.intC.charD.double

15.

16.微型計算機(jī)的運(yùn)算器、控制器及內(nèi)存儲器組合在一起,稱之為()

A.ALUB.CPUC.MPUD.主機(jī)

17.已有定義int(*q)(),指針q可以()。

A.指向函數(shù)的入口地址B.代表函數(shù)的返回值C.表示函數(shù)的類型D.表示函數(shù)返回值的類型

18.排序的算法很多,若排序的穩(wěn)定性和不穩(wěn)定性分類,則()是不穩(wěn)定排序。

A.冒泡排序B.歸并排序C.直接插入排序D.希爾排序

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

A.局部變量說明為static存儲類,其生存期將得到延長

B.全局變量說明為static存儲類,其作用域?qū)⒈粩U(kuò)大

C.任何存儲類的變量在未賦初值時,其值都是不確定的

D.形參可以使用的存儲類說明符與局部變量完全相同

20.在說明語句:int*f();中,標(biāo)識符f代表的是

A.一個用于指向整型數(shù)據(jù)的指針變量

B.一個用于指向一維數(shù)組的行指針

C.一個用于指向函數(shù)的指針變量

D.一個返回值為指針型的函數(shù)名

二、2.填空題(20題)21.下面程序執(zhí)行后輸出的結(jié)果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

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

}

22.若有定義:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[2][2]得到的初值是______。

23.下面的程序是將從終端讀入的20個字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;

chars[21],*p;

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

s[i]=getehar();

s[i]=【】;

p=【】;

while(*p)putchar(【】);

}

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

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

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

上述程序段的輸出結(jié)果是【】。

25.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序運(yùn)行時,如果從鍵盤輸入:A,B,<CR>,則輸出結(jié)果為______。

26.當(dāng)循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進(jìn)行入隊運(yùn)算。這種情況稱為【】。

27.下列程序可以判斷輸入的年份是不是閏年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是閏年",year);

else

printf("%d年不是閏年\n",year);

}

28.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,s<t時返回負(fù)值。請?zhí)羁铡?/p>

My_cmp(char*s,char*t)

{while(*s==*t)

{if(*s==′\0)return0;

++s;++t;

}return【】;

}

29.設(shè)有下列宏定義:#defineA2

#defineBA+3

則執(zhí)行賦值語句;t=B*2;t為int型變量后的值是______。

30.設(shè)a、b、c為整數(shù),且a=2、b=3、c=4,則執(zhí)行完語句a*=18+(b++)-(++c);后,a的值是【】。

31.已知bead指向一個帶頭結(jié)點(diǎn)的單向鏈表,鏈表中每個結(jié)點(diǎn)包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域?yàn)檎?。以下函?shù)求出鏈表中所有連接點(diǎn)數(shù)據(jù)域的和值作為函數(shù)值返回。請在橫線處填入正確內(nèi)容。

{intdata;structlink*next;}

main()

{structlink*head;

sam(______);

{stmctlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

32.以下函數(shù)rotate的功能是:將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組的第0列中,把a(bǔ)所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,b所指二維數(shù)組中其他數(shù)據(jù)不變。

#defineN4

voidrotade(inta[][N],intb[][N])

{intI,j;

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

{b[I][N-1]=【】;【】=a[N-1][I];}}

33.以下程序的運(yùn)行結(jié)果是()。

main()

(inta=2,b=7,c=5;

switch(a>0)

{case1:switch(b<0)

{case1:switch(");break;

case2:printf("!");break;

}

case0:switch(c==5)

{case0:printf("*");break;

case1:printf("#");break;

case2:printf("$");break;

}

default:printf("&");

}

printf("\n");

}

34.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項(xiàng)和后項(xiàng)之和存入數(shù)組b,并按每行4個元素輸出數(shù)組b。請?zhí)羁铡?/p>

#include<stdioh>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

for(i;0;i<9;i++)

{if(i%4==0)primf("\n");

printf("%3d",b[i];

}

}

35.以下程序的運(yùn)行結(jié)果是【】。

#include<string.h>

typeaefstructstudent{

charname[10];

longsno;

floatscore;

{STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(a.name,b.name)>0)d=b;

if(strcmp(C.name,)>0)d=C;

printf("%1d%s\n",d.sno,p->name);

}

36.存儲300個16×16點(diǎn)陣的漢字信息需要【】字節(jié)。

37.若有下列定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,則值為3的表達(dá)式為:______。

38.以下sstrcpy()函數(shù)實(shí)現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指內(nèi)存空間中,形成一個新字符串s。

請?zhí)羁铡?/p>

voidsstrcpy(char*s,char*t)

{while(*s++=【】);}

main()

{charstrl[100],str2[]="abcdefgh";

sstrcpy(strl,str2);

printf("%s\n",strl);

}

39.在面向?qū)ο蠓椒ㄖ?,信息隱蔽是通過對象的______性來實(shí)現(xiàn)的。

40.在面向?qū)ο蟮某绦蛟O(shè)計中,類描述的是具有相似性質(zhì)的一組【】。

三、1.選擇題(20題)41.設(shè)有如下的函數(shù)______。f(x)floatx;{printf("\n%d",x*x);}則函數(shù)類型

A.與參數(shù)x類型相同B.是voidC.是intD.無法確定

42.設(shè)下面程序的可執(zhí)行文件名為prg.exe,在該程序所在子目錄下輸入以下命令行:prghellogood<回車>則程序的輸出結(jié)果是______。main()(intargc,char*argv[]){inti;if(argc<=0)return;for(i=1;i<argc;i++)printf("%c",*argv[i]);}

A.hellogoodB.hgC.helD.hellogood

43.下面不屬于軟件設(shè)計原則的是

A.抽象B.模塊化C.白底向上D.信息隱蔽

44.下面程序main(){intx=32;printf("%d\n",x=x<<1);}的輸出是______。

A.100B.160C.120D.64

45.執(zhí)行以下語句的結(jié)果為______。intx=3,y;int*px=&x;y=*px++;

A.x=3,y=4B.x=3,y=3C.x=4,y=4D.x=3,y不知

46.若有說明語句"inta;floatb;”,以下輸入語句正確的是()

A.scanf("%f%f",&a,&b);

B.scanf("%f%d",&a;&b);

C.scanf("%d,%f",&a,&b);

D.scanf("%6.2f%6.2f",&a,&b);

47.下列數(shù)據(jù)結(jié)構(gòu)中,不是線性結(jié)構(gòu)的是()。

A.線性鏈表B.帶鏈的隊列C.帶鏈的棧D.二叉鏈表

48.以下正確的程序段是

A.cgarstr[20];scanf("%s",&str);

B.char*p;scanf("%s",p);

C.charstr[20];scanf("%s",&str[2])

D.charstr[20],*p=str;scanf("%s",p[2]);

49.有如下程序段int*p,a=10,b=1;p=&a;a=*p+b;執(zhí)行該程序段后,a的值為______。

A.12B.11C.10D.編譯出錯

50.設(shè)x=011050,則x=x&01252的值是()。

A.1000101000

B.1111110100011000

C.1011100010

D.1100000000101000

51.有以下程序段:intx=3;do{printf("%d",x-=2);}while(!(--x));其輸出結(jié)果是______。

A.1B.30C.1-2D.死循環(huán)

52.有如下程序段:inta=14,b=15,x,charc='A';x=(a&&B)&&(c<'B');執(zhí)行該程序段后,x的值為()

A.1B.0C.FALSED.TRUE

53.在長度為64的有序線性表中進(jìn)行順序查找,最壞情況下需要比較的次數(shù)為A.63B.64C.6D.7

54.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機(jī)無關(guān)的是數(shù)據(jù)的()。A.存儲結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.物理和存儲結(jié)構(gòu)

55.若有說明:inta[][3]={1,2,3,4,5,6,7};則a數(shù)組第一維的大小是

A.2B.3C.4D.無確定值

56.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inta[2][3]={{1,2,3},{4,5,6}},(*p)[3],i;p=a;for(i=0;i<3;i++){if(i<2)p[1][i]=p[1][i]-1;elsep[1][i]=1;}printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}

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

57.有下列程序:main(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);}若想從鍵盤上輸入數(shù)據(jù),使變量m中的值為123,n中的值為456,P中的值為789,則正確的輸入是()。

A.m=123n=456p=789

B.m=123n=456p=789

C.m=123,n=456,p=789

D.123456789

58.在執(zhí)行完下列的C語句段之后,則B的值是()。chara='A';intb;B=((34&&56)&&(a<'b'));

A.0B.1C.TRUED.FALSE

59.以下不正確的定義語句是

A.doublex[5]={2.0,4.0,6.0,8.0,10.0};

B.inty[5]={0,1,3,5,7,9};

C.charc1[]={'1','2','3','4','5'};

D.charc2[]={'\x10','\xa','\x8'};

60.若有說明:inta[][3]={0,0};則不正確的敘述是()。

A.數(shù)組a的每個元素的初值都是0

B.數(shù)組a的第一維大小為1

C.數(shù)組a的行數(shù)為1

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

四、選擇題(20題)61.以下選項(xiàng)中,能表示邏輯值“假”的是()

A.1B.0.000001C.0D.100.0

62.若有定義語句:

63.

64.有以下程序段:

以下關(guān)于程序段執(zhí)行情況的敘述,正確的是()。

A.for循環(huán)語句固定執(zhí)行8次

B.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時結(jié)束循環(huán)操作

C.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時不做任何操作

D.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時結(jié)束程序運(yùn)行

65.一個棧的初始狀態(tài)為空?,F(xiàn)將元素l、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,惻元素出棧的順序是()。A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.5432lEDCBA

66.

67.

68.

69.若要求定義具有10個int型元素的一維數(shù)組a,則以下定義語句中錯誤的是()。

70.

71.下面描述中,不屬于軟件危機(jī)表現(xiàn)的是()A.軟件過程不規(guī)范B.軟件開發(fā)生產(chǎn)率低C.軟件質(zhì)量難以控制D.軟件成本不斷提高

72.下列選項(xiàng)不符合良好程序設(shè)計風(fēng)格的是()。

A.源程序要文檔化B.數(shù)據(jù)說明的次序要規(guī)范化C.避免濫用goto語句D.模塊設(shè)計原則是高耦合、高內(nèi)聚

73.

74.

75.有以下程序:

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

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

76.下列關(guān)于數(shù)據(jù)庫設(shè)計的敘述中,正確的是()。

A.在需求分析階段建立數(shù)據(jù)字典

B.在概念設(shè)計階段建立數(shù)據(jù)字典

C.在邏輯設(shè)計階段建立數(shù)據(jù)字典

D.在物理設(shè)計階段建立數(shù)據(jù)字典

77.

78.

79.

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的作用是:將字符串str中的大寫字母都改為對應(yīng)的小寫字母,其他字符不變。例如,若輸入“abD,dFAD”,則輸出“abd,dfad”。請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.編寫函數(shù)fun,其功能是:實(shí)現(xiàn)兩個字符串的連接(不要使用庫函數(shù)strcat),即把p2所指的字符串連接到

pl所指的字符串的后面。

例如,分別輸入下面兩個字符串:

程序輸出:

注意:部分源程序在文件PROGl.C中。

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

參考答案

1.C

2.A函數(shù)中,形參必須是變量,實(shí)參可以是常量、變量或表達(dá)式,選項(xiàng)A錯誤,選項(xiàng)B正確;實(shí)參的個數(shù)和類型要與形參一致,選項(xiàng)C、D正確。本題答案為A選項(xiàng)。

3.D解析:C語言規(guī)定,字符常量在程序中要用單引號括起來。判斷c1是否為小寫字母的充要條件c1>='a'和c1<='z',用邏輯與(&&)來表示。A選項(xiàng)的這種形式在C語言中沒有,所以選項(xiàng)D)正確.

4.D該程序首先定義*a和b[],并進(jìn)行初始化。主函數(shù)中通過外層for循環(huán)語句,遍歷字符數(shù)組b[],并且將符合if條件語句的字符賦給數(shù)組p;for內(nèi)層循環(huán)語句,遍歷字符數(shù)組a[]。再將符合if條件語句的結(jié)果輸出。因此D選項(xiàng)正確。

5.B解析:選項(xiàng)A)中包含一個不合法的運(yùn)算符“:=”;選項(xiàng)C)應(yīng)改為(int)18.5%3;選項(xiàng)D)可理解為兩個表達(dá)式:a+7=c+b和a=a+7,因?yàn)镃語言規(guī)定賦值號的左邊只能是單個變量,不能是表達(dá)式或常量等,所以a+7=c+b是錯的。因此,正確答案是選項(xiàng)B),它相當(dāng)于a=(b=c+2),可分解為兩個表達(dá)式:b=c+2和a=b。

6.B

7.C

8.A解析:希爾排序法的基本思想是:將整個無序序列分割成若干小的子序列分別進(jìn)行插入排序。

9.D解析:在C語言中,定義一維數(shù)組的語句一般形式如下:

類型名數(shù)組名[常量表達(dá)式];

一維數(shù)組的引用形式為:數(shù)組名[下標(biāo)表達(dá)式]。count表示能被2整除或被5整除的個數(shù),i則計算有多少個數(shù)組元素。

10.D

11.A

12.B

13.D在C語言中,當(dāng)表達(dá)式成立時用l表示,不成立時用0表示,即x=(a&&b)&&(c<'B')=(14&&15)&&('A'<'B')=1&&1=1,故選擇D選項(xiàng)。

14.D解析:參加運(yùn)算的數(shù)據(jù)類型不同,要轉(zhuǎn)換為統(tǒng)一的數(shù)據(jù)類型,double在數(shù)據(jù)類型轉(zhuǎn)換中的級別最高,其他數(shù)據(jù)類型都要轉(zhuǎn)化為double,因此表達(dá)式值的類型為double。

15.B

16.D

17.A解析:本題考查的是指向函數(shù)的指針。函數(shù)指針的定義方式是:類型標(biāo)識符(*指針變量名)()。其中,“類型標(biāo)識符”為函數(shù)返回值的類型;“指針”指向函數(shù)的入口地址。

18.D

19.A解析:局部變量在執(zhí)行到它所在的程序塊時產(chǎn)生,執(zhí)行完時被摧毀,而靜態(tài)局部變量的生存期將一直延長到程序運(yùn)行結(jié)束,故選項(xiàng)A正確;全局變量的只有一種靜態(tài)存儲類別,故全局變量說明為static存儲類,和沒有說明為static存儲類其生存期都是一直延長到程序運(yùn)行結(jié)束,故選項(xiàng)B不正確:未賦初值的局部變量的初值是隨機(jī)的,故選項(xiàng)C不正確;形參只能是一般局部變量,不能使用任何存儲類說明符,故選項(xiàng)D不正確。所以,4個選項(xiàng)中選項(xiàng)A符合題意。

20.D解析:帶回指針值的函數(shù),其一般定義形式為:

類型標(biāo)識符*函數(shù)名(參數(shù)表);

例如;int*f(x,y);

其中,f是函數(shù)名,調(diào)用它以后能得到一個指向整型數(shù)據(jù)的指針(地址),x,y是函數(shù)f的形參。在f的兩側(cè)分別為*運(yùn)算符和()運(yùn)算符,而()優(yōu)先級高于*,因此f先與()結(jié)合,顯然是函數(shù)形式。這個函數(shù)前面有一個*,表示此函數(shù)是指針型函數(shù)(函數(shù)值是指針)。前面的int表示返回的指針指向整型變量。

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

22.88解析:二維數(shù)組可以看成是按矩陣形式排列的,題目中給二維數(shù)組賦初值是按行分段賦值的,a[4][4]可以分解為4個一維數(shù)組,其數(shù)組名分別為a[0]、a[1]、a[2]、a[3],這4個一維數(shù)組都有4個元素,a[0]的元素為ap[0][0]、a[0][1]、a[0][2]、a[0][3]。

23.\0s*p++\\0\r\ns\r\n*p++解析:本題先通過for循環(huán)從鍵盤讀入20個字符,然后賦值'\\0'作為字符串結(jié)束標(biāo)志,再使指針p指向字符串的首地址,最后通過while循環(huán)對字符串進(jìn)行掃描并輸出。

24.16

25.BB解析:因?yàn)閏是字符類型變量,它只能接收一個字符,所以c=A,字符型變量在參與算術(shù)運(yùn)算的時候是用其相應(yīng)的ASCII碼參與運(yùn)算的,這樣++c得到字母B的ASCII碼,用putchar函數(shù)輸出是輸出其相應(yīng)的字符,所以是B。

26.上溢上溢解析:入隊運(yùn)算是指在循環(huán)隊列的隊尾加入一個新元素。這個運(yùn)算有兩個基本操作:首先將隊尾指針進(jìn)一(即rear=rear+1),并當(dāng)rear=m+1時置rear=1;然后將新元素插入隊尾指針指向的位置。當(dāng)循環(huán)隊列非空(s=1)時且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進(jìn)行入隊運(yùn)算,這種情況稱為“上溢”。

27.yearleap=1leap

28.*s-*t*s-*t解析:兩字符串大小比較必須從它們的首字符開始,在對應(yīng)字符相等情況下循環(huán),直至不相等結(jié)束。相等時,若字符串已到了字符串的結(jié)束標(biāo)記符,則兩字符串相同,函數(shù)返回0值;如還有后繼字符,則準(zhǔn)備比較下一對字符。對應(yīng)字符不相同,循環(huán)結(jié)束。循環(huán)結(jié)束時,就以兩個當(dāng)前字符的差返回,所以在空框處應(yīng)填入*s-*t,保證在s>t時,返回正值,當(dāng)s<t時,返回負(fù)值。

29.88解析:本題考查帶參數(shù)的宏定義及相關(guān)運(yùn)算.運(yùn)算過程為:t=B*2=A+3*2=2+3*2=8。

30.3232解析:b++是先使用b的值參加運(yùn)算,再對b加1。++c是先對c加1,再使用c的值參加運(yùn)算。a*=18+(b++)-(++c)等價于a=a*(18+(b++)-(++c))則a=2*(18+3-5)=32。

31.

32.a[0][I]b[I][0]a[0][I],b[I][0]解析:b[i][N-1]=a[0][i]實(shí)現(xiàn)把a(bǔ)所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,\ue008b[I][0]=a[N-1][I]實(shí)現(xiàn)將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組中的第0列。

33.#&#&解析:剛開始時,switch后面的表達(dá)式a>0為真(1),與case1匹配,然后執(zhí)行case1后面的switch語句,表達(dá)式b<0值為0,沒有與其匹配的語句,返回外層,因?yàn)橥鈱記]有break語句,順序執(zhí)行case0后面的switch語句,表達(dá)式“c==5”值為1,與其后面的case1匹配,因此輸出#,遇到break返回外層,又因?yàn)橥鈱記]有break語句,順序執(zhí)行default后的語句,輸出&。

34.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數(shù)組a中元素a[i]與a[i+1]值相加后的值賦予數(shù)組b中元素b[i]小即可實(shí)現(xiàn)將一個數(shù)組的前項(xiàng)和后項(xiàng)之和存入另一數(shù)組。

35.2002Shanxian2002Shanxian解析:本題中第一個if語句將結(jié)構(gòu)體變量a.name和結(jié)構(gòu)體變量b.name中較小的那個賦值給結(jié)構(gòu)體變量d,第二個if語句將結(jié)構(gòu)體變量c.name和結(jié)構(gòu)體變量d.name較大的那個賦給結(jié)構(gòu)體變量d。通過函數(shù)strcmp比較。strcmp()函數(shù)有兩個參數(shù),分別為被比較的兩個字符串。如果第一個字符串大于第二個字符串返回值大于0,若第一個小于第二個返回值小于0,相等時返回值為0。字符串比較大小的標(biāo)準(zhǔn)是從第一個字符開始依次向右比較,遇到某一個字符大,該字符所在的字符串就是較大的字符串,如果遇到某一個字符小,該字符所在的字符串就是較小的字符串。本程序中第一個if語句strcmp(a.name,b.name)>0為真,故將b的值賦給d,第二個if語句strcmp(c.name,d.name)>0為假,故不執(zhí)行后面的語句,最后d的值為b的值,因此d.sno和p->name的值為2002Shangxian。

36.800800解析:一個16x16點(diǎn)陣的字形碼需要16x16/8=32字節(jié)的存儲空間,所以300個漢字信息需要9600個字節(jié)。

37.p+=2*(p++)p+=2,*(p++)解析:由題可知a[2]=3,因此只要使指針p指向a[3],然后再引用指針的值就可以了。

38.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個字符型數(shù)組strl和str2,并且給str2賦初值“abc&fgh”,接著調(diào)用函數(shù)sstrcpy(str1,str2),將字符串str2的值賦給str1。在函數(shù)sstrcpy(*s,*t)中,用了一個while循環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后指針s和指針t都下移到下一個元素。所以空格處應(yīng)該填*t++或*(t++)。

39.封裝封裝

40.對象對象解析:將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。

41.C解析:在函數(shù)名前沒有說明函數(shù)返回值類型時,隱含為int類型。

42.B解析:argc=3,argv[1]='hello',argv[2]='good'。注意:printf格式串中是%c,因此輸出argv[1]和argv[2]的第一個字符,即'hg'。

43.C解析:軟件設(shè)計遵循軟件工程的基本目標(biāo)和原則,建立了適用于在軟件設(shè)計中應(yīng)該遵循的基本原理和與軟件設(shè)計有關(guān)的概念,它們具有抽象、模塊化、信息隱蔽和數(shù)據(jù)獨(dú)立性。自底向上是集成測試中增量測試的一種。

44.D解析:<<是C語言中規(guī)定的左移運(yùn)算符,例如,a=a<<2,這個語句即是將a的二進(jìn)制數(shù)左移兩位,左移一位相當(dāng)于該數(shù)乘于2,左移兩位相當(dāng)于該數(shù)乘以2的2次方。所以,x<<1=32*2=64。

45.B解析:++和*的運(yùn)算優(yōu)先級別相同,且從右到左結(jié)合,y=*px++也就是y=*(px++),++運(yùn)算只對px有效。這里++是后置的,應(yīng)當(dāng)先將px所指向的變量*px(也就是變量x)的值賦給變量y,然后px才增1。

46.C解析:說明語句中變量a為整型,變量b為實(shí)型。選項(xiàng)A、B和D的格式控制中變量a的格式描述符為f,與定義的變量類型不符,故選項(xiàng)A、B和D錯誤。

47.D解析:線性鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu),帶鏈的棧與帶鏈的隊列分別是棧與隊列的鏈?zhǔn)酱鎯Y(jié)構(gòu)。線性表屬于線性結(jié)構(gòu),棧與隊列是特殊的線性表,因此也屬于線性結(jié)構(gòu)。二叉鏈表是二叉樹的鏈?zhǔn)酱鎯Y(jié)構(gòu),二叉樹屬于非線性結(jié)構(gòu)。

48.C解析:scanf輸入字符串有一點(diǎn)要注意的是,格式控制串必須用%s。注意:gets函數(shù)和puts函數(shù)的作用。

49.B解析:執(zhí)行p=&a;后,p指向整數(shù)a,*p即p的目標(biāo)變量,也就是a;所以a=*p+b等價于a=a+b,可知a的值最終為11。

50.A解析:本題主要考查按位與運(yùn)算,x=011050的二進(jìn)制形式為000100100010t000,01252的二進(jìn)制形式為0000001010101010,兩者相與得0000001000101000。

51.C解析:在程序中,首先定義了一個整型變量x并賦初值為3,接著執(zhí)行do-while循環(huán)。在do-while循環(huán)中,先執(zhí)行循環(huán)體,即執(zhí)行printf語句(輸出表達(dá)式X-=2;的值,這個表達(dá)式相當(dāng)于x=x-2=3-2=1,所以第一次輸出值為1),接著判斷while后面括號里的條件表達(dá)式是否為真。這個表達(dá)式!(--X)等價于!(0)為真(這里--X是先自減,再進(jìn)行判斷,此時x自減1,值為0),繼續(xù)執(zhí)行循環(huán)體,即執(zhí)行printf語句(輸出表達(dá)式x-=2;的值,這個表達(dá)式相當(dāng)于x=x-2=0-2=-2,所以第二次輸出值為-2),接著判斷while后面括號里的條件表達(dá)式是否為真,顯然,表達(dá)式!(--x)等價于(!(-3))為假,退出循環(huán),所以其最終的輸出結(jié)果為1-2。所以,4個選項(xiàng)中選項(xiàng)C符合題意。

52.A解析:a=14,b=15,第一個&&兩側(cè)均為非零值。c='A',表達(dá)式c<'B'的值為真即1,第二個&&兩側(cè)也均為非零值。表達(dá)式(a&&b)&&(c<'B')的值為1,賦值給變量x。

53.B解析:在長度為64的有序線性表中,其中的64個數(shù)據(jù)元素是按照從大到小或從小到大的順序排列有序的。在這樣的線性表中進(jìn)行順序查找,最壞的情況就是查找的數(shù)據(jù)元素不性表中或位于線性表的最后。按照線性表的順序查找算法,首先用被查找的數(shù)據(jù)和線性表的第一個數(shù)據(jù)元素進(jìn)行比較,若相等,則查找成功,否則,繼續(xù)進(jìn)行比較,即和線性表的第二個數(shù)據(jù)元素進(jìn)行比較。同樣,若相等,則查找成功,否則,繼續(xù)進(jìn)行比較。依次類推,直到性表中查找到該數(shù)據(jù)或查找到線性表的最后一個元素,算法才結(jié)束。因此,在長度為64的有序線性表十進(jìn)行順序查找,最壞的情況下需要比較64次。因此,本題的正確答案為選項(xiàng)B。

54.C數(shù)據(jù)結(jié)構(gòu)概念一般包括3個方面的內(nèi)容,數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)(物理結(jié)構(gòu))及數(shù)據(jù)上的運(yùn)算集合。數(shù)據(jù)的邏輯結(jié)構(gòu)只抽象地反映數(shù)據(jù)元素之間的邏輯關(guān)系,即數(shù)據(jù)元素之間的前后件關(guān)系,而不管它在計算機(jī)中的存儲表示形式。

55.B解析:本題考查二維數(shù)組的定義方式。第一維的大小由以下方法判斷:①當(dāng)初值的個數(shù)能被第二維的常量表達(dá)式的值除盡時,所得商數(shù)就是第一維的大小;2)當(dāng)初值的個數(shù)不能被第二維的常量表達(dá)式的值除盡時,則第一維的劃、:所得的商數(shù)+1。

56.B解析:第1次執(zhí)行for循環(huán),p[1][0]=p[1][0]-1=3:第2次執(zhí)行for循環(huán),p[1][1]=p[1][1]-1=4:第3次執(zhí)行for循環(huán),p[1][2]=1,最后輸出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。

57.A解析:scanf()函數(shù)中格式控制字符串是為了輸入數(shù)據(jù)用的,無論其中有什么字符,在輸入數(shù)據(jù)時,按照一一對應(yīng)的位置原樣輸入這些字符。

58.B解析:本題考查C語言3個知識點(diǎn):①將一個字符賦給一個字符變量時,并不是將該字符本身存儲到內(nèi)存中,而是將該字符對應(yīng)的ASCII碼存儲到內(nèi)存單元中;②大寫字母的ASCII碼值小于其對應(yīng)小寫字母的ASCII碼值;③只要邏輯與運(yùn)算符&&的兩個運(yùn)算對象都為非零,返回值就是1。

59.B解析:在一維數(shù)組中要注意的是作為下標(biāo)表達(dá)式的常量表達(dá)式的值必須是大于等于0,選項(xiàng)B)中定義有5個元素,但賦值時有6個元素,所以是錯誤的。

60.D解析:本題考查給二維數(shù)組元素賦值。給二維數(shù)組元素賦值時應(yīng)注意下列兩點(diǎn):①在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0。②二維數(shù)組第一維的大小由下列規(guī)則確定;當(dāng)初值的個數(shù)能被第二維的常量表達(dá)式的值除盡時,所得商數(shù)就是第一維的大小;當(dāng)初值的個數(shù)不能被第二維的常量表達(dá)式的值除盡時,第一維的大小等于所得商數(shù)加1。

61.C\n本題考查邏輯值假,在程序中非0字符表示邏輯真,0表示邏輯假,所以答案選擇C。

\n

62.A本題考查的知識點(diǎn)是:二維數(shù)組和指針數(shù)組。無論一個數(shù)組有多少維或者是否含指針類型,該數(shù)組最終都可以被看做一個比較特殊的一維數(shù)組。例如本題中的inta[2][3]可以看作元素為int[3](即包含3個int型元素的一維數(shù)組),包含2個這樣元素的一維數(shù)組;而int*p[31則可以看作元素為int*,包含3個這樣元素的一維數(shù)組。選項(xiàng)C)中,p為數(shù)組名,其值是不能被改變的,故非法;選項(xiàng)B)中,do]的類型是int*,而a是二維數(shù)組名(類型為intfl[3]),兩者無法賦值,故非法;選項(xiàng)A)中,p[01為int型指針,&a[lⅡ2]為元素a[lⅡ2]的地址,所以選項(xiàng)A)符合題意。

63.D\r\n

64.DCase常量表達(dá)式只是起語句標(biāo)號作用,并不是該處進(jìn)行條件判斷。在執(zhí)行switch語句時,根據(jù)switch的表達(dá)式,找到與之匹配的ease語句,就從此cafle子旬執(zhí)行下去,不再進(jìn)行判斷,直到碰到break或函數(shù)結(jié)束為止。簡單的說break是結(jié)束整個循環(huán)體,而continue是結(jié)束單次循環(huán)。B選項(xiàng)中當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時要執(zhí)行打印操作。C選項(xiàng)中當(dāng)產(chǎn)生的隨機(jī)數(shù)為l和2時分別執(zhí)行cage3與case4后面語句的內(nèi)容。由于存在break語句所以for循環(huán)不是固定執(zhí)行8次,執(zhí)行次數(shù)與產(chǎn)生的隨機(jī)數(shù)n有關(guān)系。

65.B棧按后進(jìn)先出的原則組織數(shù)據(jù),因此入棧最晚的最先出棧,因此本題答案為B)。

66.D

67.A

68.A

69.B一雛數(shù)組的定義方式為:類型說明符數(shù)組名[常量表達(dá)式];注意定義數(shù)組時,元素個數(shù)不能是變量。因此應(yīng)該選B選項(xiàng)。

70.D

71.A軟件危機(jī)主要表現(xiàn)在:軟件需求的增長得不到滿足;軟件開發(fā)成本和進(jìn)度無法控制;軟件質(zhì)量難以保證;軟件不可維護(hù)或維護(hù)程度非常低;軟件的成本不斷提高;軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。所以選擇A。

72.D在程序設(shè)計中,對于軟件設(shè)計中的模塊設(shè)計要保證高內(nèi)聚和低耦合,源程序要有文檔說明,同時對程序中數(shù)據(jù)的說明要規(guī)范化。而goto語句破壞程序的結(jié)構(gòu),要盡量避免使用。所以選項(xiàng)D不正確。

73.C

74.B

75.An=b>a,n=1,判斷到此,邏輯或?yàn)檎妫竺娴腏=a<b不再執(zhí)行。因此i=1,j=0。

76.A數(shù)據(jù)字典是在需求分析階段建立,在數(shù)據(jù)庫設(shè)計過程中不斷修改、充實(shí)和完善的。故答案為A選項(xiàng)。

77.D

78.C

79.B

80.D

81.82.

【考點(diǎn)分析】

【解題思路】

本題用兩個循環(huán)完成操作,第1個循環(huán)的作用是求出第1個字符串的長度,即將i指到第1個字符串的末尾。第2個循環(huán)的作用是將第2個字符串的字符連到第1個字符串的末尾。

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

一、單選題(20題)1.向一個棧頂指針為H的鏈棧中插入一個s所指向的結(jié)點(diǎn)時,需執(zhí)行()。

A.H->link=s

B.s->link=H->link;H->link=s;

C.s->link=H;H=s;

D.s->link=H;H=H->link;

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

A.形參可以是常量、變量或表達(dá)式

B.實(shí)參可以是常量、變量或表達(dá)式

C.實(shí)參的類型應(yīng)與形參的類型賦值兼容

D.實(shí)參的個數(shù)應(yīng)與形參的個數(shù)一致

3.判斷char型變量c1是否為小寫字母的正確表達(dá)式為()。

A.'a'<=c1<='z'

B.(c1>=A)‖(c1<=z)

C.('a'=>c1‖('z'<=c1)

D.(c1>='a')&&(c1<='z')

4.若有以下程序

則程序的輸出結(jié)果是

A.China!B.toChina!C.meyoutoChina!D.youtoChina!

5.C語言中最簡單的數(shù)據(jù)類型包括()。

A.整型、實(shí)型、邏輯型B.整型、實(shí)型、字符型C.整型、字符型、邏輯型D.字符型、實(shí)型、邏輯型

6.請選出以下程序的輸出結(jié)果()#include<stdio.h>sub(x,y,z)intx,y,*z;{*2=y(tǒng)-x;}main(){inta,b,c;sub(10,5,&A);sub(7,a,&B);sub(a,b,&C);printf("%d,%d,%d\n",a,b,C);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

7.在循環(huán)隊列中,若front與rear分別表示對頭元素和隊尾元素的位置,則判斷循環(huán)隊列空的條件是()。

A.front==rear+1B.rear==front+1C.front==rearD.front==0

8.排序方法中,將整個無序序列分割成若干小的子序列并分別進(jìn)行插入排序的方法,稱為______。

A.希爾排序B.冒泡排序C.插入排序D.選擇排序

9.現(xiàn)有如下程序段#include"stdio.h"main(){intk[30]={12,324,45,6,768,98,21,34,453,456};intcount=0,i=0;while(k[i]){if(k[i]%2==0||k[i]%5==0)count++;i++;}printf("%d,%d\n",count,i);}則程序段的輸出結(jié)果為

A.7,8B.8,8C.7,10D.8,10

10.判斷一個棧ST(最多元素為Maxsize)為滿的條件是()。

A.ST->top!==-1

B.ST->top==-1

C.ST->top!==Maxsize-1

D.ST->top==Maxsize-1

11.在n個結(jié)點(diǎn)的順序表中,算法的時間復(fù)雜度是O(1)的操作是()。

A.訪問第i個結(jié)點(diǎn)(1<=i<=n)和求第i個結(jié)點(diǎn)的直接前驅(qū)(2<=i<=n)

B.在第i個結(jié)點(diǎn)之后插入一個新結(jié)點(diǎn)(1<=i<=n)

C.刪除第i個結(jié)點(diǎn)(1<=i<=n)

D.將n個結(jié)點(diǎn)從小到大排序

12.

13.有如下程序段:

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<'B'):

執(zhí)行該程序后,x的值為()。A.A.trueB.falseC.0D.1

14.若有以下定義;chara;intb;floatc;doubled;則表達(dá)式“a*b+d-c”值的類型為()

A.floatB.intC.charD.double

15.

16.微型計算機(jī)的運(yùn)算器、控制器及內(nèi)存儲器組合在一起,稱之為()

A.ALUB.CPUC.MPUD.主機(jī)

17.已有定義int(*q)(),指針q可以()。

A.指向函數(shù)的入口地址B.代表函數(shù)的返回值C.表示函數(shù)的類型D.表示函數(shù)返回值的類型

18.排序的算法很多,若排序的穩(wěn)定性和不穩(wěn)定性分類,則()是不穩(wěn)定排序。

A.冒泡排序B.歸并排序C.直接插入排序D.希爾排序

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

A.局部變量說明為static存儲類,其生存期將得到延長

B.全局變量說明為static存儲類,其作用域?qū)⒈粩U(kuò)大

C.任何存儲類的變量在未賦初值時,其值都是不確定的

D.形參可以使用的存儲類說明符與局部變量完全相同

20.在說明語句:int*f();中,標(biāo)識符f代表的是

A.一個用于指向整型數(shù)據(jù)的指針變量

B.一個用于指向一維數(shù)組的行指針

C.一個用于指向函數(shù)的指針變量

D.一個返回值為指針型的函數(shù)名

二、2.填空題(20題)21.下面程序執(zhí)行后輸出的結(jié)果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

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

}

22.若有定義:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[2][2]得到的初值是______。

23.下面的程序是將從終端讀入的20個字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;

chars[21],*p;

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

s[i]=getehar();

s[i]=【】;

p=【】;

while(*p)putchar(【】);

}

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

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

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

上述程序段的輸出結(jié)果是【】。

25.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序運(yùn)行時,如果從鍵盤輸入:A,B,<CR>,則輸出結(jié)果為______。

26.當(dāng)循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進(jìn)行入隊運(yùn)算。這種情況稱為【】。

27.下列程序可以判斷輸入的年份是不是閏年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是閏年",year);

else

printf("%d年不是閏年\n",year);

}

28.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,s<t時返回負(fù)值。請?zhí)羁铡?/p>

My_cmp(char*s,char*t)

{while(*s==*t)

{if(*s==′\0)return0;

++s;++t;

}return【】;

}

29.設(shè)有下列宏定義:#defineA2

#defineBA+3

則執(zhí)行賦值語句;t=B*2;t為int型變量后的值是______。

30.設(shè)a、b、c為整數(shù),且a=2、b=3、c=4,則執(zhí)行完語句a*=18+(b++)-(++c);后,a的值是【】。

31.已知bead指向一個帶頭結(jié)點(diǎn)的單向鏈表,鏈表中每個結(jié)點(diǎn)包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域?yàn)檎?。以下函?shù)求出鏈表中所有連接點(diǎn)數(shù)據(jù)域的和值作為函數(shù)值返回。請在橫線處填入正確內(nèi)容。

{intdata;structlink*next;}

main()

{structlink*head;

sam(______);

{stmctlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

32.以下函數(shù)rotate的功能是:將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組的第0列中,把a(bǔ)所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,b所指二維數(shù)組中其他數(shù)據(jù)不變。

#defineN4

voidrotade(inta[][N],intb[][N])

{intI,j;

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

{b[I][N-1]=【】;【】=a[N-1][I];}}

33.以下程序的運(yùn)行結(jié)果是()。

main()

(inta=2,b=7,c=5;

switch(a>0)

{case1:switch(b<0)

{case1:switch(");break;

case2:printf("!");break;

}

case0:switch(c==5)

{case0:printf("*");break;

case1:printf("#");break;

case2:printf("$");break;

}

default:printf("&");

}

printf("\n");

}

34.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項(xiàng)和后項(xiàng)之和存入數(shù)組b,并按每行4個元素輸出數(shù)組b。請?zhí)羁铡?/p>

#include<stdioh>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

for(i;0;i<9;i++)

{if(i%4==0)primf("\n");

printf("%3d",b[i];

}

}

35.以下程序的運(yùn)行結(jié)果是【】。

#include<string.h>

typeaefstructstudent{

charname[10];

longsno;

floatscore;

{STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(a.name,b.name)>0)d=b;

if(strcmp(C.name,)>0)d=C;

printf("%1d%s\n",d.sno,p->name);

}

36.存儲300個16×16點(diǎn)陣的漢字信息需要【】字節(jié)。

37.若有下列定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,則值為3的表達(dá)式為:______。

38.以下sstrcpy()函數(shù)實(shí)現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指內(nèi)存空間中,形成一個新字符串s。

請?zhí)羁铡?/p>

voidsstrcpy(char*s,char*t)

{while(*s++=【】);}

main()

{charstrl[100],str2[]="abcdefgh";

sstrcpy(strl,str2);

printf("%s\n",strl);

}

39.在面向?qū)ο蠓椒ㄖ?,信息隱蔽是通過對象的______性來實(shí)現(xiàn)的。

40.在面向?qū)ο蟮某绦蛟O(shè)計中,類描述的是具有相似性質(zhì)的一組【】。

三、1.選擇題(20題)41.設(shè)有如下的函數(shù)______。f(x)floatx;{printf("\n%d",x*x);}則函數(shù)類型

A.與參數(shù)x類型相同B.是voidC.是intD.無法確定

42.設(shè)下面程序的可執(zhí)行文件名為prg.exe,在該程序所在子目錄下輸入以下命令行:prghellogood<回車>則程序的輸出結(jié)果是______。main()(intargc,char*argv[]){inti;if(argc<=0)return;for(i=1;i<argc;i++)printf("%c",*argv[i]);}

A.hellogoodB.hgC.helD.hellogood

43.下面不屬于軟件設(shè)計原則的是

A.抽象B.模塊化C.白底向上D.信息隱蔽

44.下面程序main(){intx=32;printf("%d\n",x=x<<1);}的輸出是______。

A.100B.160C.120D.64

45.執(zhí)行以下語句的結(jié)果為______。intx=3,y;int*px=&x;y=*px++;

A.x=3,y=4B.x=3,y=3C.x=4,y=4D.x=3,y不知

46.若有說明語句"inta;floatb;”,以下輸入語句正確的是()

A.scanf("%f%f",&a,&b);

B.scanf("%f%d",&a;&b);

C.scanf("%d,%f",&a,&b);

D.scanf("%6.2f%6.2f",&a,&b);

47.下列數(shù)據(jù)結(jié)構(gòu)中,不是線性結(jié)構(gòu)的是()。

A.線性鏈表B.帶鏈的隊列C.帶鏈的棧D.二叉鏈表

48.以下正確的程序段是

A.cgarstr[20];scanf("%s",&str);

B.char*p;scanf("%s",p);

C.charstr[20];scanf("%s",&str[2])

D.charstr[20],*p=str;scanf("%s",p[2]);

49.有如下程序段int*p,a=10,b=1;p=&a;a=*p+b;執(zhí)行該程序段后,a的值為______。

A.12B.11C.10D.編譯出錯

50.設(shè)x=011050,則x=x&01252的值是()。

A.1000101000

B.1111110100011000

C.1011100010

D.1100000000101000

51.有以下程序段:intx=3;do{printf("%d",x-=2);}while(!(--x));其輸出結(jié)果是______。

A.1B.30C.1-2D.死循環(huán)

52.有如下程序段:inta=14,b=15,x,charc='A';x=(a&&B)&&(c<'B');執(zhí)行該程序段后,x的值為()

A.1B.0C.FALSED.TRUE

53.在長度為64的有序線性表中進(jìn)行順序查找,最壞情況下需要比較的次數(shù)為A.63B.64C.6D.7

54.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機(jī)無關(guān)的是數(shù)據(jù)的()。A.存儲結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.物理和存儲結(jié)構(gòu)

55.若有說明:inta[][3]={1,2,3,4,5,6,7};則a數(shù)組第一維的大小是

A.2B.3C.4D.無確定值

56.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inta[2][3]={{1,2,3},{4,5,6}},(*p)[3],i;p=a;for(i=0;i<3;i++){if(i<2)p[1][i]=p[1][i]-1;elsep[1][i]=1;}printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}

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

57.有下列程序:main(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);}若想從鍵盤上輸入數(shù)據(jù),使變量m中的值為123,n中的值為456,P中的值為789,則正確的輸入是()。

A.m=123n=456p=789

B.m=123n=456p=789

C.m=123,n=456,p=789

D.123456789

58.在執(zhí)行完下列的C語句段之后,則B的值是()。chara='A';intb;B=((34&&56)&&(a<'b'));

A.0B.1C.TRUED.FALSE

59.以下不正確的定義語句是

A.doublex[5]={2.0,4.0,6.0,8.0,10.0};

B.inty[5]={0,1,3,5,7,9};

C.charc1[]={'1','2','3','4','5'};

D.charc2[]={'\x10','\xa','\x8'};

60.若有說明:inta[][3]={0,0};則不正確的敘述是()。

A.數(shù)組a的每個元素的初值都是0

B.數(shù)組a的第一維大小為1

C.數(shù)組a的行數(shù)為1

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

四、選擇題(20題)61.以下選項(xiàng)中,能表示邏輯值“假”的是()

A.1B.0.000001C.0D.100.0

62.若有定義語句:

63.

64.有以下程序段:

以下關(guān)于程序段執(zhí)行情況的敘述,正確的是()。

A.for循環(huán)語句固定執(zhí)行8次

B.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時結(jié)束循環(huán)操作

C.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時不做任何操作

D.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時結(jié)束程序運(yùn)行

65.一個棧的初始狀態(tài)為空?,F(xiàn)將元素l、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,惻元素出棧的順序是()。A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.5432lEDCBA

66.

67.

68.

69.若要求定義具有10個int型元素的一維數(shù)組a,則以下定義語句中錯誤的是()。

70.

71.下面描述中,不屬于軟件危機(jī)表現(xiàn)的是()A.軟件過程不規(guī)范B.軟件開發(fā)生產(chǎn)率低C.軟件質(zhì)量難以控制D.軟件成本不斷提高

72.下列選項(xiàng)不符合良好程序設(shè)計風(fēng)格的是()。

A.源程序要文檔化B.數(shù)據(jù)說明的次序要規(guī)范化C.避免濫用goto語句D.模塊設(shè)計原則是高耦合、高內(nèi)聚

73.

74.

75.有以下程序:

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

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

76.下列關(guān)于數(shù)據(jù)庫設(shè)計的敘述中,正確的是()。

A.在需求分析階段建立數(shù)據(jù)字典

B.在概念設(shè)計階段建立數(shù)據(jù)字典

C.在邏輯設(shè)計階段建立數(shù)據(jù)字典

D.在物理設(shè)計階段建立數(shù)據(jù)字典

77.

78.

79.

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的作用是:將字符串str中的大寫字母都改為對應(yīng)的小寫字母,其他字符不變。例如,若輸入“abD,dFAD”,則輸出“abd,dfad”。請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.編寫函數(shù)fun,其功能是:實(shí)現(xiàn)兩個字符串的連接(不要使用庫函數(shù)strcat),即把p2所指的字符串連接到

pl所指的字符串的后面。

例如,分別輸入下面兩個字符串:

程序輸出:

注意:部分源程序在文件PROGl.C中。

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

參考答案

1.C

2.A函數(shù)中,形參必須是變量,實(shí)參可以是常量、變量或表達(dá)式,選項(xiàng)A錯誤,選項(xiàng)B正確;實(shí)參的個數(shù)和類型要與形參一致,選項(xiàng)C、D正確。本題答案為A選項(xiàng)。

3.D解析:C語言規(guī)定,字符常量在程序中要用單引號括起來。判斷c1是否為小寫字母的充要條件c1>='a'和c1<='z',用邏輯與(&&)來表示。A選項(xiàng)的這種形式在C語言中沒有,所以選項(xiàng)D)正確.

4.D該程序首先定義*a和b[],并進(jìn)行初始化。主函數(shù)中通過外層for循環(huán)語句,遍歷字符數(shù)組b[],并且將符合if條件語句的字符賦給數(shù)組p;for內(nèi)層循環(huán)語句,遍歷字符數(shù)組a[]。再將符合if條件語句的結(jié)果輸出。因此D選項(xiàng)正確。

5.B解析:選項(xiàng)A)中包含一個不合法的運(yùn)算符“:=”;選項(xiàng)C)應(yīng)改為(int)18.5%3;選項(xiàng)D)可理解為兩個表達(dá)式:a+7=c+b和a=a+7,因?yàn)镃語言規(guī)定賦值號的左邊只能是單個變量,不能是表達(dá)式或常量等,所以a+7=c+b是錯的。因此,正確答案是選項(xiàng)B),它相當(dāng)于a=(b=c+2),可分解為兩個表達(dá)式:b=c+2和a=b。

6.B

7.C

8.A解析:希爾排序法的基本思想是:將整個無序序列分割成若干小的子序列分別進(jìn)行插入排序。

9.D解析:在C語言中,定義一維數(shù)組的語句一般形式如下:

類型名數(shù)組名[常量表達(dá)式];

一維數(shù)組的引用形式為:數(shù)組名[下標(biāo)表達(dá)式]。count表示能被2整除或被5整除的個數(shù),i則計算有多少個數(shù)組元素。

10.D

11.A

12.B

13.D在C語言中,當(dāng)表達(dá)式成立時用l表示,不成立時用0表示,即x=(a&&b)&&(c<'B')=(14&&15)&&('A'<'B')=1&&1=1,故選擇D選項(xiàng)。

14.D解析:參加運(yùn)算的數(shù)據(jù)類型不同,要轉(zhuǎn)換為統(tǒng)一的數(shù)據(jù)類型,double在數(shù)據(jù)類型轉(zhuǎn)換中的級別最高,其他數(shù)據(jù)類型都要轉(zhuǎn)化為double,因此表達(dá)式值的類型為double。

15.B

16.D

17.A解析:本題考查的是指向函數(shù)的指針。函數(shù)指針的定義方式是:類型標(biāo)識符(*指針變量名)()。其中,“類型標(biāo)識符”為函數(shù)返回值的類型;“指針”指向函數(shù)的入口地址。

18.D

19.A解析:局部變量在執(zhí)行到它所在的程序塊時產(chǎn)生,執(zhí)行完時被摧毀,而靜態(tài)局部變量的生存期將一直延長到程序運(yùn)行結(jié)束,故選項(xiàng)A正確;全局變量的只有一種靜態(tài)存儲類別,故全局變量說明為static存儲類,和沒有說明為static存儲類其生存期都是一直延長到程序運(yùn)行結(jié)束,故選項(xiàng)B不正確:未賦初值的局部變量的初值是隨機(jī)的,故選項(xiàng)C不正確;形參只能是一般局部變量,不能使用任何存儲類說明符,故選項(xiàng)D不正確。所以,4個選項(xiàng)中選項(xiàng)A符合題意。

20.D解析:帶回指針值的函數(shù),其一般定義形式為:

類型標(biāo)識符*函數(shù)名(參數(shù)表);

例如;int*f(x,y);

其中,f是函數(shù)名,調(diào)用它以后能得到一個指向整型數(shù)據(jù)的指針(地址),x,y是函數(shù)f的形參。在f的兩側(cè)分別為*運(yùn)算符和()運(yùn)算符,而()優(yōu)先級高于*,因此f先與()結(jié)合,顯然是函數(shù)形式。這個函數(shù)前面有一個*,表示此函數(shù)是指針型函數(shù)(函數(shù)值是指針)。前面的int表示返回的指針指向整型變量。

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

22.88解析:二維數(shù)組可以看成是按矩陣形式排列的,題目中給二維數(shù)組賦初值是按行分段賦值的,a[4][4]可以分解為4個一維數(shù)組,其數(shù)組名分別為a[0]、a[1]、a[2]、a[3],這4個一維數(shù)組都有4個元素,a[0]的元素為ap[0][0]、a[0][1]、a[0][2]、a[0][3]。

23.\0s*p++\\0\r\ns\r\n*p++解析:本題先通過for循環(huán)從鍵盤讀入20個字符,然后賦值'\\0'作為字符串結(jié)束標(biāo)志,再使指針p指向字符串的首地址,最后通過while循環(huán)對字符串進(jìn)行掃描并輸出。

24.16

25.BB解析:因?yàn)閏是字符類型變量,它只能接收一個字符,所以c=A,字符型變量在參與算術(shù)運(yùn)算的時候是用其相應(yīng)的ASCII碼參與運(yùn)算的,這樣++c得到字母B的ASCII碼,用putchar函數(shù)輸出是輸出其相應(yīng)的字符,所以是B。

26.上溢上溢解析:入隊運(yùn)算是指在循環(huán)隊列的隊尾加入一個新元素。這個運(yùn)算有兩個基本操作:首先將隊尾指針進(jìn)一(即rear=rear+1),并當(dāng)rear=m+1時置rear=1;然后將新元素插入隊尾指針指向的位置。當(dāng)循環(huán)隊列非空(s=1)時且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進(jìn)行入隊運(yùn)算,這種情況稱為“上溢”。

27.yearleap=1leap

28.*s-*t*s-*t解析:兩字符串大小比較必須從它們的首字符開始,在對應(yīng)字符相等情況下循環(huán),直至不相等結(jié)束。相等時,若字符串已到了字符串的結(jié)束標(biāo)記符,則兩字符串相同,函數(shù)返回0值;如還有后繼字符,則準(zhǔn)備比較下一對字符。對應(yīng)字符不相同,循環(huán)結(jié)束。循環(huán)結(jié)束時,就以兩個當(dāng)前字符的差返回,所以在空框處應(yīng)填入*s-*t,保證在s>t時,返回正值,當(dāng)s<t時,返回負(fù)值。

29.88解析:本題考查帶參數(shù)的宏定義及相關(guān)運(yùn)算.運(yùn)算過程為:t=B*2=A+3*2=2+3*2=8。

30.3232解析:b++是先使用b的值參加運(yùn)算,再對b加1。++c是先對c加1,再使用c的值參加運(yùn)算。a*=18+(b++)-(++c)等價于a=a*(18+(b++)-(++c))則a=2*(18+3-5)=32。

31.

32.a[0][I]b[I][0]a[0][I],b[I][0]解析:b[i][N-1]=a[0][i]實(shí)現(xiàn)把a(bǔ)所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,\ue008b[I][0]=a[N-1][I]實(shí)現(xiàn)將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組中的第0列。

33.#&#&解析:剛開始時,switch后面的表達(dá)式a>0為真(1),與case1匹配,然后執(zhí)行case1后面的switch語句,表達(dá)式b<0值為0,沒有與其匹配的語句,返回外層,因?yàn)橥鈱記]有break語句,順序執(zhí)行case0后面的switch語句,表達(dá)式“c==5”值為1,與其后面的case1匹配,因此輸出#,遇到break返回外層,又因?yàn)橥鈱記]有break語句,順序執(zhí)行default后的語句,輸出&。

34.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數(shù)組a中元素a[i]與a[i+1]值相加后的值賦予數(shù)組b中元素b[i]小即可實(shí)現(xiàn)將一個數(shù)組的前項(xiàng)和后項(xiàng)之和存入另一數(shù)組。

35.2002Shanxian2002Shanxian解析:本題中第一個if語句將結(jié)構(gòu)體變量a.name和結(jié)構(gòu)體變量b.name中較小的那個賦值給結(jié)構(gòu)體變量d,第二個if語句將結(jié)構(gòu)體變量c.name和結(jié)構(gòu)體變量d.name較大的那個賦給結(jié)構(gòu)體變量d。通過函數(shù)strcmp比較。strcmp()函數(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

提交評論