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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.直接選擇排序的時間復雜度為()。(n為元素個數(shù))

A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)

2.以下對于C語言的描述中,正確的是:()

A.C語言調(diào)用函數(shù)時,值傳遞方式只能將實參的值傳給形參,形參的值不能傳遞給實參

B.C語言中函數(shù)既可以嵌套定義,也可以遞歸調(diào)用

C.函數(shù)必須有返回值

D.C程序中有調(diào)用關系的所有函數(shù)必須放在同一源程序文件中

3.

4.現(xiàn)有二叉搜索樹(BST)前序遍歷結果序列為abdefgc,中序遍歷結果序列為debgfac,請問后序遍歷結果序列為()

A.debgfaCB.edgfbcAC.edgbfcAD.degbfaC

5.設有數(shù)組A[i][j],數(shù)組的每個元素長度為3字節(jié),i的值為8,j的值為10,數(shù)組從內(nèi)存首地址BA開始順序存放,下標從0開始,當以列為主序存放時,元素A[5][8]的存儲首地址為()。

A.BA+141B.BA+180C.BA+222D.BA+225

6.有以下程序:#include<stdio.h>main(){inta;scanf("%d",&a);if(a++<9)printf("%d\n",a);clscprintf("%d\n",a--);}程序運行時從鍵盤輸入9<回車>,則輸出結果是()。A.10B.11C.9D.8

7.下面敘述正確的是______。A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結構無關

B.算法的空間復雜度是指算法程序中指令(或語句)的條數(shù)

C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

D.以上三種描述都不對

8.程序流程圖(PFD)中的箭頭代表的是

A.數(shù)據(jù)流B.控制流C.調(diào)用關系D.組成關系

9.在具有n個結點的單鏈表中,實現(xiàn)()的操作,其算法的時間復雜度是O。

A.求鏈表的第i個結點B.在地址為P的結點之后插入一個結點C.刪除表頭結點D.刪除地址為P的結點的后繼結點

10.查找較快,且插入和刪除操作也比較方便的查找方法是

A.分塊查找B.二分查找C.順序查找D.折半查找

11.

12.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}編譯時編譯器提示錯誤信息,你認為出錯的語句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;

13.以下程序的輸出結果是()。main{inta[3][3]=“l(fā),2),{3,4),{5,6)},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(”%d\n”,s);}A.18B.19C.20D.21

14.數(shù)據(jù)結構主要研究的是數(shù)據(jù)的邏輯結構、數(shù)據(jù)的運算和()。A.數(shù)據(jù)的方法B.數(shù)據(jù)的存儲結構C.數(shù)據(jù)的對象D.數(shù)據(jù)的邏輯存儲

15.下列關于標識符的說法中錯誤的是

A.合法的標識符是由字母、數(shù)字和下劃線組成

B.C語言的標識符中,大寫字母和小寫字母被認為是兩個不同的字符

C.C語言的標識符可以分為三類,即關鍵字、預定義標識符和用戶標識符

D.用戶標識符與關鍵字不同時,程序在執(zhí)行時將給出出錯信息

16.一個無向連連通圖的生成樹是含有該連通圖的全部項點的_______。

A.極小連通子圖B.極小子圖C.極大連通子圖D.極大子圖

17.目前以比較為基礎的內(nèi)部排序方法中,其比較次數(shù)與待排序的記錄的初始排列狀態(tài)無關的是()

A.插入排序B.快速排序C.二分插入排序D.冒泡排序

18.

19.若有定義:inta,b;,通過語句scanf("%d;%d",&a,&b);,能把整數(shù)3賦給變量a,5賦給變量b的輸入數(shù)據(jù)是A.A.35B.3,5C.3;5D.35

20.有以下程序:structSTU{charname[10];intnum;floatTotalScore;};voidf(structSTU*p){structSTUs[2]={{"SunDan",20044,550},{"Penghua",20045,537}},*q=s;++p;++q;*p=*q;}main(){structSTUs[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};f(s);printf("%s%d%3.0f\n",s[1].name,s[1].num,s[1].TotalScore);}程序運行后的輸出結果是______。

A.SunDan20044580

B.Penghua20045537

C.LiSiGUO20042580

D.SunDan20041703

二、2.填空題(20題)21.在運算過程中,能夠使空表與非空表的運算統(tǒng)一的結構是【】。

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

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}}

23.棧的3種基本運算是:入棧、退棧和______。

24.下面程序有兩個printf語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%x\n",p);

printf("%x\n,p+9);

}

25.設有如下程序段:

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

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

上述程序段的輸出結果是【】。

26.下列程序的運行結果是______。

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

27.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結構、數(shù)據(jù)流、______和處理過程。

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

main()

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

inti;

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

printf("\n");}

29.在兩種基本測試方法中,【】測試的原則之一是保證所測模塊中每一個獨立路徑至少要執(zhí)行一次。

30.對數(shù)組中的元素值進行排序。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[]={2,4,15,3,17,5,8,23,9,7,11,13,}i,j,k;

for(k=0;k<12;k++)

for(i=k;i<12;i++)

if(a[i]>【】)

{j=a[i];

a[i]=【】;

【】=j;}

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

printf("%4d",a[i]);

printf("\n");

}

31.表達式pow(2.8,sqrt(float(x)))值的數(shù)據(jù)類型為______型。

32.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括五個部分,即數(shù)據(jù)項、數(shù)據(jù)結構、數(shù)據(jù)流、【】和處理過程。

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

main()

{inta=0;

a+=(a=8);

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

}

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

#include<stdlib.h>

main()

{char*s1,*s2,m;

s1=s2=(char*)malloc(sizeof(char));

*s1=15;*s2=20;m=*s1+*s2;

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

}

35.若有下列定義(設int類型變量占兩個字節(jié)),則i=【】,j=【】。

inti=8,j=9;floatx=123.456;

print("i=%oj=%o\n",i,j);

36.以下程序運行后的輸出結果是()。structNODE{intk;structNODE*link;};main(){structNODEm[5],*p=m,*q=m+4;inti=0:while(p!=q){p->k=++i;p++;q->k=1++;q--;}q->k=i:for(i=0;i<5;i++)printf("%d",m[i].k);printf("\n");}

37.下列程序的輸出結果是______。

#include<stdio.h>

main()

{intx=1,y=1,a=1,b=1;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:

a++;b++;break;

}

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

}

38.下列程序段是從鍵盤輸入的字符中統(tǒng)計小寫字母的個數(shù),用換行符結束循環(huán)。請?zhí)羁铡?/p>

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

39.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計算它們酌和值。和值通過形參傳回主函數(shù)輸出。請?zhí)羁铡?/p>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{

inti,i,k,s;0;

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

{

k=0;

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

if(a[k][i]>a[j][i])

k=j;

s+=______;

}

______=s;

}

main()

{

intx[M][N]={3,2,5,1,4,1,8,3),s;

SumColumMin(______);

printf(“%d\n”,s);

}

40.對存儲器按字節(jié)進行編址,若某存儲器芯片共有8根地址線,則該存儲器芯片的存儲容量為【】字節(jié)。

三、1.選擇題(20題)41.在數(shù)據(jù)處理中,其處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)項C.數(shù)據(jù)結構D.數(shù)據(jù)元素

42.若w=l,x=2,y=3,z=4,則條件表達式w<x?w:y<z?y:z的值是

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

43.假定所有變量均已正確說明,下列程序段運行后x的值是a=d=c=0;x=35;if(!a)x=-1,elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

44.以下錯誤的定義語句是A.intx[][3]={{0},{1},{1,2,3}};

B.intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

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

45.在以下一組運算符中,優(yōu)先級最高的運算符是()

A.<=B.=C.%D.&&

46.從未排序序列中依次取出元素與已排序序列中的元素作比較,將取出的元素放入已排序序列中的正確位置上,此方法稱為______。

A.歸并排序B.選擇排序C.交換排序D.插入排序

47.若輸入1.5、2.5,則以下程序的運行結果為______。main(){floata,b;intc;scanf("%f,%f,",&a,&b);c=max(a,b);printf("%d",c);}max(x,y)floatx,y;{floatz;z=x>y?x:y;return(z);}

A.1.5B.2.5C.2D.3

48.有以下程序:#include<string.h>main(){charstr[][20]={"Hello","Beijing"}*p=str;printf("%\n",strlen(p+20));}程序運行后的輸出結果是

A.0B.5C.7D.20

49.軟件調(diào)試的目的是A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.驗證軟件的正確性

50.若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是()。

A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}

B.switch((int)x);{case1:printf("*\n");case2:printf("**\n");}

C.switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}

D.switch(a+b){case1:printf("*\n");casec:printf("**\n");}

51.閱讀下列程序,則執(zhí)行后的結果為#include"stdio.h"main(){intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}

A.3e,6B.62,5C.56,5D.3E,6

52.MIPS常用來描述計算機的運算速度,其含義是()。A.A.每秒鐘處理百萬個字符

B.每分鐘處理百萬個字符

C.每秒鐘執(zhí)行百萬條指令

D.每分鐘執(zhí)行百萬條指令

53.設char型變量x中的值為10100111,則表達式(2+x)(-3)的值為______。

A.10101001B.10101000C.11111101D.1010101

54.下列程序的輸出結果是()。#include<stdio.h>voidmain(){inta=0,b=1,C=2;if(++a>0||++b>0)++c;printf("%d,%d,%d",a,b,C);}

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

55.若有以下說明和定義:typcdefint*INTEGER;INTEGERp,*q;以下敘述正確的是()。

A.p是血型變量

B.p是基類型為int的指針變量

C.q是基類型為int的指針變量

D.程序中可用INTEGER代替int類型名

56.若有如下語句:intx=3;do{printf("%d\n",x-=2);}wbile(!(--x));則上面程序段()。

A.輸出的是1B.輸出的是1和-2C.輸出的是3和0D.是死循環(huán)

57.在C語言中,引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型允許是()

A.整型常量B.整型表達式C.整型常量或整型表達式D.任何類型的表達式

58.辦公自動化(OA)是計算機的一項應用,按計算機應用的分類,它屬于()

A.數(shù)據(jù)處理B.科學計算C.實時控制D.輔助設計

59.請讀程序:#includde<stdio.h>#include<string.>voidfun(char*s){chara[10];strcpy(a,"STRING");s=a;}main(){char*p;fun(p);print{("%s\n",p);}上面程序的輸出結果(表示空格)()

A.STRINGB.STRINGC.STRINGD.不確定的值

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

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

四、選擇題(20題)61.棧和隊列的共同點是()。

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

62.下列函數(shù)的功能是()。

A.將a所指字符串賦給b所指空間

B.使指針b指向a所指字符串

C.將a所指字符串和b所指字符串進行比較

D.檢查a和b所指字符串中是否有’\0

63.

如果進棧序列為el、e2、e3、e4,則可能的出棧序列是()。

A.e3、el、e4、e2B.e2、e4、e3、elC.e3、e4、e2D.任意順序

64.

65.若有定義語句:

66.

67.

68.設有以下程序段:

要求輸入字符串給結構體變量rec的title成員,錯誤的輸入語句是()。

A.seanf(”%s”Ptrtitle);

B.scanf(”%s”,rec.title);

C.scanf(’’%s”,(*pu).title);

D.scanf(”%s”,ptr->title);

69.下列程序執(zhí)行后的輸出結果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}

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

70.

71.

72.

73.在下列選項中,沒有構成死循環(huán)的是

74.

75.

76.

77.若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項是()。

A.a,point,*&a

B.&*a,&a,*point

C.*&point,*point,&a

D.&a,&*point,point

78.以下能正確定義賦初值的語句是()。

A.intnl=n2=10:

B.Chare=32;

C.floatf=f+1.1;

D.doublex=12.3E2.5;

79.

80.

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

main

{intx=0.5;charz=a;

printf("%d\n",(x&1)&&(z<2));}

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

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc的功能是:用選擇法對數(shù)組中的m個元素按從小到大的順序進行排序。

例如,排序前的數(shù)據(jù)為:1132-5214

則排序后的數(shù)據(jù)為:-52111432

請修改程序中的錯誤,使它能得到正確結果。

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

試題程序:

#include<stdio.h>

#defineM20

voidproc(inta[],intn)

{

inti,j,t,P;

//****found****

for(j=0;j<n-1;j++);

{

p=j;

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

if(a[[i]<a[p])

p=i;

t=a[p];

a[p]=aEj3;

//****found****

a[p]=t;

}

}

voidmain

{

intarr[M]={11,32,-5,2,14},i,m=5;

printf("排序前的數(shù)據(jù):");

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

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

printf("\n");

proc(arr,m);

printf("排序后的順序:");

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

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

printf("\n");

}

六、程序設計題(1題)82.某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù),其功能是:求出該學生的平均分,并放入記錄的ave成員中。例如,學生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應為78.875。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voldfun(STREC*a){}voidmainSTRECs={"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.D

2.A

3.A

4.B

5.A

6.A本題考查簡單的運算符操作.當輸入9時,(a++<9)為假,所以執(zhí)行else語句中的printf("%d\n",a--),在執(zhí)行時此時a經(jīng)過a++操作a=10,所以答案為A。

7.C解析:算法的執(zhí)行效率與數(shù)據(jù)的邏輯結構和存儲結構都有很緊密的關系。算法的空間復雜度是指執(zhí)行該算法需要的內(nèi)存空間,并非算法程序中指令的條數(shù)。算法一般應該具有以下4個特征:可行性、確定性、有窮性和擁有足夠情報。其中,有窮性是指算法必須能在執(zhí)行有限個步驟之后終止,否則可能失去實際意義。

8.B解析:程序流程圖(PFD)是一種傳統(tǒng)的、應用廣泛的軟件過程設計表示工具,通常也稱為程序框圖,其箭頭代表的是控制流。

9.A

10.A分塊查找是折半查找和順序查找的一種改進方法,分塊查找要求索引表是有序的,對塊內(nèi)節(jié)點沒有排序要求,因此查找較快,且插入和刪除操作也比較方便。

11.B

12.A本題考查指針,pl=&k表示P指向k的地址,則*p=k,依次類推,在對指針進行賦值時沒有錯誤。a=/*p+m賦值,在c語言中"/*"表示的注釋,所以答案選擇A。

13.A循環(huán)的作用是求行下標從1到2列下標從0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a[2][1]+a[2][2]=3+4+5+6+0=18。

14.B詳細解答:

數(shù)據(jù)結構是研究數(shù)據(jù)元素及其之間的相互關系和數(shù)據(jù)運算的一門學科,它包含3個方面的內(nèi)容,即數(shù)據(jù)的邏輯結構、存儲結構和數(shù)據(jù)的運算。

15.D解析:用戶標識符與關鍵字相同時,程序在編譯過程中將給出出錯信息。注意:選項D)應該改為用戶標識符與關鍵字相同,程序在編譯時將給出出錯信息。注意:合法的標識符第一個字符必須為字母或下劃線。

16.A

17.C

18.B

19.C解析:在C語言中scanf函數(shù)中輸入數(shù)據(jù)時要嚴格按照所規(guī)定的樣式輸入。

20.B解析:f函數(shù)用了顯式傳地址的方式,因此主函數(shù)中的s值發(fā)生了變化。

21.循環(huán)鏈表循環(huán)鏈表解析:在鏈表的運算過程中,采用鏈接方式即循環(huán)鏈表的結構把空表與非空表的運算統(tǒng)一起來。循環(huán)鏈表具有兩個特點:①在循環(huán)鏈表中增加了一個表頭結點,其數(shù)據(jù)域為任意或根據(jù)需要來設置,指針域指向線性表的第一個元素的結點。循環(huán)鏈表的頭指針指向表頭結點。②循環(huán)鏈表中最后一個結點的指針不是空,而是指向表頭結點。

22.852852解析:循環(huán)前,變量y的值為9,其中,循環(huán)語句在y大于0情況下循環(huán),每次循環(huán)后y的值都減1。循環(huán)體是當y能被3整除時輸出表達式--y,輸出的是減1后的y值。這樣,第一次循環(huán)因y為9,能被3整除,輸出8,y也變成8。又經(jīng)兩次循環(huán),y的值變?yōu)?,又讓y減1變成5,并輸出5;又經(jīng)兩次循環(huán),y的值變成3,讓y減1變成2,輸出2;再經(jīng)兩次循環(huán)后,y的值變成0,結束循環(huán),所以程序輸出852。

23.讀棧頂元素讀棧頂元素解析:棧的基本運算有3種:入棧、退棧和讀取棧頂元素。其中,入棧是指在棧頂插入一個新的元素;退棧是指取出棧頂元素并賦值給一個變量;讀棧頂元素是將棧頂元素賦值給一個指定的變量,不刪除棧頂元素。

24.1a61a6解析:對于指針變量的運算,就是對地址的運算。本題中由于指針指向的是整型變量,所以,使指針變量移動9個位置也就是移動18個字節(jié)。注意,本題是以十六進制輸出的。

25.16

26.55解析:分析程序,當a=3;b=4;c=5時,判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結果為5。

27.數(shù)據(jù)存儲數(shù)據(jù)存儲

28.SOSO解析:考查用指針引用字符串數(shù)組中元素的方法。題中需要注意兩個問題:一是for循環(huán)的修正表達式共執(zhí)行兩次'i--'操作;二是*p[i]是對某個字符的引用。

29.白盒或白箱或白盒子或WhiteBox白盒或白箱或白盒子或WhiteBox解析:本題考查軟件工程的測試。測試一般有兩種方法:黑盒測試和白盒測試。黑盒測試不考慮程序的內(nèi)部邏輯結構和處理過程,只著眼于程序的外部特性。用黑盒測試來發(fā)現(xiàn)程序中的錯誤,必須用所有可能的輸入數(shù)據(jù)來檢查程序能否都能產(chǎn)生正確的輸出。白盒測試是在了解程序內(nèi)部結構和處理過程的基礎上,對程序的所有路徑進行測試,檢查路徑是否都能按預定要求正確工作。因此,劃線處應填入“白盒(箱)”或“WhiteBox”。

30.a[k]a[k]a[k]

31.floatfloat解析:在此表達式中x是float類型的變量,經(jīng)過開方所得到的結果仍是float類型,再和2.8進行運算時,應該先將2.8轉(zhuǎn)換成float類型再運算,最后結果仍是float型。

32.數(shù)據(jù)存儲數(shù)據(jù)存儲

33.1616解析:在程序中首先將8賦值給變量a,然后在進行復合賦值運算。即a=a+a=8+8=16,所以該空格處應該填16。

34.4040解析:本題中指針s1和s2都指向同一個內(nèi)存中的地址。因此語句“*s2=20;”執(zhí)行后,*\u3000s1=*s2=20。所以m最后的值為40。

35.1011

36.13431

37.a=2b=3a=2,b=3解析:分析程序,程序從x=1語句開始執(zhí)行,之后執(zhí)行第一個switch語句,switch(x)=switch(1),所以執(zhí)行case1,case1語句中包含一個復合switch語句:這時執(zhí)行第二個switch語句,此時y=1,所以switch(y)=switch(1),因此執(zhí)行case1,將b加1,得到b=2,遇到break語句,退出第二個switch語句,則整個case1的復合語句執(zhí)行完畢,由于在這個case1的后面沒有break語句使其退出第一個switch語句,所以接著執(zhí)行下列的case2后面的語句,即將a,b各加1,得到a=2,b=3。

38.c>='a'&&c<='z'c>='a'&&c<='z'解析:小寫字母在內(nèi)存中以ASCII的形式存入,且從a到z依次遞增,所以可以直接用c>='a'&&c<='z'判斷是不是小寫字母;c!='\\n'判斷是用換行符結束循環(huán)。

39.a[k][i]*sumx&sa[k][i]\r\n*sum\r\nx,&s解析:本題考核的知識點是C程序的綜合應用。本題中定義了一個函數(shù)SumColumMin(),該函數(shù)有兩個參數(shù),第一個參數(shù)為數(shù)組名,第二個參數(shù)為一個指針,用來訪問存放數(shù)組中每列元素中的最小值的存儲空間的變量。所以在主函數(shù)中調(diào)用SumColumMin()函數(shù),應該將數(shù)組x和sum作為實參傳給SumColumMin()中的形參,故第20個空格處應該填x,&s。在SumColumMin()函數(shù)中用了兩重循環(huán),用N記錄數(shù)組的列,M記錄數(shù)組的行。內(nèi)循環(huán)共循環(huán)了M次,每循環(huán)一次將a[k][i]比較a[j][i](當k=0時,a[k][i]第一行第一列的值,然后將該值依次和第一列中的每個值比較,讓a[k][i]表示較小的值,那么比較到最后一個元素后a[k][i]就是改列中最小元素的值),讓k記錄較小值元素的行下標,這樣通過M次循環(huán)得到每列中的最小元素,然后退出內(nèi)循環(huán),繼續(xù)執(zhí)行該次外循環(huán)里的其他語句,即將剛求得第i列的最小值a[k][i]累加到s中,故第18個空格處應該填a[k][i],最后外循環(huán)共循環(huán)N次,將每列得最小值累加到s中,退出循環(huán),然后讓指針sum所指向得存儲空間得值為s敲第19個空格處應該填*sum。

40.256256解析:本題考查對存儲器按字節(jié)進行編址的規(guī)則及其尋址范圍(2n),其中n為存儲器芯片中地址線的條數(shù)。

41.BB)【解析】數(shù)據(jù)元素是由多個數(shù)據(jù)項組成,數(shù)據(jù)是能夠被計算機識別、存儲和加工處理的信息載體,數(shù)據(jù)處理的最小單位是數(shù)據(jù)項。

42.D解析:本題考查了條件表達式的計算方法。條件表達式的運算順序是從右至左,所以本題先計算條件表達式y(tǒng)<z?y:z的值,為3,然后再計算條件表達式w<x?w:3的值,為1。

43.B

44.C解析:本題考查的是二維數(shù)組的定義和初始化方法。C語言中,在定義并初始化二維數(shù)組時,可以省略數(shù)組第一維的長度,但是不能省略第二維的長度。故選項C)錯誤。

45.C

46.D

47.C

48.C解析:本題考核的知識點是二維數(shù)組的初始化及庫函數(shù)strlen()的應用。主函數(shù)中定義了一個二維字符數(shù)組并初始化,初始化后的結果為str[0]='Hello',str[1]='Beijing',然后定義一個字符指針變量p并讓它指向數(shù)組的首地址,即指向str[0],而在C語言中無論是一維還是多維數(shù)組,其元素在內(nèi)存中都是順序存放的,故p+20后指針指向str[1],所以strlen(P+20);返回的是str[1]中的字符串的長度,即Beijing的長度為7,所以最后輸出的值為7,所以,4個選項中選項C符合題意。

49.B本題考查軟件工程調(diào)試。調(diào)試與測試是兩個不同的過程,有著根本的區(qū)別:調(diào)試是一個隨機的、不可重復的過程,它用于隔離和確認問題發(fā)生的原因,然后修改軟件來糾正問題;測試是一個有計劃的,可以重復的過程,它的目的是為了發(fā)現(xiàn)軟件中的問題。因此,軟件調(diào)試的目的是為了改正軟什中的錯誤。本題的正確答案是選項\u3000B。

50.C解析:switch后的括號中只能是整型或字符型表達式,選項A中使用的是浮點型變量x,故不正確。選項B在switch的括號后面多了一個分號,故也不正確。switch的case標號后只能是常量或常量表達式,而不能是變量,所以選項D也不正確。故應該選擇C。

51.A解析:數(shù)組a[5][5],0<=i<5,0<=j<5,則可以用5種表達式來引用,a[i][j],*a(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+5*i+j)。數(shù)組的下限為0,%后面為小寫的x,所以輸出的結果為小寫字母表示的十六進制。

52.C解析:計算機的性能在很大程度上是由CPU決定的,CPU的性能主要體現(xiàn)在它的運算速度,通常使用計算機每秒鐘能夠執(zhí)行的指令條數(shù)來描述速度高低,可以用單字長定點指令的平均執(zhí)行時間表示,單位是MIPS,它是Million\u3000of\u3000Instructions\u3000Per\u3000Second的縮寫,意思是“每秒百萬條指令”,也可以用單字長浮點指令的平均執(zhí)行時間表示,單位是\u3000MFLOPS(Million\u3000Floating\u3000instructions\u3000Per\u3000Second)。

53.D解析:異或運算符(^)的運算規(guī)則是:參加運算的兩個相應位同號,則結果為0(假);異號則為1(真)。取反運算符(-)的運算規(guī)則是:對一個二進制數(shù)按位取反,即將0變?yōu)?,1變?yōu)?。本題(-3)是對3(二進制形式為00000011)按位取反即11111100。表達式(2+x)(-3)的值就等價于(00000010+10100111)^11111100,結果為01010101。

54.C解析:本題考查if語句。先判斷if語句的條件是否成立,++a->0,此條件成立,又因為是進行邏輯或運算,在己知其中一個運算對象為真的情況下,不必判斷另外一個運算符的真假,即不進行++b操作,就可以直接得出整個表達式的值為邏輯1,執(zhí)行下列的++c。

55.B解析:INTEGER是類型名,由它來間接定義p和*q的類型,因此,p是基類型為int的指針變量,故選項A不正確,選項.B正確,q是二級指針變量,它指向基類型是int的指針變量,故選項C,D不正確。所以4個選項中B正確。

56.B解析:do-while語句的一般格式為:

do{循環(huán)體語句}while(表達式);

先執(zhí)行循環(huán)體語句一次,再判斷表達式的值,若值為真,則繼續(xù)執(zhí)行循環(huán),否則終止循環(huán)。本題中,先執(zhí)行printf('%d\\n',x-=2),值為x=x-2,即為1。然后判斷表達式的值,!(--x)為真,x=0,繼續(xù)循環(huán)。再次執(zhí)行循環(huán)體語句后,x=-2,此時表達式!(--x)的值為0,結束循環(huán)。

57.C解析:C語言規(guī)定只能逐個引用數(shù)組元素而不能一次引用整個數(shù)組,數(shù)據(jù)元素的表示形式為數(shù)組名[下標],下標可以是整型常量或整型表達式。

58.A

59.D

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

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

62.A表達式*b=*a是將a所指的字符賦給b所指的空間,然后,指針a和b依次后移,直到到達指針a所指字符串的結尾。

63.B

\n棧的特點是先進后出,可知el肯定是最后出棧的,因此正確答案為選項B。

\n

64.D

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

66.D

67.C

68.A符號“_>”是指針特用的,符號“.”用于指定元素的成員。ptr是指針,只能用符號“一>”,因此選項A錯誤。+P是指定元素(Fee)可以使用“.”運算,因此選項D正確。選項B,F(xiàn)ee.title代表數(shù)組title,同理選項C正確。答案為A選項。

69.D解析:本題中的宏調(diào)用MA(1+a+b)展開后的結果是1+a+b*(1+a+b-1)=1+1+2*(1+1+2-1)=2+2*3=8。所以輸出的結果是8,選項D正確。

70.C

71.A

72.D

73.D本題是考查死循環(huán)的含義。在編程中,一個無法靠自身的控制終止的循環(huán)稱為“死循環(huán)”。選項A給出的函數(shù)主體是while語句,該語句的循環(huán)結束條件是i>100,初始i=100,執(zhí)行完i=i%100+1語句后,i的值變?yōu)?,由于不滿足循環(huán)結束條件,循環(huán)執(zhí)行while,執(zhí)行完第二次i=i%100+1語句后,i的值變?yōu)?,一直循環(huán)執(zhí)行下去,i的值最大只能達到100,永遠不會達到結束條件,故選項A是死循環(huán)。選項B是一個for循環(huán),它的一般形式為:for(<初始化>;<條件表達式>;<增量>)語句;for循環(huán)中的“初始化”、“條件表達式”和“增量”都是選擇項,即可以缺省,但“;”不能缺省。省略了初始化,表示不對循環(huán)控制變量賦初值。省略了條件表達式,則不做其他處理時便成為死循環(huán)。省略了增量,則不對循環(huán)控制變量進行操作。選項C是一個do-while語句,先執(zhí)行do語句,然后用while后面的語句進行判斷。初始時,k=10000,執(zhí)行完do語句后,k=10001,滿足while里的判斷語句k>10000,繼續(xù)執(zhí)行do-while,因為k的值一直是增大的,故該循環(huán)將一直運行下去。D選項是一個while循環(huán),該循環(huán)結束的條件是s<=0,該循環(huán)初始時s的值為36,每執(zhí)行一次while循環(huán),將執(zhí)行--s操作,當s=0時,循環(huán)結束。

74.D

75.B

76.B

77.D本題主要考查指針變量對數(shù)值的引用。在題目中,首先定義了整型指針變量point和一個整型變量a,變量a的初值為4,然后是指針變量指向a,或者說將變量a所在存儲單元的地址值賦給指針變量。

在選項A中,很顯然,不全是地址,只有point表示地址,而*&a等價于*(&a),表示取一個數(shù)值。

在選項B中,也不都表示地址,其中*point表示數(shù)值,其他兩個表示地址。

在選項C中,與選項B類似,其中的*point表示數(shù)值。

在選項D中,都表示地址,是題目的選擇答案。

78.BA)選項表達式本身就錯誤,不能給表達式賦值。C)選項中不能讓變量f給f賦值。D)選項不是正確的浮點數(shù)表示形式。所以,本題答案為B)。

79.A

80.B

\n(x&1)&&(z<2)=(0.5&1)&&(a<z)=1&&1=1,故選擇B選項。

\n

81.(1)錯誤:for(j=0;j<n-1;j++);

\n正確:for(j=0;j<n-1j++)

\n(2)錯誤:a[p]=t;

\n正確:a[j]=t;

\n【解析】for循環(huán)結束的標志是for后的一個語句,如果for后面直接跟一個分號,說明是一個空循環(huán)不執(zhí)行任何功能,因此“for(j=0;j<n-1;j++);”后面的分號應該去掉;當a[i]<a[p]時兩元素互換,因此“a[p]=t;”應改為“a[j]=t”。

\n

82.voidfun(STREC*a){inti;a->ave=0.0;for(i=0;i<N;i++)a->ave=a->ave+a->s[i];/*求各門課程成績的總和*/a->ave=a->ave/N;/*求平均分*/}【解析】本題考查的是指向結構體類型的指針變量做參數(shù)和結構體類型成員的運算。fun函數(shù)中求出平均成績,要帶回主函數(shù)則必須定義一個指針類型的形參STREC*a,同時引用成員使用指向運算符,a->ave和a->s[i]。2021-2022年遼寧省盤錦市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.直接選擇排序的時間復雜度為()。(n為元素個數(shù))

A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)

2.以下對于C語言的描述中,正確的是:()

A.C語言調(diào)用函數(shù)時,值傳遞方式只能將實參的值傳給形參,形參的值不能傳遞給實參

B.C語言中函數(shù)既可以嵌套定義,也可以遞歸調(diào)用

C.函數(shù)必須有返回值

D.C程序中有調(diào)用關系的所有函數(shù)必須放在同一源程序文件中

3.

4.現(xiàn)有二叉搜索樹(BST)前序遍歷結果序列為abdefgc,中序遍歷結果序列為debgfac,請問后序遍歷結果序列為()

A.debgfaCB.edgfbcAC.edgbfcAD.degbfaC

5.設有數(shù)組A[i][j],數(shù)組的每個元素長度為3字節(jié),i的值為8,j的值為10,數(shù)組從內(nèi)存首地址BA開始順序存放,下標從0開始,當以列為主序存放時,元素A[5][8]的存儲首地址為()。

A.BA+141B.BA+180C.BA+222D.BA+225

6.有以下程序:#include<stdio.h>main(){inta;scanf("%d",&a);if(a++<9)printf("%d\n",a);clscprintf("%d\n",a--);}程序運行時從鍵盤輸入9<回車>,則輸出結果是()。A.10B.11C.9D.8

7.下面敘述正確的是______。A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結構無關

B.算法的空間復雜度是指算法程序中指令(或語句)的條數(shù)

C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

D.以上三種描述都不對

8.程序流程圖(PFD)中的箭頭代表的是

A.數(shù)據(jù)流B.控制流C.調(diào)用關系D.組成關系

9.在具有n個結點的單鏈表中,實現(xiàn)()的操作,其算法的時間復雜度是O。

A.求鏈表的第i個結點B.在地址為P的結點之后插入一個結點C.刪除表頭結點D.刪除地址為P的結點的后繼結點

10.查找較快,且插入和刪除操作也比較方便的查找方法是

A.分塊查找B.二分查找C.順序查找D.折半查找

11.

12.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}編譯時編譯器提示錯誤信息,你認為出錯的語句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;

13.以下程序的輸出結果是()。main{inta[3][3]=“l(fā),2),{3,4),{5,6)},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(”%d\n”,s);}A.18B.19C.20D.21

14.數(shù)據(jù)結構主要研究的是數(shù)據(jù)的邏輯結構、數(shù)據(jù)的運算和()。A.數(shù)據(jù)的方法B.數(shù)據(jù)的存儲結構C.數(shù)據(jù)的對象D.數(shù)據(jù)的邏輯存儲

15.下列關于標識符的說法中錯誤的是

A.合法的標識符是由字母、數(shù)字和下劃線組成

B.C語言的標識符中,大寫字母和小寫字母被認為是兩個不同的字符

C.C語言的標識符可以分為三類,即關鍵字、預定義標識符和用戶標識符

D.用戶標識符與關鍵字不同時,程序在執(zhí)行時將給出出錯信息

16.一個無向連連通圖的生成樹是含有該連通圖的全部項點的_______。

A.極小連通子圖B.極小子圖C.極大連通子圖D.極大子圖

17.目前以比較為基礎的內(nèi)部排序方法中,其比較次數(shù)與待排序的記錄的初始排列狀態(tài)無關的是()

A.插入排序B.快速排序C.二分插入排序D.冒泡排序

18.

19.若有定義:inta,b;,通過語句scanf("%d;%d",&a,&b);,能把整數(shù)3賦給變量a,5賦給變量b的輸入數(shù)據(jù)是A.A.35B.3,5C.3;5D.35

20.有以下程序:structSTU{charname[10];intnum;floatTotalScore;};voidf(structSTU*p){structSTUs[2]={{"SunDan",20044,550},{"Penghua",20045,537}},*q=s;++p;++q;*p=*q;}main(){structSTUs[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};f(s);printf("%s%d%3.0f\n",s[1].name,s[1].num,s[1].TotalScore);}程序運行后的輸出結果是______。

A.SunDan20044580

B.Penghua20045537

C.LiSiGUO20042580

D.SunDan20041703

二、2.填空題(20題)21.在運算過程中,能夠使空表與非空表的運算統(tǒng)一的結構是【】。

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

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}}

23.棧的3種基本運算是:入棧、退棧和______。

24.下面程序有兩個printf語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%x\n",p);

printf("%x\n,p+9);

}

25.設有如下程序段:

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

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

上述程序段的輸出結果是【】。

26.下列程序的運行結果是______。

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

27.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結構、數(shù)據(jù)流、______和處理過程。

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

main()

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

inti;

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

printf("\n");}

29.在兩種基本測試方法中,【】測試的原則之一是保證所測模塊中每一個獨立路徑至少要執(zhí)行一次。

30.對數(shù)組中的元素值進行排序。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[]={2,4,15,3,17,5,8,23,9,7,11,13,}i,j,k;

for(k=0;k<12;k++)

for(i=k;i<12;i++)

if(a[i]>【】)

{j=a[i];

a[i]=【】;

【】=j;}

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

printf("%4d",a[i]);

printf("\n");

}

31.表達式pow(2.8,sqrt(float(x)))值的數(shù)據(jù)類型為______型。

32.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括五個部分,即數(shù)據(jù)項、數(shù)據(jù)結構、數(shù)據(jù)流、【】和處理過程。

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

main()

{inta=0;

a+=(a=8);

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

}

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

#include<stdlib.h>

main()

{char*s1,*s2,m;

s1=s2=(char*)malloc(sizeof(char));

*s1=15;*s2=20;m=*s1+*s2;

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

}

35.若有下列定義(設int類型變量占兩個字節(jié)),則i=【】,j=【】。

inti=8,j=9;floatx=123.456;

print("i=%oj=%o\n",i,j);

36.以下程序運行后的輸出結果是()。structNODE{intk;structNODE*link;};main(){structNODEm[5],*p=m,*q=m+4;inti=0:while(p!=q){p->k=++i;p++;q->k=1++;q--;}q->k=i:for(i=0;i<5;i++)printf("%d",m[i].k);printf("\n");}

37.下列程序的輸出結果是______。

#include<stdio.h>

main()

{intx=1,y=1,a=1,b=1;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:

a++;b++;break;

}

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

}

38.下列程序段是從鍵盤輸入的字符中統(tǒng)計小寫字母的個數(shù),用換行符結束循環(huán)。請?zhí)羁铡?/p>

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

39.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計算它們酌和值。和值通過形參傳回主函數(shù)輸出。請?zhí)羁铡?/p>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{

inti,i,k,s;0;

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

{

k=0;

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

if(a[k][i]>a[j][i])

k=j;

s+=______;

}

______=s;

}

main()

{

intx[M][N]={3,2,5,1,4,1,8,3),s;

SumColumMin(______);

printf(“%d\n”,s);

}

40.對存儲器按字節(jié)進行編址,若某存儲器芯片共有8根地址線,則該存儲器芯片的存儲容量為【】字節(jié)。

三、1.選擇題(20題)41.在數(shù)據(jù)處理中,其處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)項C.數(shù)據(jù)結構D.數(shù)據(jù)元素

42.若w=l,x=2,y=3,z=4,則條件表達式w<x?w:y<z?y:z的值是

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

43.假定所有變量均已正確說明,下列程序段運行后x的值是a=d=c=0;x=35;if(!a)x=-1,elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

44.以下錯誤的定義語句是A.intx[][3]={{0},{1},{1,2,3}};

B.intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

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

45.在以下一組運算符中,優(yōu)先級最高的運算符是()

A.<=B.=C.%D.&&

46.從未排序序列中依次取出元素與已排序序列中的元素作比較,將取出的元素放入已排序序列中的正確位置上,此方法稱為______。

A.歸并排序B.選擇排序C.交換排序D.插入排序

47.若輸入1.5、2.5,則以下程序的運行結果為______。main(){floata,b;intc;scanf("%f,%f,",&a,&b);c=max(a,b);printf("%d",c);}max(x,y)floatx,y;{floatz;z=x>y?x:y;return(z);}

A.1.5B.2.5C.2D.3

48.有以下程序:#include<string.h>main(){charstr[][20]={"Hello","Beijing"}*p=str;printf("%\n",strlen(p+20));}程序運行后的輸出結果是

A.0B.5C.7D.20

49.軟件調(diào)試的目的是A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.驗證軟件的正確性

50.若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是()。

A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}

B.switch((int)x);{case1:printf("*\n");case2:printf("**\n");}

C.switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}

D.switch(a+b){case1:printf("*\n");casec:printf("**\n");}

51.閱讀下列程序,則執(zhí)行后的結果為#include"stdio.h"main(){intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}

A.3e,6B.62,5C.56,5D.3E,6

52.MIPS常用來描述計算機的運算速度,其含義是()。A.A.每秒鐘處理百萬個字符

B.每分鐘處理百萬個字符

C.每秒鐘執(zhí)行百萬條指令

D.每分鐘執(zhí)行百萬條指令

53.設char型變量x中的值為10100111,則表達式(2+x)(-3)的值為______。

A.10101001B.10101000C.11111101D.1010101

54.下列程序的輸出結果是()。#include<stdio.h>voidmain(){inta=0,b=1,C=2;if(++a>0||++b>0)++c;printf("%d,%d,%d",a,b,C);}

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

55.若有以下說明和定義:typcdefint*INTEGER;INTEGERp,*q;以下敘述正確的是()。

A.p是血型變量

B.p是基類型為int的指針變量

C.q是基類型為int的指針變量

D.程序中可用INTEGER代替int類型名

56.若有如下語句:intx=3;do{printf("%d\n",x-=2);}wbile(!(--x));則上面程序段()。

A.輸出的是1B.輸出的是1和-2C.輸出的是3和0D.是死循環(huán)

57.在C語言中,引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型允許是()

A.整型常量B.整型表達式C.整型常量或整型表達式D.任何類型的表達式

58.辦公自動化(OA)是計算機的一項應用,按計算機應用的分類,它屬于()

A.數(shù)據(jù)處理B.科學計算C.實時控制D.輔助設計

59.請讀程序:#includde<stdio.h>#include<string.>voidfun(char*s){chara[10];strcpy(a,"STRING");s=a;}main(){char*p;fun(p);print{("%s\n",p);}上面程序的輸出結果(表示空格)()

A.STRINGB.STRINGC.STRINGD.不確定的值

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

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

四、選擇題(20題)61.棧和隊列的共同點是()。

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

62.下列函數(shù)的功能是()。

A.將a所指字符串賦給b所指空間

B.使指針b指向a所指字符串

C.將a所指字符串和b所指字符串進行比較

D.檢查a和b所指字符串中是否有’\0

63.

如果進棧序列為el、e2、e3、e4,則可能的出棧序列是()。

A.e3、el、e4、e2B.e2、e4、e3、elC.e3、e4、e2D.任意順序

64.

65.若有定義語句:

66.

67.

68.設有以下程序段:

要求輸入字符串給結構體變量rec的title成員,錯誤的輸入語句是()。

A.seanf(”%s”Ptrtitle);

B.scanf(”%s”,rec.title);

C.scanf(’’%s”,(*pu).title);

D.scanf(”%s”,ptr->title);

69.下列程序執(zhí)行后的輸出結果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}

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

70.

71.

72.

73.在下列選項中,沒有構成死循環(huán)的是

74.

75.

76.

77.若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項是()。

A.a,point,*&a

B.&*a,&a,*point

C.*&point,*point,&a

D.&a,&*point,point

78.以下能正確定義賦初值的語句是()。

A.intnl=n2=10:

B.Chare=32;

C.floatf=f+1.1;

D.doublex=12.3E2.5;

79.

80.

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

main

{intx=0.5;charz=a;

printf("%d\n",(x&1)&&(z<2));}

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

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc的功能是:用選擇法對數(shù)組中的m個元素按從小到大的順序進行排序。

例如,排序前的數(shù)據(jù)為:1132-5214

則排序后的數(shù)據(jù)為:-52111432

請修改程序中的錯誤,使它能得到正確結果。

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

試題程序:

#include<stdio.h>

#defineM20

voidproc(inta[],intn)

{

inti,j,t,P;

//****found****

for(j=0;j<n-1;j++);

{

p=j;

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

if(a[[i]<a[p])

p=i;

t=a[p];

a[p]=aEj3;

//****found****

a[p]=t;

}

}

voidmain

{

intarr[M]={11,32,-5,2,14},i,m=5;

printf("排序前的數(shù)據(jù):");

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

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

printf("\n");

proc(arr,m);

printf("排序后的順序:");

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

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

printf("\n");

}

六、程序設計題(1題)82.某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù),其功能是:求出該學生的平均分,并放入記錄的ave成員中。例如,學生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應為78.875。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voldfun(STREC*a){}voidmainSTRECs={"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.D

2.A

3.A

4.B

5.A

6.A本題考查簡單的運算符操作.當輸入9時,(a++<9)為假,所以執(zhí)行else語句中的printf("%d\n",a--),在執(zhí)行時此時a經(jīng)過a++操作a=10,所以答案為A。

7.C解析:算法的執(zhí)行效率與數(shù)據(jù)的邏輯結構和存儲結構都有很緊密的關系。算法的空間復雜度是指執(zhí)行該算法需要的內(nèi)存空間,并非算法程序中指令的條數(shù)。算法一般應該具有以下4個特征:可行性、確定性、有窮性和擁有足夠情報。其中,有窮性是指算法必須能在執(zhí)行有限個步驟之后終止,否則可能失去實際意義。

8.B解析:程序流程圖(PFD)是一種傳統(tǒng)的、應用廣泛的軟件過程設計表示工具,通常也稱為程序框圖,其箭頭代表的是控制流。

9.A

10.A分塊查找是折半查找和順序查找的一種改進方法,分塊查找要求索引表是有序的,對塊內(nèi)節(jié)點沒有排序要求,因此查找較快,且插入和刪除操作也比較方便。

11.B

12.A本題考查指針,pl=&k表示P指向k的地址,則*p=k,依次類推,在對指針進行賦值時沒有錯誤。a=/*p+m賦值,在c語言中"/*"表示的注釋,所以答案選擇A。

13.A循環(huán)的作用是求行下標從1到2列下標從0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a[2][1]+a[2][2]=3+4+5+6+0=18。

14.B詳細解答:

數(shù)據(jù)結構是研究數(shù)據(jù)元素及其之間的相互關系和數(shù)據(jù)運算的一門學科,它包含3個方面的內(nèi)容,即數(shù)據(jù)的邏輯結構、存儲結構和數(shù)據(jù)的運算。

15.D解析:用戶標識符與關鍵字相同時,程序在編譯過程中將給出出錯信息。注意:選項D)應該改為用戶標識符與關鍵字相同,程序在編譯時將給出出錯信息。注意:合法的標識符第一個字符必須為字母或下劃線。

16.A

17.C

18.B

19.C解析:在C語言中scanf函數(shù)中輸入數(shù)據(jù)時要嚴格按照所規(guī)定的樣式輸入。

20.B解析:f函數(shù)用了顯式傳地址的方式,因此主函數(shù)中的s值發(fā)生了變化。

21.循環(huán)鏈表循環(huán)鏈表解析:在鏈表的運算過程中,采用鏈接方式即循環(huán)鏈表的結構把空表與非空表的運算統(tǒng)一起來。循環(huán)鏈表具有兩個特點:①在循環(huán)鏈表中增加了一個表頭結點,其數(shù)據(jù)域為任意或根據(jù)需要來設置,指針域指向線性表的第一個元素的結點。循環(huán)鏈表的頭指針指向表頭結點。②循環(huán)鏈表中最后一個結點的指針不是空,而是

溫馨提示

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

評論

0/150

提交評論