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

付費下載

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.在一個源文件中定義的全局變量的作用域為:()

A.本程序的全部范圍B.本函數(shù)的全部范圍C.從定義該變量的位置開始到本文件結(jié)束D.以上說法都不正確

2.已知有double型變量x=2.5,y=4.7,整型變量a=7,則表達(dá)式x+a%3*(int)(x+y)%2/4的值是()。

A.2.4B.2.5C.2.75D.0

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

B.1111110100011001

C.0000001011100010

D.1100000000101000

4.設(shè)有以下說明語句structnum{inta;floatb;}numl;則下面的敘述不正確的是______。

A.struct是結(jié)構(gòu)體類型的關(guān)鍵字

B.structnum是用戶定義的結(jié)構(gòu)體類型

C.numl是用戶定義的結(jié)構(gòu)體類型名

D.a和b都是結(jié)構(gòu)體成員名

5.以下是正確的C語言實型常量的是()。

A..8e+8.B.e+8C.+8e.8D.+8.8e+8

6.設(shè)S為一個長度為n的字符串,其中的字符各不相同,則S中的互異的非平凡子串(非空且不同于S本身)的個數(shù)為()。

A.2n-1B.n2C.(n2/2)+(n/2)D.(n2/2)+(n/2)-1

7.設(shè)二維數(shù)組A[1...m,1...n]按行存儲在數(shù)組B中,則二維數(shù)組元素A[i,j]在一維數(shù)組B中的下標(biāo)為()。A.A.n*(i-1)+jB.n*(i-1)+j-1C.i*(j-1)D.j*m+i-1

8.在一個C語言源程序文件中所定義的全局變量,其作用域為()。

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

9.有以下程序(函數(shù)fun只對下標(biāo)為偶數(shù)的元素進(jìn)行操作):#include<stdio.h>voidfun(int*n){inti,j,k,t;for(i=0;i<n-1;i+=2){k=i;for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;t[a[i];a[i]=a[k];a[k]=t;}}main{intaa[lO]=[1,2,3,4,5,6,7],a;fun(aa,7);for(i=0;i<7;i++)printf("%d,",aa[i]);printf("n");}程序運行后的輸出結(jié)果是()。A.7,2,5,4,3,6,1,

B.1,6,3,4,5,2,7,

C.7,6,5,4,3,2,1,

D.1,7,3,5,6,2,1,

10.設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。A.x=y+z+5.++yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.0

11.設(shè)長度為n的鏈隊列用單循環(huán)鏈表表示,若只設(shè)頭指針,則入隊操作的時間復(fù)雜度為_______。

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

12.待排序的關(guān)鍵碼序列為(33,18,9,25,67,82,53,95,12,70),要按關(guān)鍵碼值遞增的順序排序,采取以第一個關(guān)鍵碼為基準(zhǔn)元素的快速排序法,第一趟排序后關(guān)鍵碼33被放到第()個位置。

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

13.

14.第

17

若有條件表達(dá)式(exp)?a++:b--,則以下表達(dá)式中能完全等價于表達(dá)式(exp)的是

A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)

15.下列運算符中,運算對象必須是整型的是()。

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

16.

17.下列程序段的時間復(fù)雜度為()。A.O(n)B.O(log2n)C.O(n3)D.O(n2)

18.串是一種特殊的線性表,其特殊性體現(xiàn)在()。

A.可以順序存儲B.數(shù)據(jù)元素是一個字符C.可以鏈接存儲D.數(shù)據(jù)元素可以是多個字符

19.有以下程序:#include<stdio.h>#deflneS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf(“%d,”,S1(a+b));printf(“%d,”,S2(a,b)+S1(3));printf(“%d”,S2(3+a,b+3));}程序運行后的輸出結(jié)果是()。

A.18,34,100B.24,34,92C.24,34,100D.18,34,92

20.下列選項中不合法的十六進(jìn)制數(shù)是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

二、2.填空題(20題)21.設(shè)有如下程序main(){intn1,n2;scanf(“%d”,&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf(“%d”,n1);}}程序運行后,如果從鍵盤上輸入1298,則輸出結(jié)果為

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

voidfun(ints[])

{inti;

for(i=0;i<10;i++)printf("%d",s[i]);

printf("\n\n");

}

main()

{inta[3][4]={{99,2},{3,4,5},{6,7,8}};

fun(a[0]);

}

23.以下程序的輸出結(jié)果是()。#include<stdio.h>fun(){staticinta=0;a+=3;printf("%d",A);}main(){intcc;for(cc=1;cc<5;cc++)fun();printf("\n");}

24.在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接碟塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。

25.以下程序段的運行結(jié)果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}

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

charstr口="ABCD",*p=str;

printf("%d\n",*(p+3));

27.以下程序的輸出結(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);}

28.若fp已正確定義為一個文件指針,d1.dat為二進(jìn)制文件,請?zhí)羁眨员銥椤白x”而打開此文件:

fp=fopen(【】);。

29.下列程序的輸出結(jié)果是16.00,請?zhí)羁眨?/p>

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

30.源程序文檔化要求程序應(yīng)加注釋。注釋一般分為序言性注釋和【】注釋。

31.現(xiàn)有兩個C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!=′\n′)s[n++]=c;

n--;

while(n>=0)printf("%c",s[n--]);

}

當(dāng)編譯連接通過后,運行程序T18時,輸入Thank!,則輸出結(jié)果是【】。

32.定義inta=5,b;,則執(zhí)行表達(dá)式b=++a*--a之后,變量b的值為【】。

33.設(shè)有以下結(jié)構(gòu)體類型:

structst

{charname[8];

intnum;

floats[4];

}student[50];

并且結(jié)構(gòu)體數(shù)組student中的元素都已有值。若要將這些元素寫到硬盤文件fp中,請將以下fwrite語句補(bǔ)充完整:

fwrite(student,【】,1,fp);

34.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

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

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

36.設(shè)某循環(huán)隊列的容量為50,頭指針front=5(指向隊頭元素的前一位置),尾指針rear=29(指向隊尾元素),則該循環(huán)隊列中共有【】個元素。

37.下面程序的功能:輸出100以內(nèi)能被3整除且個位數(shù)為6的所有整數(shù),請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti,j;

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

{j=i*10+6;

if(【】)continue;

printf("%d",j);

}

}

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

main()

{

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

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

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

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

}

39.下面的函數(shù)strcat(str1,str2)實現(xiàn)將字符串str2拼接到字符串str1后面的功能。請?zhí)羁帐怪暾?/p>

char*strcat(str1,str2)

char*str1,*str2;

{char*t=str1;

while(【】)str1++;

while(【】);

return(t);}

40.常用的黑箱測試有等價類劃分法、【】和錯誤推測法3種。

三、1.選擇題(20題)41.對長度為n的線性表進(jìn)行順序查找,在最壞情況下需要比較的次數(shù)為()。

A.125B.n/2C.nD.n+1

42.算法一般都可以用______控制結(jié)構(gòu)組合而成。

A.循環(huán)、分支、遞歸B.順序、循環(huán)、嵌套C.循環(huán)、遞歸、選擇D.順序、選擇、循環(huán)

43.下列程序的輸出結(jié)果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}

A.2500B.2050C.4D.0

44.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。

A.334HB.30DHC.352HD.31AH

45.下面程序的輸出結(jié)果是()。typedefunion{longx[1];inty[4];charz[10];}M;Mt;main(){printf("%d\n",sizeof(t));}

A.32B.26C.10D.4

46.以下程序片段的輸出結(jié)果是______。charstr[]="abc\n\012\\\"";printf("%d",strlen(str));

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

47.下列描述中正確的是()。

A.在C語言程序中預(yù)處理是指完成宏替換和文件包含指定的文件的調(diào)用

B.預(yù)處理指令只能位于C源程序文件的首部

C.預(yù)處理命令可以放在程序中的任何位置

D.預(yù)處理命令結(jié)尾需要加分號

48.冒泡排序在最壞情況下的比較次數(shù)是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

49.以下程序的輸出結(jié)果是()longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%d\n",fun(3));}

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

50.若有以下定義:chars[20]="programming",*ps=s;則不能代表字符。的表達(dá)式是()

A.ps+2B.s[2]C.ps[2]D.ps+=2,*ps

51.下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖?)。

A.多態(tài)性B.繼承C.封裝性D.模塊化

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

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

A.用C語言實現(xiàn)的算法必須要有輸入和輸出操作

B.用C語言實現(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C語言程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C語言程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

54.設(shè)整型數(shù)i=5,則printf("%d",i+++++i);的輸出為______。

A.10B.11C.12D.語法錯誤

55.按照“先進(jìn)先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

56.設(shè)x=2.5、a=7、y=4.7,算術(shù)表達(dá)式x+a%3*(int)(x+y)%2/4的值為______。

A.2.5B.7C.4.7D.2.75

57.關(guān)系代數(shù)運算是以______為基礎(chǔ)的運算。

A.關(guān)系運算B.謂詞運算C.集合運算D.代數(shù)運算

58.下列選項可以正確表示字符型常量的是

A.'\r'B.aC.\897D.296

59.以下敘述中不正確的是

A.預(yù)處理命令行都必須以#號開始

B.在程序中凡是以#號開始的語句行都是預(yù)處理命令行

C.宏替換不占用運行時間,只占編譯時間

D.在以下定義是正確的:#definePI3.1415926;

60.下列程序的輸出結(jié)果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j==3‖k++==3))printf("%d%d%d\n",i,j,k);}

A.123B.234C.223D.233

四、選擇題(20題)61.

62.

63.以下函數(shù)按每行8個輸出數(shù)組中的數(shù)據(jù):

下劃線處應(yīng)填入的語句是()。

A.

B.

C.

D.

64.有以下程序:

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

A.4B.10C.14D.6

65.(3)在一棵二叉樹上第5層的結(jié)點數(shù)最多是______。

A.8

B.16

C.32

D.15

66.下面關(guān)于完全二叉樹的敘述中,錯誤的是______。A.A.除了最后一層外,每一層上的結(jié)點數(shù)均達(dá)到最大值

B.可能缺少若干個左右葉子結(jié)點

C.完全二叉樹一般不是滿二叉樹

D.具有結(jié)點的完全二叉樹的深度為[log2n]+1

67.若有如下說明和定義

structtest

{intml;charm2;floatm3;

unionuu{charul[5];intu2[2];}ua;

}myaa;

則sizeof(structtest)的值是

A.12B.16

C.14D.9

68.

69.

70.一名工作人員可以使用多臺計算機(jī),而一臺計算機(jī)可被多名工作人員使用,則實體工作人員與實體計算機(jī)之間的聯(lián)系是()。

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

71.有如下程序段

int*p,a=10,b=1;

p=&a;a=*p+b;

執(zhí)行該程序段后,a的值為

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

72.下列選項中,能夠滿足“若字符串sl等于字符串s2,則執(zhí)行ST”要求的是()。

A.if(stremp(s2,s1)==0)ST;

B.if(s1==s2)ST;

C.if(strcpy(sl,s2)==l)ST;

D.if(sl,s2==O)ST;

73.

設(shè)有定義的語句:“charc1=92,c2=92;”,則以下表達(dá)式中的值為零的是()。

A.c1^c2B.c1&c2C.~c2D.c1E.c2

74.用鏈表表示線性表的優(yōu)點是()。

A.便于隨機(jī)存取B.花費的存儲空間較順序存儲少C.便于捅入和刪除操作D.數(shù)據(jù)元素的物理順序與邏輯順序相同

75.有以下程序

fun(int*a,intn)

{inti,j=0,p;

p=j;

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

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

____;

return(p);

}

在下畫線處應(yīng)填入的是

A.i=pB.a(chǎn)[p]=a[i]

C.p=jD.p=i

76.若有定義語句:

77.設(shè)變量X和y均已正確定義并賦值。以下if語句中,在編譯時將產(chǎn)生錯誤信息的是()。A.if(x++);

B.if(x>y&&y!=0);

C.if(x>y)x--elsey++;

D.if(y<0){;}elsex++;

78.有以下程序:

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

A.12

B.15

C.16

D.20

79.有以下程序:

從第一列開始輸入以下數(shù)據(jù)(<CR>代表一個回車符.:

2743<CR>

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

A.66877B.668966C.6677877D.6688766

80.若intk=8;,則執(zhí)行下列程序后,變量k的正確結(jié)果是

main()

{intk=8;

switch(k)

{case8:k+=1;

case10:k+=1;

case11:k+=1;break;

default:k+=1;

}

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

}

A.12B.11

C.10D.9

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:計算并輸出k以內(nèi)最大的10個能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳人,若k的值為600,則函數(shù)的值為5671。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素數(shù)存人XX所指數(shù)組中,非素數(shù)的個數(shù)通過k返回。

例如,若輸入17,則應(yīng)輸出:46891012141516。注意:部分源程序在文件PROGl.C中。

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

參考答案

1.C

2.B

3.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。

4.C

5.DC語言中,實型常量有兩種表示形式:小數(shù)形式和指數(shù)形式。其中指數(shù)形式的一般形式為:尾數(shù)E(或e)整型指數(shù)。C語言規(guī)定,字母E或e之前必須要有數(shù)字,且E或e后面的指數(shù)必須是整數(shù),所以選項A、B、C錯誤,選項D正確。故本題答案為D選項。

6.D

7.A

8.D

\n全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結(jié)束止。當(dāng)全局變量定義在后,引用它的函數(shù)在前時,應(yīng)該在引用它的函數(shù)中用extern對此全局變量進(jìn)行說明,以便通知編譯程序該變量是一個已在外部定義了的全局變量,這時全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾。

\n

9.A對下標(biāo)為偶數(shù)的元素進(jìn)行降序排序,下標(biāo)為奇數(shù)元素保持不變。

10.A[解析]B)與D)選項中取模運算符%的左右兩個操作數(shù)均應(yīng)為整數(shù),所以B)、D)錯誤。C)選項中不能將x+z的值賦給表達(dá)式y(tǒng)*5.所以C)錯誤。

11.C

12.BB.【解析】快速排序的基本思想是:從表中選取一個元素(如本題中的33),將表中小于此元素的移到前面,大于此元素的移到后面,結(jié)果把線性表分割成兩部分(兩個子表),此元素插入到其分界線的位置處。然后分別對兩個子表再次分割……本題中33作為分割的中界線,第一趟排序后排在比它小的18、9、25、12后面。

13.C

14.B解析:條件運算符要求有3個操作對象,稱三目(元)運算符,它是C語言中惟一的一個三目運算符。條件表達(dá)式的一般形式為:表達(dá)式17表達(dá)式2:表達(dá)式3其求解順序是:先求解表達(dá)式1,若為非O(真)則求解表達(dá)式2,此時表達(dá)式2的值就作為整個條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個條件表達(dá)式的值。并且注意++、--的用法。

15.B

16.C

17.A

18.B

19.D程序中S1和S2都是宏定義。S1(a+b)宏展開后的表達(dá)式為4*a+b+4*(a+b),即4*1+2+4*(1+2),結(jié)果為18;S2(a,b)宏展開后的表達(dá)式為4*(a)*(b)+b*a,即4*(1)*(2)+2*1,結(jié)果為10;S1(3)宏展開后的表達(dá)式為4*3+4*(3),結(jié)果為24;32(3+a,b+3)宏展開后的表達(dá)式為4*(3+a)*(b+3)+b+3*3+a,即4*(3+1)*(2+3)+2+3*3+1,結(jié)果為92。最終輸出:18,34,92。故本題答案為D選項。

20.C十六進(jìn)制是以“0x、0X”開頭的字符串,字符串中只能含有0~9這l0個數(shù)字和a、b、C、d、e、f這6個字母。

21.89218921

22.9920O345067

23.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所做的改變都要保存。

24.程序設(shè)計的任務(wù)是診斷和改正程序中的錯誤。程序調(diào)試活動由兩部分組成,其一是根據(jù)錯誤的跡象確定程序中錯誤的確切性、原因和位置;其二是對程序進(jìn)行修改,排除這個錯誤。\r\n\r\n

25.x=2

26.6868解析:本題考查如何用指針引用數(shù)組元素。本題先定義了一個指向字符型數(shù)組str的指針p,指針p指向數(shù)組str的首地址,p+3將指針指向str[3],*(p+3)指的是字符“D”,輸出時是以“%d,格式輸出的,即輸出其相應(yīng)ASCII碼值68。

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

28.d1.dat"rb"d1.dat,'rb'解析:打開文件的函數(shù)為fopen('文件名','mode'),其中'mode'表示文件的打開方式。如果打開的是二進(jìn)制文件,其mode字符串可以是:'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只讀方式打開。'w'表示以寫方式打開,如果已存在該文件名的文件,文件中的內(nèi)容將被清空。若文件名不存在,則將創(chuàng)建該文件。'a'為追加方式打開。若文件存在時,將打開這個文件并且在文件的末尾進(jìn)行追加。當(dāng)文件不存在,將創(chuàng)建新文件。'r+'打開一個已存在文件用于更新(可讀可寫)。\'w+'創(chuàng)建一個新文件用于更新,如果文件存在,文件被重寫(可讀可寫)。'a+'打開用于追加,當(dāng)文件不存在時,創(chuàng)建新文件,并在文件末尾進(jìn)行追加(可讀可寫)。根據(jù)題意,應(yīng)該填'd1.dat','rb'。

解析:本題,已知結(jié)果z=16.00,即16.0=a/2+b*x/y+1/2,分別把a(bǔ)、b,代入,得到16.0=9/2+2*x/1.1+1/2。因為a=9,a是整型,所以9/2的值在沒有進(jìn)行類型轉(zhuǎn)換時,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。

30.功能性功能性

31.!knahT!knahT解析:此程序是一道次序顛倒題,即輸入'Thank!',則輸出'!knahT'。

32.2525解析:#NAME?

33.sizeof(structst)*50sizeof(structst)*50解析:fwrite函數(shù)的一般調(diào)用形式為:fwrite(buffer,size,count,fp);其中:buffer是一個指針變量,是要輸出數(shù)據(jù)的起始地址;size是要寫的字節(jié)數(shù);count是要寫多少個size字節(jié)的數(shù)據(jù)項;fp是文件指針。

34.101,0解析:與運算兩邊的語句必須同時為真時,結(jié)果才為真,當(dāng)執(zhí)行完if((++a<0)&&!(b--<=0))時,a,b的值已經(jīng)發(fā)生了變化。

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

36.2424解析:在循環(huán)隊列中因為頭指針指向的是隊頭元素的前一個位置,所以是從第6個位置開始有數(shù)據(jù)元素,所以隊列中的數(shù)據(jù)元素的個數(shù)為29-5=24。

37.j%3!=0或j%3j%3!=0或j%3解析:題目要求輸出100以內(nèi)能被3整除且個位數(shù)為6的所有整數(shù),且通過for循環(huán)實現(xiàn),循環(huán)體內(nèi)j=i*10+6;這也就滿足了個位數(shù)為6的條件,所以第1個空格填入i<10或i<=9;if語句中的continue說明如果條件不成立則不輸出j,所以第2空填j%3!=0或j%3。

38.66解析:條件運算符的優(yōu)選級高于賦值運算符,因此本題先計算關(guān)系表達(dá)式(*ptr+y)<x)*(ptr+y):x的值,再賦給變量z。當(dāng)y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=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。

39.*str1或*str1!='\0'或*str1!=0或*str1!=NUL*str1++=*str2++或*str1++=*str2*str2++*str1或*str1!='\\0'或*str1!=0或*str1!=NUL\r\n*str1++=*str2++或*str1++=*str2,*str2++解析:函數(shù)strcat(str1,str2)實現(xiàn)將字符串str2連接到字符串str1后面,所以首先要找到字符串str1的串尾,根據(jù)C語言的語法規(guī)定,一個串的串尾—定是—個隱含字符“\\0”,而在程序中,對字符串中字符的訪問是通過兩個指針變量來完成的,因此要找到字符串str1的串尾,要判斷:str1是否為“\\0”,要找到字符串str2的串尾,要判斷*str2是否為“\\0”,程序中必須以使字符串中字符逐—順序體現(xiàn),所以在題中我們應(yīng)填寫“*str1”和“*str1++=*str2++”。

40.邊界值分析法邊界值分析法解析:黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例。常用的黑箱測試有等價類劃分、邊界值分析法和錯誤推測法3種。

41.CC?!窘馕觥繉€性表進(jìn)行順序查找時,從表中的第一個元素開始,將給定的值與表中逐個元素的關(guān)鍵字進(jìn)行比較,直到兩者相符,查找到所要找的元素為止。在最壞情況下,要查找的元素是表的最后一個元素或查找失敗,這兩種情況都需要將這個元素與表中的所有元素進(jìn)行比較,因此比較次數(shù)為n。

42.D解析:算法的控制結(jié)構(gòu)給出了算法的基本框架,不僅決定了算法中各操作的執(zhí)行順序,也直接反映了算法的設(shè)計是否符合結(jié)構(gòu)化原則。一個算法一般都可以用順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)組合而成。

43.A解析:本題程序的功能是求1到99之間(包括1和99)所有奇數(shù)之和。程序中的while循環(huán)的終止條件為++i=100,在while循環(huán)體內(nèi),如果i是偶數(shù),則執(zhí)行continue,跳過這一次循環(huán),執(zhí)行下—次循環(huán),否則求和和。最后輸出的值是1到99之間(包括1和99)所有奇數(shù)之和(1+99)*50/2=2500。

44.C解析:解答本題,首先要明白在對指針進(jìn)行加、減運算的時候,數(shù)字“1”不是十進(jìn)制的數(shù)“1”,而是指'1'個存儲單元長度,而1個存儲單元長度占多少存儲空間,應(yīng)該視具體情況而定。如果基本類型是int型,移動1個存儲單元的長度就是位移2個字節(jié),如果基本類型是float型,移動1個存儲單元的長度就是位移4個字節(jié)。所以p+13所指向的數(shù)組元素的地址:300H+(13*上標(biāo))4)H=352H。

45.C解析:“聯(lián)合體”所占用的內(nèi)存空間為最長的成員所占用的空間。題中聯(lián)合體的z[10]成員聯(lián)合體中占空間最長的成員。

46.D解析:abc后的四個字符都是由反斜線引出的轉(zhuǎn)義字符,\\n是換行符,\\012也是換行符,\\\\表示反斜線本身,\\'表示雙引號,因此,一共是7個字符。

47.C解析:本題考查預(yù)處理命令的特點,編譯預(yù)處理命令的特點:①為了區(qū)別一般的語句,預(yù)處理命令行都必須以“#”號開始,結(jié)尾不加分號;②預(yù)處理命令可以放在程序中的任何位置;③在程序中凡是以“#”號開始的語句行都是預(yù)處理命令行。

48.C冒泡排序的基本思想是:將相鄰的兩個元素進(jìn)行比較,如果反序,則交換;對于一個待排序的序列,經(jīng)一趟排序后,最大值的元素移動到最后的位置,其他值較大的元素也向最終位置移動,此過程稱為一趟冒泡。對于有n個數(shù)據(jù)的序列,共需n-1趟排序,第i趟對從l到n-i個數(shù)據(jù)進(jìn)行比較、交換。冒泡排序的最壞情況是待排序序列逆序,第l趟比較n-1次,第2趟比較n-2次。依此類推,最后趟比較1次,一共進(jìn)行n-l趟排序。因此,冒泡排序在最壞情況下的比較次數(shù)是(n-1)+(n-2)+…+l,結(jié)果為n(n-1)/2。本題的正確答案是選項C。

49.A

50.A

51.DD?!窘馕觥棵嫦?qū)ο笤O(shè)計方法與面向過程設(shè)計方法有本質(zhì)的不同,其基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。其特點包括:分類性、多態(tài)性、封裝性、模塊獨立性、繼承和多態(tài)性等。模塊化是結(jié)構(gòu)化程序設(shè)計的特點。

52.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次。因此,本題的正確答案為選項B。

53.C解析:一個算法應(yīng)該具有以下5個特性:有窮性、確定性、可行性、有零個或多個輸入、有一個或多個輸出。因此一個算法可以沒有輸入(程序的功能確定),但必須要有輸出,沒有輸出的算法是沒有意義的。

54.D解析:C語言中有基本的算術(shù)運算符(+、-、*、/)還包括自增自減運算符(++、-),在C語言解析表達(dá)式時,它總是進(jìn)行貪婪咀嚼,這佯,該表達(dá)式就被解析為i+++++i,顯然該表達(dá)式不合C語言語法。

55.A隊列是一種特殊的線性表,只允許在表的一端插八元素,在表的另一端刪除元素,插入元素的一端叫“隊尾”,刪除元素的一端叫“隊頭”。先插入的元素先被刪除,是按“先進(jìn)先出”的原則組織數(shù)據(jù)的。

【知識拓展】“隊列”和“?!倍际且环N特殊的線性表。之所以稱之為“隊列”,其形式如“排隊”。要講究“先來后到”,先進(jìn)先出,后進(jìn)后出。

56.A解析:取模運算只能在整型數(shù)據(jù)之間進(jìn)行,a為整型變量。因為%、*、/這三個運算符的優(yōu)先級別相同,而類型轉(zhuǎn)換符優(yōu)先于*和/運算符。a的值為7,7%3=1,所以(int)(2.5+4.7)=7,1*7=7,7%2=1,1/4=0,所以表達(dá)式x+a%3*(int)(x+y)%2/4=x+0=2.5。

57.C解析:關(guān)系代數(shù)是以集合代數(shù)為基礎(chǔ)女發(fā)展起來的,它是以關(guān)系代數(shù)作為運算對象的一組高級運算的集合。它的基本操作是并、交、差、笛卡爾積,另外還包括針對數(shù)據(jù)庫環(huán)境專門設(shè)計的操作,包括對關(guān)系進(jìn)行垂直分割(投影)、水平分割(選擇)、關(guān)系的結(jié)合(連接)等。

58.A解析:C語言中,一個字符常量代表ASCII字符集中的一個字符,在程序中用單引號括起來作為字符常量,字符常量的范圍是0~127。由于字符常量用單引號括起來,所以選項B),C)錯誤,選項D)超過了字符常量的表示范圍。

59.D解析:帶參數(shù)的宏定義如下:#define宏名(參數(shù))字符串。本題中,宏定義的作用是指定用標(biāo)識符PI來代替“3.1415926”這個字符串,但宏定義不是C語句,不必在行末加分號。

60.D解析:本題考查自增運算符“++”、邏輯與運算符“&&”和邏輯或運算符“‖”。自增運算符“++”,出現(xiàn)在變量之前(如題中的中++n),表示先使變量的值加1,再使用變量的值進(jìn)行運算:出現(xiàn)在變量之后(如題中的n++),表示先使用變量的值進(jìn)行運算,再使變量的值加1。當(dāng)邏輯與運算符“&&”兩邊的運算對象都為真時,邏輯表達(dá)式的值才為真;當(dāng)邏輯或運算符“‖”左邊的運算對象為真時,其值就為真,不用計算其右邊的運算對象的值.所以根據(jù)運算符的優(yōu)先級,題中應(yīng)先計算內(nèi)層括號中的值。++j是先自加后運算,因此運算時j的值等于3,所以表達(dá)式++j=3成立,即表達(dá)式的值為1;由于1與任何數(shù)都為進(jìn)行或(‖)運算,結(jié)果都為1,因此k=3;最后計算“&&”之前的表達(dá)式,i++是先運算后自加,因此運算時i為1,所以i++=1成立,自加1后i=2。if語句的條件為真即“1”,所以輸出i、j、k的值分別是2,3,3。

61.B

62.B

63.C在c語言循環(huán)語句中continue用來跳出當(dāng)次循環(huán),因此B)項和D)項不正確。if(i/8==0)是指當(dāng)i除以8的商等于0,即i的值小于8時,打印換行,因此A)項不正確。if(i%8==0)是指當(dāng)i除以8的余數(shù)等于0,即當(dāng)間隔8個數(shù)時,打印換行,因此選項c)正確。

64.B函數(shù)的功能是求數(shù)組所有元素的和。遞歸表示為a[3]+a[2]+a[1]+a[0]+f(t,0)=10。

65.B根據(jù)二叉樹的性質(zhì),在二叉樹的第K層上,最多有2k-1個結(jié)點。所以,第五層的結(jié)點數(shù)最多為16。

66.B解析:這里考察完全二叉樹與滿二叉樹的定義及二叉樹的性質(zhì)。滿二叉樹指除最后一層外每一層上所有結(jié)點都有兩個子結(jié)點的二叉樹。完全二叉樹指除最后一層外,每一層上的結(jié)點數(shù)均達(dá)到最大值,在最后一層上只缺少右邊的若干子結(jié)點(葉子結(jié)點)的二叉樹。因此選項A是正確的,而選項B是錯誤的。由定義可知,滿二叉樹肯定是完全二叉樹,而完全二叉樹一般不是滿二叉樹,因此選項C是正確的敘述。選項D即二叉樹性質(zhì)(5),也是正確的。

67.A在本題中,首先定義了一個結(jié)構(gòu)體。在該結(jié)構(gòu)體中,定義了一個整型變量成員、一個字符型變量成員和一個浮點型變量成員,并在結(jié)構(gòu)體中定義了一個聯(lián)合體變量成員,聯(lián)合體變量成員中又包含兩個聯(lián)合體成員數(shù)組。題目最后要求計算該結(jié)構(gòu)體變量所占的存儲空間。

在C語言中,聯(lián)合體變量中的所有成員共享存儲空間,聯(lián)合變量的長度等于各成員中最長的長度,因此,本題的聯(lián)合體部分所占的長度為5,但是結(jié)構(gòu)體與聯(lián)合體不一樣的是,結(jié)構(gòu)體不能共享空間,一個結(jié)構(gòu)體變量的總長度是各成員長度之和,因此,該結(jié)構(gòu)體所需的存儲空間為5+1+2+4=12。本題的正確答案選A。

68.C

69.C

70.c因為一名工作人員可以操作多臺計算機(jī),而一臺計算機(jī)又可以被多名工作人員使用,所以兩個實體之間是多對多的關(guān)系,選擇c)。

71.Cp=&a表達(dá)式的含義是將變量a的地址賦給指針變量p;a=*p+b表達(dá)式的含義是將指針變量p所存地址對應(yīng)的值與b的和賦給a。

72.Astrcmp(char*,char*),函數(shù)strcmp用于比較兩個字符串的長度,長者為大,若字符個數(shù)也一樣,則從左至右依次比較相同位上的字符,字符大小按ASCIl表值計算,直到最后一個字符,若還相同,則兩個字符串相等,返回值0。選項A中if(strcmp(s2,sl)==0)ST,若s2等于sl,則返回值0,0等于0,所以邏輯表達(dá)式strcmp(s2,sl)==0為真,執(zhí)行ST。

73.A

\n當(dāng)值相同時按位異或,則為0,按位或與按位與時仍不變,負(fù)數(shù)也為非0。

\n

74.C數(shù)據(jù)的存儲結(jié)構(gòu)有順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)兩種。不同存儲結(jié)構(gòu)的數(shù)據(jù)處理效率不同。由于鏈表采用鏈?zhǔn)酱鎯Y(jié)構(gòu),元素的物理順序并不連續(xù),對于插入和刪除無需移動元素,很方便,當(dāng)查找元素時就需要逐.個元素查找,因此查找的時間相對更長。

75.D本題考查對程序作用的理解。該函數(shù)具有兩個形參a和n,a為數(shù)組名,n為數(shù)組中元素的個數(shù)。函數(shù)的返回值為p,這里p為數(shù)組的下標(biāo)。初始時,i、j、p都為0,for循環(huán)的初始表達(dá)式為i=j,條件表達(dá)式為i<n,也就是當(dāng)i=n時,for循環(huán)結(jié)束。該for循環(huán)表達(dá)的含義為:初始時,令a[i]=a[p]=a[0],隨后i可從0開始遞增,直到n-1,對于每一個a[i],都與a[p]進(jìn)行比較,空白處需要填入語句的部分是if語句滿足條件后要進(jìn)行的操作,表示如果a[i]<a[p],應(yīng)當(dāng)進(jìn)行怎樣的處理。選項A是令i=p,此時整個程序中p的值沒有發(fā)生改變,p=0,即如果a[i]<a[p],則令i=0,回到了初始化的狀態(tài),這樣在for語句中造成了死循環(huán),該選項錯誤。選項B是令a[p]=a[i],整個程序在運行過程中,p的值依然沒有變化,p=0,即如果a[i]<a[0],則令a[0]=a[i],整個程序運行結(jié)束后,a[0]的數(shù)值應(yīng)該為整個數(shù)組的最小值,用return語句返回下標(biāo)0沒有意義。選項C是令p=j,程序在運行過程中,j的值和p的值都沒有發(fā)生改變,整個程序沒有意義。選項D是p=i,該語句的含義是如果a[i]<a[p],則令p=i,程序結(jié)束后則有a[p]為數(shù)組中的最小值,將最小值的下標(biāo)返回。

76.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)符合題意。

77.C本題考查的是if語句。if是c語言關(guān)鍵字,表達(dá)式兩側(cè)的圓括號不可少,最后是一條語句或是用花括號括起來的一組語句。選項A)和B)是在表達(dá)式后跟了一條空語句,選項D)是在表達(dá)式后跟了一組空語句,選項C)中x一一是表達(dá)式而不是語句,所以在編譯時會出現(xiàn)錯誤信息,在X一一后面加上”;”號就對了。

78.A本題的考查點是帶參數(shù)的宏定義。本題的程序中就定義了一個帶參數(shù)的宏,對F(a++,b++)進(jìn)行展開后,宏的返回值為12,注意a++,b++都是先使用變量值,再自增。

79.A本題主要考查了字符輸入輸出函數(shù)get—char和putchar的使用。getchar函數(shù)用來從標(biāo)準(zhǔn)輸入設(shè)備上讀人一個字符,putchar(C)函數(shù)是將字符變量c中的字符輸出到標(biāo)準(zhǔn)輸出設(shè)備上,并且字符可以看作整數(shù)參與運算。

80.B在本題中,程序的作用是通過switch語句改變已經(jīng)被賦初值的變量k的值。程序中首先將變量k賦初值為8,然后使用switch選擇結(jié)構(gòu)。由于k的值為8,在switch結(jié)構(gòu)中找到與之對應(yīng)的塊case8執(zhí)行,完成一次k加1的操作,此時變量k的值變?yōu)?,由于沒有break語句,程序接著往下執(zhí)行,執(zhí)行case10程序塊,再完成一次k加1的操作,此時k的值為10,又由于沒有break語句,程序接著往下執(zhí)行,執(zhí)行case11,再完成一次k加1的操作,此時k的值為11,程序碰到break語句,跳出switch結(jié)構(gòu)。然后執(zhí)行輸出語句,輸出的結(jié)果為11。

81.(1)錯誤:if((k%13=0)||(k%17=0))

正確:if((k%13==0)||(k%17==0))

(2)錯誤:缺少大括號

正確:在“k-=;”后加}

【解析】題目中要求能被13或17整除的自然數(shù),判斷整除條件是取余恒等于0,判斷相等的符號應(yīng)該用“==”,符號“=”是賦值符號,因此“=”應(yīng)改為“==”;在C語言中,括號一定是成對出現(xiàn)的,因此,在語句“k——;”后要加上符號“}”。

82.

【考點分析】

本題考查:如何判斷非素數(shù);循環(huán)判斷結(jié)構(gòu);數(shù)組的引用。

【解題思路】

題目要求將l—m之問的非素數(shù)存人數(shù)組中,應(yīng)使用循環(huán)判斷結(jié)構(gòu)。循環(huán)語句用來遍歷1一m之間的每個數(shù),判斷語句用來判斷該數(shù)是否為素數(shù),若不是素數(shù),則將其存人數(shù)組中。這道題目是考查—個數(shù)是否為素數(shù)的簡單延伸,只要掌握了判斷素數(shù)的方法,問題便能順利解決。

【解題寶典】

判定一個數(shù)是否為素數(shù),即該數(shù)除了能被l和它本身外,不能被任何數(shù)整除。

代碼實現(xiàn)為:

for(j=2;j<i;j++)if(i%j==0)/*如余數(shù)為0,證明i不是素數(shù)·/

此語句需要熟記,很多判斷素數(shù)的題目也可通過此法解決。2022-2023年河北省衡水市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.在一個源文件中定義的全局變量的作用域為:()

A.本程序的全部范圍B.本函數(shù)的全部范圍C.從定義該變量的位置開始到本文件結(jié)束D.以上說法都不正確

2.已知有double型變量x=2.5,y=4.7,整型變量a=7,則表達(dá)式x+a%3*(int)(x+y)%2/4的值是()。

A.2.4B.2.5C.2.75D.0

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

B.1111110100011001

C.0000001011100010

D.1100000000101000

4.設(shè)有以下說明語句structnum{inta;floatb;}numl;則下面的敘述不正確的是______。

A.struct是結(jié)構(gòu)體類型的關(guān)鍵字

B.structnum是用戶定義的結(jié)構(gòu)體類型

C.numl是用戶定義的結(jié)構(gòu)體類型名

D.a和b都是結(jié)構(gòu)體成員名

5.以下是正確的C語言實型常量的是()。

A..8e+8.B.e+8C.+8e.8D.+8.8e+8

6.設(shè)S為一個長度為n的字符串,其中的字符各不相同,則S中的互異的非平凡子串(非空且不同于S本身)的個數(shù)為()。

A.2n-1B.n2C.(n2/2)+(n/2)D.(n2/2)+(n/2)-1

7.設(shè)二維數(shù)組A[1...m,1...n]按行存儲在數(shù)組B中,則二維數(shù)組元素A[i,j]在一維數(shù)組B中的下標(biāo)為()。A.A.n*(i-1)+jB.n*(i-1)+j-1C.i*(j-1)D.j*m+i-1

8.在一個C語言源程序文件中所定義的全局變量,其作用域為()。

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

9.有以下程序(函數(shù)fun只對下標(biāo)為偶數(shù)的元素進(jìn)行操作):#include<stdio.h>voidfun(int*n){inti,j,k,t;for(i=0;i<n-1;i+=2){k=i;for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;t[a[i];a[i]=a[k];a[k]=t;}}main{intaa[lO]=[1,2,3,4,5,6,7],a;fun(aa,7);for(i=0;i<7;i++)printf("%d,",aa[i]);printf("n");}程序運行后的輸出結(jié)果是()。A.7,2,5,4,3,6,1,

B.1,6,3,4,5,2,7,

C.7,6,5,4,3,2,1,

D.1,7,3,5,6,2,1,

10.設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。A.x=y+z+5.++yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.0

11.設(shè)長度為n的鏈隊列用單循環(huán)鏈表表示,若只設(shè)頭指針,則入隊操作的時間復(fù)雜度為_______。

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

12.待排序的關(guān)鍵碼序列為(33,18,9,25,67,82,53,95,12,70),要按關(guān)鍵碼值遞增的順序排序,采取以第一個關(guān)鍵碼為基準(zhǔn)元素的快速排序法,第一趟排序后關(guān)鍵碼33被放到第()個位置。

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

13.

14.第

17

若有條件表達(dá)式(exp)?a++:b--,則以下表達(dá)式中能完全等價于表達(dá)式(exp)的是

A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)

15.下列運算符中,運算對象必須是整型的是()。

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

16.

17.下列程序段的時間復(fù)雜度為()。A.O(n)B.O(log2n)C.O(n3)D.O(n2)

18.串是一種特殊的線性表,其特殊性體現(xiàn)在()。

A.可以順序存儲B.數(shù)據(jù)元素是一個字符C.可以鏈接存儲D.數(shù)據(jù)元素可以是多個字符

19.有以下程序:#include<stdio.h>#deflneS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf(“%d,”,S1(a+b));printf(“%d,”,S2(a,b)+S1(3));printf(“%d”,S2(3+a,b+3));}程序運行后的輸出結(jié)果是()。

A.18,34,100B.24,34,92C.24,34,100D.18,34,92

20.下列選項中不合法的十六進(jìn)制數(shù)是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

二、2.填空題(20題)21.設(shè)有如下程序main(){intn1,n2;scanf(“%d”,&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf(“%d”,n1);}}程序運行后,如果從鍵盤上輸入1298,則輸出結(jié)果為

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

voidfun(ints[])

{inti;

for(i=0;i<10;i++)printf("%d",s[i]);

printf("\n\n");

}

main()

{inta[3][4]={{99,2},{3,4,5},{6,7,8}};

fun(a[0]);

}

23.以下程序的輸出結(jié)果是()。#include<stdio.h>fun(){staticinta=0;a+=3;printf("%d",A);}main(){intcc;for(cc=1;cc<5;cc++)fun();printf("\n");}

24.在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接碟塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。

25.以下程序段的運行結(jié)果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}

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

charstr口="ABCD",*p=str;

printf("%d\n",*(p+3));

27.以下程序的輸出結(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);}

28.若fp已正確定義為一個文件指針,d1.dat為二進(jìn)制文件,請?zhí)羁?,以便為“讀”而打開此文件:

fp=fopen(【】);。

29.下列程序的輸出結(jié)果是16.00,請?zhí)羁眨?/p>

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

30.源程序文檔化要求程序應(yīng)加注釋。注釋一般分為序言性注釋和【】注釋。

31.現(xiàn)有兩個C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!=′\n′)s[n++]=c;

n--;

while(n>=0)printf("%c",s[n--]);

}

當(dāng)編譯連接通過后,運行程序T18時,輸入Thank!,則輸出結(jié)果是【】。

32.定義inta=5,b;,則執(zhí)行表達(dá)式b=++a*--a之后,變量b的值為【】。

33.設(shè)有以下結(jié)構(gòu)體類型:

structst

{charname[8];

intnum;

floats[4];

}student[50];

并且結(jié)構(gòu)體數(shù)組student中的元素都已有值。若要將這些元素寫到硬盤文件fp中,請將以下fwrite語句補(bǔ)充完整:

fwrite(student,【】,1,fp);

34.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

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

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

36.設(shè)某循環(huán)隊列的容量為50,頭指針front=5(指向隊頭元素的前一位置),尾指針rear=29(指向隊尾元素),則該循環(huán)隊列中共有【】個元素。

37.下面程序的功能:輸出100以內(nèi)能被3整除且個位數(shù)為6的所有整數(shù),請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti,j;

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

{j=i*10+6;

if(【】)continue;

printf("%d",j);

}

}

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

main()

{

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

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

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

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

}

39.下面的函數(shù)strcat(str1,str2)實現(xiàn)將字符串str2拼接到字符串str1后面的功能。請?zhí)羁帐怪暾?/p>

char*strcat(str1,str2)

char*str1,*str2;

{char*t=str1;

while(【】)str1++;

while(【】);

return(t);}

40.常用的黑箱測試有等價類劃分法、【】和錯誤推測法3種。

三、1.選擇題(20題)41.對長度為n的線性表進(jìn)行順序查找,在最壞情況下需要比較的次數(shù)為()。

A.125B.n/2C.nD.n+1

42.算法一般都可以用______控制結(jié)構(gòu)組合而成。

A.循環(huán)、分支、遞歸B.順序、循環(huán)、嵌套C.循環(huán)、遞歸、選擇D.順序、選擇、循環(huán)

43.下列程序的輸出結(jié)果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}

A.2500B.2050C.4D.0

44.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。

A.334HB.30DHC.352HD.31AH

45.下面程序的輸出結(jié)果是()。typedefunion{longx[1];inty[4];charz[10];}M;Mt;main(){printf("%d\n",sizeof(t));}

A.32B.26C.10D.4

46.以下程序片段的輸出結(jié)果是______。charstr[]="abc\n\012\\\"";printf("%d",strlen(str));

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

47.下列描述中正確的是()。

A.在C語言程序中預(yù)處理是指完成宏替換和文件包含指定的文件的調(diào)用

B.預(yù)處理指令只能位于C源程序文件的首部

C.預(yù)處理命令可以放在程序中的任何位置

D.預(yù)處理命令結(jié)尾需要加分號

48.冒泡排序在最壞情況下的比較次數(shù)是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

49.以下程序的輸出結(jié)果是()longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%d\n",fun(3));}

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

50.若有以下定義:chars[20]="programming",*ps=s;則不能代表字符。的表達(dá)式是()

A.ps+2B.s[2]C.ps[2]D.ps+=2,*ps

51.下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖?)。

A.多態(tài)性B.繼承C.封裝性D.模塊化

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

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

A.用C語言實現(xiàn)的算法必須要有輸入和輸出操作

B.用C語言實現(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C語言程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C語言程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

54.設(shè)整型數(shù)i=5,則printf("%d",i+++++i);的輸出為______。

A.10B.11C.12D.語法錯誤

55.按照“先進(jìn)先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

56.設(shè)x=2.5、a=7、y=4.7,算術(shù)表達(dá)式x+a%3*(int)(x+y)%2/4的值為______。

A.2.5B.7C.4.7D.2.75

57.關(guān)系代數(shù)運算是以______為基礎(chǔ)的運算。

A.關(guān)系運算B.謂詞運算C.集合運算D.代數(shù)運算

58.下列選項可以正確表示字符型常量的是

A.'\r'B.aC.\897D.296

59.以下敘述中不正確的是

A.預(yù)處理命令行都必須以#號開始

B.在程序中凡是以#號開始的語句行都是預(yù)處理命令行

C.宏替換不占用運行時間,只占編譯時間

D.在以下定義是正確的:#definePI3.1415926;

60.下列程序的輸出結(jié)果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j==3‖k++==3))printf("%d%d%d\n",i,j,k);}

A.123B.234C.223D.233

四、選擇題(20題)61.

62.

63.以下函數(shù)按每行8個輸出數(shù)組中的數(shù)據(jù):

下劃線處應(yīng)填入的語句是()。

A.

B.

C.

D.

64.有以下程序:

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

A.4B.10C.14D.6

65.(3)在一棵二叉樹上第5層的結(jié)點數(shù)最多是______。

A.8

B.16

C.32

D.15

66.下面關(guān)于完全二叉樹的敘述中,錯誤的是______。A.A.除了最后一層外,每一層上的結(jié)點數(shù)均達(dá)到最大值

B.可能缺少若干個左右葉子結(jié)點

C.完全二叉樹一般不是滿二叉樹

D.具有結(jié)點的完全二叉樹的深度為[log2n]+1

67.若有如下說明和定義

structtest

{intml;charm2;floatm3;

unionuu{charul[5];intu2[2];}ua;

}myaa;

則sizeof(structtest)的值是

A.12B.16

C.14D.9

68.

69.

70.一名工作人員可以使用多臺計算機(jī),而一臺計算機(jī)可被多名工作人員使用,則實體工作人員與實體計算機(jī)之間的聯(lián)系是()。

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

71.有如下程序段

int*p,a=10,b=1;

p=&a;a=*p+b;

執(zhí)行該程序段后,a的值為

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

72.下列選項中,能夠滿足“若字符串sl等于字符串s2,則執(zhí)行ST”要求的是()。

A.if(stremp(s2,s1)==0)ST;

B.if(s1==s2)ST;

C.if(strcpy(sl,s2)==l)ST;

D.if(sl,s2==O)ST;

73.

設(shè)有定義的語句:“charc1=92,c2=92;”,則以下表達(dá)式中的值為零的是()。

A.c1^c2B.c1&c2C.~c2D.c1E.c2

74.用鏈表表示線性表的優(yōu)點是()。

A.便于隨機(jī)存取B.花費的存儲空間較順序存儲少C.便于捅入和刪除操作D.數(shù)據(jù)元素的物理順序與邏輯順序相同

75.有以下程序

fun(int*a,intn)

{inti,j=0,p;

p=j;

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

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

____;

return(p);

}

在下畫線處應(yīng)填入的是

A.i=pB.a(chǎn)[p]=a[i]

C.p=jD.p=i

76.若有定義語句:

77.設(shè)變量X和y均已正確定義并賦值。以下if語句中,在編譯時將產(chǎn)生錯誤信息的是()。A.if(x++);

B.if(x>y&&y!=0);

C.if(x>y)x--elsey++;

D.if(y<0){;}elsex++;

78.有以下程序:

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

A.12

B.15

C.16

D.20

79.有以下程序:

從第一列開始輸入以下數(shù)據(jù)(<CR>代表一個回車符.:

2743<CR>

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

A.66877B.668966C.6677877D.6688766

80.若intk=8;,則執(zhí)行下列程序后,變量k的正確結(jié)果是

main()

{intk=8;

switch(k)

{case8:k+=1;

case10:k+=1;

case11:k+=1;break;

default:k+=1;

}

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

}

A.12B.11

C.10D.9

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:計算并輸出k以內(nèi)最大的10個能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳人,若k的值為600,則函數(shù)的值為5671。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素數(shù)存人XX所指數(shù)組中,非素數(shù)的個數(shù)通過k返回。

例如,若輸入17,則應(yīng)輸出:46891012141516。注意:部分源程序在文件PROGl.C中。

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

參考答案

1.C

2.B

3.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。

4.C

5.DC語言中,實型常量有兩種表示形式:小數(shù)形式和指數(shù)形式。其中指數(shù)形式的一般形式為:尾數(shù)E(或e)整型指數(shù)。C語言規(guī)定,字母E或e之前必須要有數(shù)字,且E或e后面的指數(shù)必須是整數(shù),所以選項A、B、C錯誤,選項D正確。故本題答案為D選項。

6.D

7.A

8.D

\n全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結(jié)束止。當(dāng)全局變量定義在后,引用它的函數(shù)在前時,應(yīng)該在引用它的函數(shù)中用extern對此全局變量進(jìn)行說明,以便通知編譯程序該變量是一個已在外部定義了的全局變量,這時全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾。

\n

9.A對下標(biāo)為偶數(shù)的元素進(jìn)行降序排序,下標(biāo)為奇數(shù)元素保持不變。

10.A[解析]B)與D)選項中取模運算符%的左右兩個操作數(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

提交評論