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

付費(fèi)下載

下載本文檔

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

文檔簡介

2022年河南省許昌市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.以下敘述中正確的是()。

A.構(gòu)成C程序的基本單位是函數(shù)

B.可以在一個(gè)函數(shù)中定義另一個(gè)函數(shù)

C.main函數(shù)必須放在其他函數(shù)之前

D.C函數(shù)定義的格式是K&R格式

2.C程序是由()構(gòu)成的。

A.主程序與子程序B.主函數(shù)與子函數(shù)C.一個(gè)主函數(shù)與若干個(gè)其他函數(shù)D.主函數(shù)與子程序

3.執(zhí)行下述程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

4.在學(xué)生管理的關(guān)系數(shù)據(jù)庫中,存取一個(gè)學(xué)生信息的數(shù)據(jù)單位是()。

A.文件B.數(shù)據(jù)庫C.字段D.記錄

5.設(shè)有一個(gè)棧,元素依次進(jìn)棧的順序?yàn)锳、B、C、D、E。下列()是不可能的出棧序列。

A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A

6.設(shè)ch是char型變量,值為'A',則表達(dá)式ch=(ch>='A'&&ch<='Z')?ch+32:ch的值是()。

A.ZB.aC.zD.A

7.下列敘述中錯(cuò)誤的是()。

A.C語言函數(shù)中定義的自動(dòng)變量,系統(tǒng)不自動(dòng)賦確定的初值

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

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

D.C語言函數(shù)的形參不可以說明為static型變量

8.面向?qū)ο蠓椒ㄖ校^承是指()。

A.一組對(duì)象所具有的相似性質(zhì)B.一個(gè)對(duì)象具有另一個(gè)對(duì)象的性質(zhì)C.各對(duì)象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制

9.有以下程序main(){intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<=i;j++)printf("%4c",");for(j=______;j<4;j++)printf("%4d",num[i][j]);prrintf("\n");}}若要按以下形式輸出數(shù)組右上半三角1234678111216則在程序下劃線處應(yīng)填入的是

A.i-1B.iC.i+1D.4-i

10.有以下程序:#include<stdio.h>voidfunl(char*p){char*q;q=p;while(*q!='\0')}(*q)++;q++;}mains(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序執(zhí)行后的輸出結(jié)果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

11.設(shè)有定義“inta;floatb;”,執(zhí)行“scanf(“%2d%f”,&a,&b);”語句時(shí),若從鍵盤輸入876543.0并按<Enter>鍵,則a和b的值分別是()。

A.87和6.0B.876和543.0C.87和543.0D.76和543.0

12.第

27

有一堆零件(100到200之間),如果分成4個(gè)零件一組的若干組,則多2個(gè)零件;若分成7個(gè)零件一組,則多3個(gè)零件;若分成9個(gè)零件一組,則多5個(gè)零件。下面程序是求這堆零件總數(shù),請(qǐng)選擇填空。

#include<stdio.h>

main()

{inti;

for(i=100;i<200;i++)

if((i-2)%4==0)

if(!((i-3)%7))

if(_______)

printf("%d",i);

}

A.i%9=5B.i%9!=5C.(i-5)%9!=0D.(i-5)%9==0

13.有以下程序:#include<stdio.h>intfun(intX,inty){if(X!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf("%d/n",fun(2*a,fun(b,c)));}程序運(yùn)行后的輸入結(jié)果是()。A.3B.6C.8D.12

14.

A.A.2A3N4E5OB.1H213U4EC.1A2N3U4OD.1A2N3E4O

15.下面C程序段中count++語句執(zhí)行的次數(shù)為()A.15B.16C.31D.32

16.線性表(a1,a2,?,an)以鏈?zhǔn)椒绞酱鎯?chǔ),訪問第i位置元素的時(shí)間復(fù)雜度為()。

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

17.現(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

18.在下列幾種排序方法中,要求內(nèi)存量最大的是______。

A.插入排序B.選擇排序C.快速排序D.歸并排序

19.

20.有以下程序段chareh;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII碼值為97,則執(zhí)行上述程序段后輸出結(jié)果是

A.因變量類型與格式描述符的類型不匹配輸出無定值

B.輸出項(xiàng)與格式描述符個(gè)數(shù)不符,輸出為零值或不定值

C.a,97,12k=12

D.a,97,k=12

二、2.填空題(20題)21.下列程序的運(yùn)行結(jié)果是【】。

main()

{inti;

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

f(i);}

f(j)

{intj;

staticinta=1000;

autointk=1;

++k;

printf("%d+%d+%d=%d\n",a,k,j,a+k+j);

a+=10;}

22.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

23.若有如下程序:

#include"stdio.h"

main()

{chars[30];

strcpy(&s[0],"abc");strcpy(&s[1],"de");strcpy(&s[2],"f");

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

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

24.以下程序的功能是找出三個(gè)字符串中的最大串。

【】

#include<stdio.h>

main()

{inti;

charstring[20],str[3][20];

(i=0;i<3;i++)gets(【】);

if(strcmp(str,str[0],str[1]>0)strcpy(string,str[0]);

elsestrcpy(string,str[1]);

if(strcmp(str[2],string)>【】)srtcpy(string,str[2]);

printf("Thelargeststringis\n%s\n",string);

}

25.在面向?qū)ο蠓椒ㄖ?,類的?shí)例稱為______。

26.語句:x++;++x;x=1/x;執(zhí)行后都使變量x中的值增1,請(qǐng)寫出一條同一功能的賦值語句______。

27.為了便于對(duì)照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的【】兩部分組成。

28.以上程序運(yùn)行后的輸出結(jié)果是【】。

main()

{inti=10,j=0;

do

{j=j+i;i-;}

while(i>2);

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

}

29.在數(shù)據(jù)庫中用數(shù)據(jù)模型這個(gè)工具來抽象、表示和處理現(xiàn)實(shí)世界中的數(shù)據(jù)和信息。常見的數(shù)據(jù)模型有3種,它們分別是層次模型、網(wǎng)狀模型和()。

30.“printf("%d\n",strlen("\t\"\023\xABC\n"));”語句的輸出結(jié)果是______。

31.在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種;前序遍歷、【】遍歷和后序遍歷。

32.在對(duì)文件進(jìn)行操作的過程中,若要求文件的位置回到文件的開頭,應(yīng)當(dāng)調(diào)用的函數(shù)是【】函數(shù)。

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

main()

{

charstr1[]="Howdoyoudo",*p1=str1;

strcpy(str1+strlen(str1)/2,"esshe");

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

}

34.以下函數(shù)的功能是計(jì)算s=1+1/21+1/3!+…+1/n!,請(qǐng)?zhí)羁铡?/p>

doublefun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k;

s=s+fac;

}

}

35.某二叉樹中度為2的結(jié)點(diǎn)有18個(gè),則該二叉樹中有【】個(gè)葉子結(jié)點(diǎn)。

36.在數(shù)據(jù)庫系統(tǒng)中,實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。

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

38.有以下程序:

main()

{inti,n=0;

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

{do

{if(i%3)continue;

n++;

}while(!i);

n++;

}

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

}

程序執(zhí)行后輸出結(jié)果是【】。

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

main()

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

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

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

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

}

40.以下程序的功能是:求出數(shù)組x中各相鄰兩個(gè)元素的和依次存放到a數(shù)組中,然后輸出。請(qǐng)?zhí)羁铡?/p>

main()

{intx[10],a[9],I;

for(I=0;I<10;I++)scanf("%d",&x[I]);

for(【】;I<10;I++)

a[I-1]=x[I]+【】;.

for(I=0;I<9;I++)printf("%d",a[I]);

printf("");

}

三、1.選擇題(20題)41.若有結(jié)構(gòu)體定義:structstu{intnum;charsex;intage;}a1,a2;則下列語句中錯(cuò)誤的是()。

A.printf("%d,%c,%d",a1);

B.a2.age=a1.age;

C.a1.age++;

D.a1.num=5;

42.以下程序中調(diào)用scanf函數(shù)給變量a輸入數(shù)值的方法是錯(cuò)誤的,其錯(cuò)誤原因是main(){int*p,*q,a,b;p=&a;printf("inputa:");scanf("%d",*p);}

A.*p表示的是指針變量p的地址

B.*p表示的是變量a的值,而不是變量a的地址

C.*p表示的是指針變量p的值

D.*p只能用來說明p是一個(gè)指針變量

43.下列不屬于軟件工程的3個(gè)要素的是______。

A.工具B.過程C.方法D.環(huán)境

44.在下列給出的表達(dá)式中,與while(E)中的(E)不等價(jià)的表達(dá)式是()。

A.(!E==0)B.(E>0‖E<0)C.(E==0)D.(E!=0)

45.有以下程序main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)pfintf("%d",i);}printf("\n");}執(zhí)行后的輸出結(jié)果是

A.5B.24C.32D.40

46.已知二叉樹BT的后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是______.

A.cedbaB.acbedC.decabD.deabc

47.有以下程序:#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf("%d\n",i);}執(zhí)行后輸出結(jié)果是

A.28B.22C.16D.4

48.下面的敘述正確的是()。

A.程序設(shè)計(jì)就是編制程序

B.程序的測試必須由程序員自己去完成

C.程序經(jīng)份試改錯(cuò)后還應(yīng)進(jìn)行再測試

D.程序經(jīng)調(diào)試改錯(cuò)后不必進(jìn)行再測試

49.假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為``

A.log2n

B.n2

C.O(n1.5)

D.n(n-1)/2

50.有以下程序:main(){unsignedinta;intb=-1;a=b;printf("%u",a);}程序運(yùn)行后的輸出結(jié)果是()。

A.-1B.65535C.32767D.-32768

51.以下程序的輸出結(jié)果是typedefunion{longx[2]inty[4];charz[8];}MYTYPE;MYTYPEthem;main(){printf("%d\n",sizeof(them));}

A.32B.16C.8D.24

52.設(shè)有以下說明語句typedefstruct{intn;charch[8];}PER;

A.PER是結(jié)構(gòu)體變量名

B.PER是結(jié)構(gòu)體類型名

C.typedefstruct是結(jié)構(gòu)體類型

D.struct是結(jié)構(gòu)本類型名

53.有以下程序main()}inti,s=1;for(i=1;i<50;i++)if(!(i%5)&&!(i%3))s+=i;printf("%d/n",s);}程序的輸出結(jié)果是

A.409B.277C.1D.91

54.完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例的測試方法是()

A.黑箱測試法B.白箱測試法C.錯(cuò)誤推測法D.安裝測試法

55.數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識(shí)的圖符不屬于數(shù)據(jù)流圖合法圖符的是()

A.控制流B.加工C.數(shù)據(jù)存儲(chǔ)D.源和潭

56.設(shè)變量x為float型且已經(jīng)賦值,則以下語句中能夠?qū)中的數(shù)值保留到小數(shù)點(diǎn)后面兩位,并將第三位四舍五入的是______。

A.x=x*100+0.5/100.0

B.x=(x*100+0.5)/100.0

C.x=(int)(x*100+0.5)/100.0

D.x=(x/100+0.5)*100.0

57.以下合法的賦值語句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

58.下面程序段中的循環(huán)體的執(zhí)行次數(shù)是()。for(i=4;i<0;i--)for(j=1;j<=4;j++)sum=sum+j;

A.4B.0C.12D.16

59.下面關(guān)于對(duì)象概念的描述中,錯(cuò)誤的是

A.對(duì)象就是C語言中的結(jié)構(gòu)體變量

B.對(duì)象代表著正在創(chuàng)建的系統(tǒng)中的一個(gè)實(shí)體

C.對(duì)象是一個(gè)狀態(tài)和操作(或方法)的封裝體

D.對(duì)象之間的信息傳遞是通過消息進(jìn)行的

60.請(qǐng)讀程序:#include<stdio.h>#include<string.h>main(){char*s1="AbCdEf",*s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));}上面程序的輸出結(jié)果是______。

A.正數(shù)B.負(fù)數(shù)C.零D.不確定的值

四、選擇題(20題)61.

有以下程序

#include<stdio.h>

main

{inta=1,b=2,c=3,x;

x=(a^b)&C;printf("%d",x);

}

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

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

62.設(shè)有如下關(guān)系表

T

則下列操作中,正確的是()。

A.T=RnS

B.T=RuS

C.T=R×S

D.TzR/S

63.

64.有以下程序:

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

A.ABCDDEFEDBD

B.abcDDfefDbD

C.abcAAfefAbA

D.Abcddfefdbd

65.

66.

67.

68.有以下程序:

#include<stdio.h>

main()

{chara[20],b[20],c[20];

scanf("%s%s",a,b);

gets(c);

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

}

程序運(yùn)行時(shí)從第一列開始輸入:

Thisisacat!<回車>

則輸出結(jié)果是()。

A.Thisisacat!

B.Thisisa

C.Thisisacat!

D.Thisisacat!

69.

若變量e為char類型,能正確判斷出C為小寫字母的表達(dá)式是()。A.a<=c<=ZB.c>=a.(c<=Z)C.(a<=c)and(z>c)D.(c>=a)&&(c<=Z)

70.有以下程序:

fun(inta[],intm,intn)

{inti;

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

a[i+1]=a[i]+3;

returna[i+1];

}

voidmain()

{

inti,a[6]={2,4,6,8,10,12};

fun(a,2,5);

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

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

}

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

A.24691315B.24691215C.249121518D.249121415

71.若有定義語句:

72.設(shè)char型變量x中的值為10100111,則表達(dá)式(2+x)^(~3)的值是

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

73.有以下程序程序運(yùn)行后的輸出結(jié)果是()。

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

74.若程序中定義了以下函數(shù)doublemyadd(doublea,doubleb){return(a+b);}并將其放在調(diào)用語句之后,則在調(diào)用之前應(yīng)該對(duì)該函數(shù)進(jìn)行說明,以下選項(xiàng)中錯(cuò)誤的說明是()A.doublemyadd(doublea,b);

B.doublemyadd(double,double);

C.doublemyadd(doubleb,doublea);

D.doublemyadd(doublex,doubley);

75.下列字符數(shù)組初始化語句中,不正確的是()。

A.charc[]=goodmorning;

B.charc[20]="goodmorning";

C.charc[]={a,b,c,d);

D.charc[]={"ffgoodmorning"};

76.

下面程序的功能是輸出以下形式的金字塔圖案:main

{inti,j;*

for(i=l;i<-4;i++)***

{for(j=1;j<=4-i;j++)printf("");

*****

for(j=1;j<=____;j++)printf("

*");*******

printf("\n");

}

}

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

A.iB.2*i一1C.n=2*i+1D.i+2

77.以下選項(xiàng)中非法的字符常量是()。

A.\101B.\65C.\xffD.\019

78.

79.

80.以下符號(hào)C語言語法的實(shí)型常量是()。

A)1.2E0.5B)3.14159E

C)5E-3D)E15

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的作用是:將字符串tt中的大寫字母都改為對(duì)應(yīng)的小寫字母,其他字符不變。

例如,若輸入“I,anl,A,Student”,則輸出“i,am,a,student”。

請(qǐng)修改程序中的錯(cuò)誤。使它能得到正確結(jié)果。

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

試題程序:

六、程序設(shè)計(jì)題(1題)82.編寫函數(shù)fun(),其功能是計(jì)算:

s作為函數(shù)值返回。

在C語言中可調(diào)用log(n)函數(shù)求1n(n)。log函數(shù)的引

用說明為:doublelog(doublex)。

例如,若m的值為20,則fun()函數(shù)值為6.506583。

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

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

試題程序:

參考答案

1.A解析:本題考查C語言的綜合基礎(chǔ)知識(shí)。構(gòu)成C程序的基本單位是函數(shù),一個(gè)C程序總是從main函數(shù)開始執(zhí)行,而不論main函數(shù)在整個(gè)程序中的位置如何。C語言的函數(shù)定義都是互相平行、獨(dú)立的,在定義函數(shù)時(shí),一個(gè)函數(shù)內(nèi)不能定義另一個(gè)函數(shù)。C函數(shù)定義的一般格式有兩種:傳統(tǒng)格式和現(xiàn)代格式。傳統(tǒng)格式也稱K&R格式,是早期編譯系統(tǒng)使用的格式;現(xiàn)代格式又稱ANSI格式,是現(xiàn)代編譯系統(tǒng)使用的格式。

2.B

3.D本題j=要是考查帶參數(shù)的宏的定義,過程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。

4.D解析:在關(guān)系數(shù)據(jù)表中,行稱為元組,對(duì)應(yīng)存儲(chǔ)文件中的記錄,列稱為屬性,對(duì)應(yīng)存儲(chǔ)文件中的字段,所以本題答案為D。

5.C

6.B

7.CA選項(xiàng)描述正確,自動(dòng)變量未被賦初值,為隨機(jī)值;B選項(xiàng)描述正確,除在函數(shù)開始位置定義變量外,在復(fù)合語句內(nèi)也可以定義變量;C選項(xiàng)描述錯(cuò)誤,函數(shù)內(nèi)的靜態(tài)變量只在第1次調(diào)用時(shí)賦值,以后調(diào)用保留上次的值;D選項(xiàng)描述正確,形參屬于局部變量,占用動(dòng)態(tài)存儲(chǔ)區(qū),而static型變量占用靜態(tài)存儲(chǔ)區(qū)。故本題答案為C選項(xiàng)。

8.D繼承是面向?qū)ο蟮姆椒ǖ囊粋€(gè)主要特征,是使用已有的類的定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們,所以說繼承是指類之間共享屬性和操作的機(jī)制。

9.B解析:本題考查循環(huán)嵌套,外層循環(huán)控制每一行的輸出,內(nèi)層循環(huán)的第一個(gè)for循環(huán)控制空格的輸出,第二個(gè)for循環(huán)控制的輸出。而在第i行,輸出的第一個(gè)元素是num[i][i],所以下劃線處應(yīng)填i。

10.A解析:在main函數(shù)中,p=&a[3]說明指針p指向a數(shù)組的第4個(gè)字符(即字符\'g\');fun1中的q=p意味著指針q也指向了a數(shù)組的第4個(gè)字符。執(zhí)行while語句,表達(dá)式(*q)++使\'g\'+1,使\'g\'變成了\'h\';表達(dá)式q++使q指向a[4]的起始地址。繼續(xù)執(zhí)行while語句,直到遇到\'\\0\'結(jié)束循環(huán),返回形參。最終得到的結(jié)果是從字符串'Program\'的第4個(gè)字符開始,每個(gè)字符加1。

11.Ascanf函數(shù)中,在格式字符前加入一個(gè)整數(shù)可以指定輸入數(shù)據(jù)所占的寬度,所以賦值時(shí)會(huì)將87賦給變量a,把6.0賦給float型變量b。故本題答案為A選項(xiàng)。

12.D

13.B此題考查的是函數(shù)fun,fun(b,c)=5,然后fun(2*a,5)=fun(8,5)=6。

14.A本題主要考查結(jié)構(gòu)體數(shù)組。x[i]num是結(jié)構(gòu)體x[i]中的num成員,x[1].name[2]是結(jié)構(gòu)體x[i1中1"lame成員的第3個(gè)元素。第一次循環(huán),i-1,輸出x[1].num,x[1].name[2]的值,即2A;第二次循環(huán),i=2,輸出x[2].num,x[2].name[2]的值,即3N;第三次循環(huán),i=3,輸出x[3】.num,x[3].name[2]的值,即4E;第四次循環(huán),i=4,輸出x[4].num,x[4].name[2]的值,即50。

15.A

16.C

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

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

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

18.D解析:快速排序的基本思想是,通過一趟排序?qū)⑴判蛴涗浄指畛瑟?dú)立的兩部

分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,再分別對(duì)這兩部分記錄繼

續(xù)進(jìn)行排序,以達(dá)到整個(gè)序列有序;插入排序的基本操作是指將無序序列中的各元素依

次插入到已經(jīng)有序的線性表中,從而得到一個(gè)新的序列;選擇排序的基本思想是:掃描整

個(gè)線性表,從中選出最小的元素,將它交換到表的最前面(這是它應(yīng)有的位置),然后對(duì)剩

下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個(gè)或兩個(gè)以上的有序表組合

成一個(gè)新的有序表。

注意:各種排序方法實(shí)現(xiàn)過程及實(shí)現(xiàn)機(jī)制。

19.A

20.D解析:輸出格式控制符%c表示將變量以字符的形式輸出;輸出格式控制符%d表示將變量以帶符號(hào)的十進(jìn)制整型數(shù)輸出,所以第一個(gè)輸出語句輸出的結(jié)果為a,97;第二個(gè)輸出語句輸出的結(jié)果為k=12。

21.100+2+1=103110+2+2=114120+2+3=125130+2+4=136140+2+5=147100+2+1=103\r\n110+2+2=114\r\n120+2+3=125\r\n130+2+4=136\r\n140+2+5=147解析:靜態(tài)局部變量的生存期為整個(gè)程序的運(yùn)行期間,而作用域?yàn)槎x該變量的函數(shù)或局部范圍。自動(dòng)變量的建立和撤銷都是由系統(tǒng)自動(dòng)進(jìn)行的,所以稱為自動(dòng)變量。自動(dòng)變量的作用域和生存期都為定義它的局部范圍內(nèi)。對(duì)同一函數(shù)的兩次調(diào)用之間,自動(dòng)變量的值是不保留的。而靜態(tài)變量則保留。注意:局部變量和全局變量的定義及其作用范圍。

22.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。

23.adf

24.#include<string.h>str[i]0

25.對(duì)象對(duì)象解析:類描述的是具有相似性質(zhì)的一組對(duì)象。例如,每本具體的書是一個(gè)對(duì)象,而這些具體的書都有共同的性質(zhì),它們都屬于更一般的概念“書”這一類對(duì)象。一個(gè)具體對(duì)象稱為類的實(shí)例。

26.x+=1x+=1解析:本題考查'++'、'--'運(yùn)算符。'++'、'--'只能作用于變量,不能用于表達(dá)式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。

27.輸出結(jié)果輸出結(jié)果解析:注意:測試的基本方法和步驟。

28.5252解析:do...while語句的形式為:

do

{

語句;

}while(條件表達(dá)式)

當(dāng)條件表達(dá)式為非零時(shí),繼續(xù)執(zhí)行循環(huán)體,直到條件表達(dá)式為零時(shí)退出循環(huán)。

29.關(guān)系模型關(guān)系模型解析:在數(shù)據(jù)庫中用數(shù)據(jù)模型這個(gè)工具來抽象、表示和處理現(xiàn)實(shí)世界中的數(shù)據(jù)和信息。通俗地講,數(shù)據(jù)模型就是現(xiàn)實(shí)世界的反映,它分為兩個(gè)階段:把現(xiàn)實(shí)世界中的客觀對(duì)象抽象為概念模型;把概念模型轉(zhuǎn)換為某一DBMS支持的數(shù)據(jù)模型。常見的數(shù)據(jù)模型有3種,它們分別是層次模型、網(wǎng)狀模型和關(guān)系模型。

30.66解析:strlen()函數(shù)的作用是計(jì)算字符串的長度并作為函數(shù)的返回值,這里的長度不包括串尾的結(jié)束標(biāo)志\'\\0\'。

\'\\t\'是轉(zhuǎn)義字符,代表橫向跳若干格:\'\\\''是轉(zhuǎn)義字符,代表雙引號(hào):\'\\023\'只代表一個(gè)字符,而不管轉(zhuǎn)義字符后面有幾個(gè)字符;\'\\xAB\'是以兩位+六進(jìn)制數(shù)AB表示的ASCII碼字符,只代表一個(gè)字符;\'\\n\'是轉(zhuǎn)義字符,代表回車換行。

5個(gè)字符常量各代表一個(gè)字符,再加上字母C,所以返回的長度是6。

31.中序中序解析:在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷.前序遍歷是指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時(shí),仍然先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)點(diǎn)、遍歷左了樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹:并且遍歷左、右子樹時(shí),仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。后序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹;并且遍歷左、右子樹時(shí),仍然光遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹。

32.rewind()或fseek()rewind()或fseek()

33.HowdoessheHowdoesshe解析:strcpy(str1,s1):字符串拷貝函數(shù),作用是將字符串s1拷貝到字符數(shù)組str1中去。strlen(str):測試字符串str的長度,函數(shù)的值為字符串中實(shí)際長度,不包括\'\\0\'在內(nèi)。本題中strlen(str1)的值為13,則strcpy(str1+strlen(str1)/2,'esshe');相當(dāng)于strcpy(str1+6,'esshe');,因此可得答案為Howdoesshe。

34.k=k*ik=k*i解析:本題中遺過for循環(huán)求s表達(dá)式中每一項(xiàng)的和,表達(dá)式“fac=fac/k;”求的是每—項(xiàng)的值,所以k的值應(yīng)為n!,在求n!的時(shí)候,可以用上次循環(huán)階乘的值乘i,就可以直接得此次n!,故本題填k=k*i。

35.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。本題中度為2的結(jié)點(diǎn)數(shù)為18,故葉子結(jié)點(diǎn)數(shù)為18+1=19個(gè)。

36.數(shù)據(jù)庫管理系統(tǒng)或DBMS數(shù)據(jù)庫管理系統(tǒng)或DBMS解析:數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,DBMS)是一種操縱和管理數(shù)據(jù)庫的大型軟件,是用于建立、使用和維護(hù)數(shù)據(jù)庫,簡稱DBMS。它對(duì)數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。用戶通過DBMS訪問數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫管理員也通過DBMS進(jìn)行數(shù)據(jù)庫的維護(hù)工作。它提供多種功能,可使多個(gè)應(yīng)用程序和用戶用不同的方法在同時(shí)或不同時(shí)刻去建立,修改和詢問數(shù)據(jù)庫。因此,數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)庫管理系統(tǒng)是實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件。本題的答案是數(shù)據(jù)庫管理系統(tǒng)或DBMS。

37.88解析:fabs函數(shù)功能是求x的絕對(duì)值,計(jì)算結(jié)果為double型。pow功能是計(jì)算x的y次方的值,計(jì)算結(jié)果同樣為double型。所以本題表達(dá)式相當(dāng)于2.0的3.0次方,結(jié)果為8.000000。

38.n=4n=4解析:continue語句是結(jié)束本次循環(huán)。i=2時(shí)因i%3條件為真,故不執(zhí)行do-while語句中的n++,只執(zhí)行一次n++得n=1;i=3時(shí),i%3條件為假,執(zhí)行兩次n++得n=3;i=4時(shí),i%3條件為真,執(zhí)行一次n++得n=4。

39.1371513715解析:本題中,定義了一個(gè)整型數(shù)組n并初始化,在for循環(huán)語句中,再對(duì)數(shù)組中各元素重新賦值。循環(huán)執(zhí)行第一次時(shí),n[1]=n[0]*2+1=0+1=1,printf函數(shù)輸出1,然后i的值加1,比較i<=4成立,繼續(xù)執(zhí)行循環(huán)體語句,相應(yīng)輸出3、7、15,直至i<=4不成立,退出循環(huán)。所以最后輸出為1、3、7、15。

40.I=1x[I-1]I=1,x[I-1]解析:對(duì)于10個(gè)數(shù),相臨的兩個(gè)數(shù)相加取和,總共要進(jìn)行9次加法運(yùn)算,所以空14處應(yīng)填入I=1。相臨的兩個(gè)數(shù)相加取和,放在數(shù)組a中,x[0]與x[1]的和存放在a[0]中,所以空15處應(yīng)填入x[I-1]。

41.A解析:題中a1和a2兩個(gè)結(jié)構(gòu)體變量名所對(duì)應(yīng)的成員相同,可以與運(yùn)算“++’相結(jié)合。結(jié)構(gòu)體變量的輸出格式為:printf('要輸出變量名;%d\\t',結(jié)構(gòu)變量名.要輸出的成員變量名),

42.B在本題中,題目告訴我們程序中調(diào)用scanf函數(shù)給變量a輸入數(shù)值的方法是錯(cuò)誤的,要求我們找出其錯(cuò)誤的原因,這是一類錯(cuò)誤原因分析題。

在本題程序中,首先定義兩個(gè)整型指針變量p和q,然后定義兩個(gè)整型變量a和b,讓指針變量p執(zhí)行變量a,接著輸出提示語句“請(qǐng)輸入a”,執(zhí)行格式輸入語句scanf,由于輸入語句的輸入列表中給出的應(yīng)該是輸入的地址,即存放輸入數(shù)據(jù)的存儲(chǔ)地址,但在本題的輸入語句中給出的是*p,這表示一個(gè)數(shù)值,而非地址。因此,無法完成數(shù)據(jù)的輸入,若要完成輸入,可以將*p改為p。

根據(jù)上面的分析,我們可以知道本題程序出錯(cuò)的原因是*p表示的是變量a的值,而不是變量a的地址。因此本題正確答案選B。

43.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個(gè)要素,即方法、工具和過程。方法是完成軟件工程項(xiàng)目的技術(shù)手段;工具支持軟件的開發(fā)、管理和文檔生成;過程支持軟件開發(fā)的各個(gè)環(huán)節(jié)的控制和管理。

44.B解析:在while(E)中,表達(dá)式E可以是C語言中任意合法的條件表達(dá)式,但不能為空,由它來控制循環(huán)體是否執(zhí)行。在選項(xiàng)B)中表達(dá)式E>0‖E<0是一個(gè)邏輯表達(dá)式。

45.C解析:當(dāng)for循環(huán)執(zhí)行到第30次時(shí),i的值為30能被5整除,然后繼續(xù)執(zhí)行兩次if語句,i經(jīng)過兩次自加1運(yùn)算,值變?yōu)?2,能被8整除,故此時(shí)第一次執(zhí)行“printf('%d',i);”語句,即輸出32。

46.A解析:由二叉樹后序遍歷序列和中序遍歷序列可以唯一確定一棵二叉樹。二叉樹BT的后序遍歷序列為dabec,故BT的根結(jié)點(diǎn)為c(后序遍歷序列的最后一個(gè)結(jié)點(diǎn)為樹的根結(jié)點(diǎn)):而BT的中序遍歷序列是debac,即遍歷序列中最后一個(gè)結(jié)點(diǎn)為根結(jié)點(diǎn),說明BT的右子樹為空。由BT的后序遍歷序列和中序遍歷序列可知BT左子樹的后序遍歷序列和中序遍歷序列分別為dabe和deba,因此BT左子樹的根結(jié)點(diǎn)是e。再由中序遍歷序列可知其左子樹為d,右子樹為ba。因此BT的前序遍歷序列為cedba。

47.A解析:本題考核的知識(shí)點(diǎn)是宏定義的簡單應(yīng)用。本題中首先將所有的宏替換掉,則表達(dá)式為i=4+4*4+4/2+2*2+2,故最后輸出的i的值為28。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。

48.C解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯(cuò)誤,改正以后還需要再測試。

49.D解析:假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2。

50.B當(dāng)運(yùn)算對(duì)象為不同的類型時(shí),數(shù)據(jù)的轉(zhuǎn)換方向?yàn)閕nt→unsigned→long→double。本題程序中的變量b為int型,先要轉(zhuǎn)換為unsigned型,int型變量的數(shù)值范圍為-32768~32767,最高位為符號(hào)位,而unsigned所表示的數(shù)的范圍為0~65535,它的最高位為數(shù)值位。由于內(nèi)存中是以補(bǔ)碼形式存儲(chǔ)數(shù)據(jù)的,所以,整型的“-1”在內(nèi)存中表示為16個(gè)1,最高位的“1”表示符號(hào)負(fù),將它轉(zhuǎn)換為unsigned類型,即將原符號(hào)位表示符號(hào)的“1”看成數(shù)值,就可得到16個(gè)數(shù)值位1,即65535。

51.C解析:共用體所占存儲(chǔ)空間的大小是所有成員所占存儲(chǔ)單元的和;共用體變量所占存儲(chǔ)單元的大小是所有成員中占據(jù)存儲(chǔ)空間最大的成員所占存儲(chǔ)空間的大小。本題中字符數(shù)組成員z占8個(gè)字節(jié)的長度,長度最長,所以共用體變量them用sizeof計(jì)算長度為8。

52.B解析:本題考核的知識(shí)點(diǎn)是如何使用typedef定義新的類型。本題通過typedef在定義一個(gè)結(jié)構(gòu)體類型的同時(shí),把它自定義成類型名PER,故PER是結(jié)構(gòu)體類型名。所以,4個(gè)選項(xiàng)中B為所選。

53.D解析:本題是計(jì)算50之內(nèi)的自然數(shù)相加之和,題中if語句括號(hào)中的條件表達(dá)式!(i%5)&&!(i%3)表明只有能同時(shí)被5和3整除的數(shù)才符合相加的條件,1~49之間滿足這個(gè)條件的只有15、30和45,因?yàn)閟的初始值為1,所以s=1+15+30+45=91。

54.A解析:黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)功能導(dǎo)出測試用例。注意:白箱測試是根據(jù)對(duì)程序內(nèi)部邏輯結(jié)構(gòu)的分析來選取測試用例,白箱測試也稱為邏輯覆蓋測試,故選項(xiàng)B)不正確;錯(cuò)誤推測法只是黑箱測試所使用的一種具體的方法,故選項(xiàng)C)不正確;安裝測試是測試層次中的一種,它屬于高級(jí)測試,故選項(xiàng)D)不正確。注意:常用的黑箱測試方法及其定義,白箱測試用例的準(zhǔn)則。

55.A解析:數(shù)據(jù)流圖包括4個(gè)方面,即加工(轉(zhuǎn)換)(輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出)、數(shù)據(jù)流(沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名)、存儲(chǔ)文件(數(shù)據(jù)源)(表示處理過程中存放各種數(shù)據(jù)的文件)、源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實(shí)體)。不包括選項(xiàng)中的控制流。

56.B解析:選項(xiàng)A的功能是將x的值放大100倍,然后與0.0005相加;選項(xiàng)C的功能是將x中的數(shù)值保留到小數(shù)點(diǎn)后面兩位后強(qiáng)制轉(zhuǎn)換為整型;選項(xiàng)D的功能是將x與50相加;正確答案為選項(xiàng)B。

57.B解析:本題中的答案A與D都缺少“;”,而答案C中,表達(dá)式是不能獨(dú)立成為語句的,答案B使用了C語言的自減運(yùn)算符它就相當(dāng)于D=D-1,所以答案B為一賦值語句。

58.B解析:本題是一個(gè)雙重循環(huán),而外循環(huán)的循環(huán)條件i<O在剛開始的時(shí)候就不滿足(i的初值為4),所以循環(huán)體一次也不會(huì)執(zhí)行。故應(yīng)該選擇B。

59.A解析:對(duì)象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實(shí)體有直接的對(duì)應(yīng)關(guān)系,對(duì)象之間通過傳遞消息互相聯(lián)系,從模擬現(xiàn)實(shí)世界中不同事物彼此之間的聯(lián)系,B)、C)、D)是正確的,對(duì)象的思想廣泛應(yīng)用于C++、Java等語言中,因此A)錯(cuò)誤。

60.A解析:本題考查字符串比較函數(shù)strcmp()的應(yīng)用。strcmp(s1,s2)是中比較函數(shù),當(dāng)s1>s2時(shí)返回值為正數(shù),當(dāng)s1<s2時(shí)返回值為負(fù)數(shù),當(dāng)s1=s2時(shí)返回值為零。本題中s1,s2分別表示兩個(gè)串中第一個(gè)字符的地址,s1++和s2++是將指針指向串的第二個(gè)字符,指針變量s1指向的是串“bCdEf”的首地址,即字符b的地址,而指針變量s2指向的是字符'B'的地址。而在字符串比較中,寧符串大小的確定是各個(gè)字符串相應(yīng)位置字符的ASCII碼值的大小決定的,字符'B'的ASCII碼值為66,字符“b”的ASCII碼值為98,所以s1>s2,返回值為正數(shù)。

61.D

\n首先計(jì)算1與2的或運(yùn)算,再將其結(jié)果與3進(jìn)行“與”運(yùn)算,結(jié)果為00000011,即十進(jìn)制數(shù)3。

\n

62.B從圖中可以看出,關(guān)系T是關(guān)系R和關(guān)系s的簡單合并,而合并的符號(hào)為∪,所以答案為T=R∪S。

63.D

64.B在內(nèi)存中,字符數(shù)據(jù)以ASCIl碼存儲(chǔ),它的存儲(chǔ)形式與整數(shù)的存儲(chǔ)形式類似。c語言中,字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用,也可以對(duì)字符型數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)相當(dāng)于對(duì)它們的ASCIl碼進(jìn)行算術(shù)運(yùn)算,在本題中,s++相當(dāng)于s=s+1,即讓s指向數(shù)組中的下一個(gè)元素。

65.D

66.C

67.B

68.D答案為D,空格表示結(jié)束,則c里面的內(nèi)容為'acat!',前面沒有空格。

69.D

在判斷小寫字母時(shí),必須判斷在某一范圍內(nèi)成立,因此用與,即&&,即C在a與z之間。

70.B函數(shù)的功能是將數(shù)組的某個(gè)區(qū)域內(nèi)的元素加3,賦給后一個(gè)元素,然后返回;題目是從a[2]到a[5]調(diào)用函數(shù),a[2]=6,所以a[3]=6+3=9,a[4]=9+3=12,a[5]=12+3=15,所以結(jié)果為B

71.Ab=4不能作為左值,所以本題答案為A)。

72.D本題主要考查位運(yùn)算?!鞍次蝗》础边\(yùn)算(~)是單目運(yùn)算符,運(yùn)算對(duì)象應(yīng)置于運(yùn)算符的右邊,其功能是把運(yùn)算對(duì)象的各二進(jìn)制位求反;“按位異或”運(yùn)算(^)是雙目運(yùn)算符,其功能是把參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)制位相異或。該操作通常用來使一個(gè)數(shù)中某些指定位翻轉(zhuǎn),而另一些位保持不變。

本題中,首先定義一個(gè)字符型變量x,并給出了該變量的二進(jìn)制表示形式,然后求表達(dá)式(2+x)^(~3)的結(jié)果值,在該表達(dá)式中,首先運(yùn)算(~3)和(2+x)部分,3轉(zhuǎn)換為二進(jìn)制數(shù)的表示為00000011,對(duì)它進(jìn)行取反運(yùn)算的結(jié)果為11111100,2轉(zhuǎn)換為二進(jìn)制數(shù)的表示形式為00000010,它與x的值10100111進(jìn)行加運(yùn)算后的結(jié)果為10101001(進(jìn)行這個(gè)計(jì)算時(shí)需要注意:由于變量x是一個(gè)符號(hào)類型,無負(fù)值)。然后對(duì)10101001與11111100進(jìn)行“按位異或”運(yùn)算,得到結(jié)果01010101。因此本題的正確答案選D。

73.A調(diào)用f(a,b)函數(shù)返回3,調(diào)用f(a,c)函數(shù)返回6,因此外層調(diào)用f(f(a,b),“a,c));,即調(diào)用f(3,6)函數(shù)返回9,故本題答案為A)。

74.A解析:本題考核的知識(shí)點(diǎn)是函數(shù)聲明的應(yīng)用。函數(shù)聲明是對(duì)所用到的函數(shù)的特征進(jìn)行必要的聲明,編譯系統(tǒng)以函數(shù)聲明中給出的信息為依據(jù),對(duì)調(diào)用表達(dá)式進(jìn)行檢測,以保證調(diào)用表達(dá)式與函數(shù)之間的參數(shù)正確傳遞。函數(shù)聲明的一般格式為:

類型標(biāo)識(shí)符函數(shù)名(類型標(biāo)識(shí)符形參…);

這些信息就是函數(shù)定義中的第一行的內(nèi)容。這里形參的名字是不重要的,重要的是類型標(biāo)識(shí)符,函數(shù)聲明中也可以不寫形參名只寫該形參的聲明類型,但不能只寫形參名而不寫該形參的類型。本題中,選項(xiàng)A中doublemyadd(doublea,b),沒寫出形參b的類型,故選項(xiàng)A不正確。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。

75.A本題考查兩個(gè)概念:①用單引號(hào)括起來的一個(gè)字符常量只能存放一個(gè)字符;②℃語言中沒有字符串變量,只能用字符數(shù)組來存儲(chǔ)字符串。

76.B

\n對(duì)于第i行,程序先輸出4-i個(gè)空格,然后輸出2×i-1個(gè)'*',所以答案是B。

\n

77.D在選項(xiàng)中,\\019,以0開頭的數(shù)都為八進(jìn)制數(shù),而八進(jìn)制的表示數(shù)字是0~7,所以答案選擇D。

78.B

79.D

80.C指數(shù)不能為小數(shù),也不能沒有指數(shù),即可以為0,用指數(shù)的形式表示時(shí),不能沒有前面的小數(shù)。

81.

82.

【解析】題目要求寫出程序?qū)崿F(xiàn)數(shù)學(xué)表達(dá)式的功能,需要用for循環(huán)計(jì)算累加的結(jié)果,調(diào)用sqrt函數(shù)實(shí)現(xiàn)求平方根。循環(huán)變量的范圍是1~m,每次循環(huán)都進(jìn)行一次累加求和。需要特別注意的是,log函數(shù)的形式參數(shù)為double型變量,用于循環(huán)的計(jì)數(shù)變量為整數(shù),所以必須強(qiáng)制轉(zhuǎn)換。最后返回所求出的平方根。

2022年河南省許昌市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.以下敘述中正確的是()。

A.構(gòu)成C程序的基本單位是函數(shù)

B.可以在一個(gè)函數(shù)中定義另一個(gè)函數(shù)

C.main函數(shù)必須放在其他函數(shù)之前

D.C函數(shù)定義的格式是K&R格式

2.C程序是由()構(gòu)成的。

A.主程序與子程序B.主函數(shù)與子函數(shù)C.一個(gè)主函數(shù)與若干個(gè)其他函數(shù)D.主函數(shù)與子程序

3.執(zhí)行下述程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

4.在學(xué)生管理的關(guān)系數(shù)據(jù)庫中,存取一個(gè)學(xué)生信息的數(shù)據(jù)單位是()。

A.文件B.數(shù)據(jù)庫C.字段D.記錄

5.設(shè)有一個(gè)棧,元素依次進(jìn)棧的順序?yàn)锳、B、C、D、E。下列()是不可能的出棧序列。

A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A

6.設(shè)ch是char型變量,值為'A',則表達(dá)式ch=(ch>='A'&&ch<='Z')?ch+32:ch的值是()。

A.ZB.aC.zD.A

7.下列敘述中錯(cuò)誤的是()。

A.C語言函數(shù)中定義的自動(dòng)變量,系統(tǒng)不自動(dòng)賦確定的初值

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

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

D.C語言函數(shù)的形參不可以說明為static型變量

8.面向?qū)ο蠓椒ㄖ?,繼承是指()。

A.一組對(duì)象所具有的相似性質(zhì)B.一個(gè)對(duì)象具有另一個(gè)對(duì)象的性質(zhì)C.各對(duì)象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制

9.有以下程序main(){intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<=i;j++)printf("%4c",");for(j=______;j<4;j++)printf("%4d",num[i][j]);prrintf("\n");}}若要按以下形式輸出數(shù)組右上半三角1234678111216則在程序下劃線處應(yīng)填入的是

A.i-1B.iC.i+1D.4-i

10.有以下程序:#include<stdio.h>voidfunl(char*p){char*q;q=p;while(*q!='\0')}(*q)++;q++;}mains(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序執(zhí)行后的輸出結(jié)果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

11.設(shè)有定義“inta;floatb;”,執(zhí)行“scanf(“%2d%f”,&a,&b);”語句時(shí),若從鍵盤輸入876543.0并按<Enter>鍵,則a和b的值分別是()。

A.87和6.0B.876和543.0C.87和543.0D.76和543.0

12.第

27

有一堆零件(100到200之間),如果分成4個(gè)零件一組的若干組,則多2個(gè)零件;若分成7個(gè)零件一組,則多3個(gè)零件;若分成9個(gè)零件一組,則多5個(gè)零件。下面程序是求這堆零件總數(shù),請(qǐng)選擇填空。

#include<stdio.h>

main()

{inti;

for(i=100;i<200;i++)

if((i-2)%4==0)

if(!((i-3)%7))

if(_______)

printf("%d",i);

}

A.i%9=5B.i%9!=5C.(i-5)%9!=0D.(i-5)%9==0

13.有以下程序:#include<stdio.h>intfun(intX,inty){if(X!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf("%d/n",fun(2*a,fun(b,c)));}程序運(yùn)行后的輸入結(jié)果是()。A.3B.6C.8D.12

14.

A.A.2A3N4E5OB.1H213U4EC.1A2N3U4OD.1A2N3E4O

15.下面C程序段中count++語句執(zhí)行的次數(shù)為()A.15B.16C.31D.32

16.線性表(a1,a2,?,an)以鏈?zhǔn)椒绞酱鎯?chǔ),訪問第i位置元素的時(shí)間復(fù)雜度為()。

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

17.現(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

18.在下列幾種排序方法中,要求內(nèi)存量最大的是______。

A.插入排序B.選擇排序C.快速排序D.歸并排序

19.

20.有以下程序段chareh;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII碼值為97,則執(zhí)行上述程序段后輸出結(jié)果是

A.因變量類型與格式描述符的類型不匹配輸出無定值

B.輸出項(xiàng)與格式描述符個(gè)數(shù)不符,輸出為零值或不定值

C.a,97,12k=12

D.a,97,k=12

二、2.填空題(20題)21.下列程序的運(yùn)行結(jié)果是【】。

main()

{inti;

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

f(i);}

f(j)

{intj;

staticinta=1000;

autointk=1;

++k;

printf("%d+%d+%d=%d\n",a,k,j,a+k+j);

a+=10;}

22.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

23.若有如下程序:

#include"stdio.h"

main()

{chars[30];

strcpy(&s[0],"abc");strcpy(&s[1],"de");strcpy(&s[2],"f");

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

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

24.以下程序的功能是找出三個(gè)字符串中的最大串。

【】

#include<stdio.h>

main()

{inti;

charstring[20],str[3][20];

(i=0;i<3;i++)gets(【】);

if(strcmp(str,str[0],str[1]>0)strcpy(string,str[0]);

elsestrcpy(string,str[1]);

if(strcmp(str[2],string)>【】)srtcpy(string,str[2]);

printf("Thelargeststringis\n%s\n",string);

}

25.在面向?qū)ο蠓椒ㄖ?,類的?shí)例稱為______。

26.語句:x++;++x;x=1/x;執(zhí)行后都使變量x中的值增1,請(qǐng)寫出一條同一功能的賦值語句______。

27.為了便于對(duì)照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的【】兩部分組成。

28.以上程序運(yùn)行后的輸出結(jié)果是【】。

main()

{inti=10,j=0;

do

{j=j+i;i-;}

while(i>2);

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

}

29.在數(shù)據(jù)庫中用數(shù)據(jù)模型這個(gè)工具來抽象、表示和處理現(xiàn)實(shí)世界中的數(shù)據(jù)和信息。常見的數(shù)據(jù)模型有3種,它們分別是層次模型、網(wǎng)狀模型和()。

30.“printf("%d\n",strlen("\t\"\023\xABC\n"));”語句的輸出結(jié)果是______。

31.在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種;前序遍歷、【】遍歷和后序遍歷。

32.在對(duì)文件進(jìn)行操作的過程中,若要求文件的位置回到文件的開頭,應(yīng)當(dāng)調(diào)用的函數(shù)是【】函數(shù)。

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

main()

{

charstr1[]="Howdoyoudo",*p1=str1;

strcpy(str1+strlen(str1)/2,"esshe");

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

}

34.以下函數(shù)的功能是計(jì)算s=1+1/21+1/3!+…+1/n!,請(qǐng)?zhí)羁铡?/p>

doublefun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k;

s=s+fac;

}

}

35.某二叉樹中度為2的結(jié)點(diǎn)有18個(gè),則該二叉樹中有【】個(gè)葉子結(jié)點(diǎn)。

36.在數(shù)據(jù)庫系統(tǒng)中,實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。

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

38.有以下程序:

main()

{inti,n=0;

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

{do

{if(i%3)continue;

n++;

}while(!i);

n++;

}

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

}

程序執(zhí)行后輸出結(jié)果是【】。

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

main()

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

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

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

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

}

40.以下程序的功能是:求出數(shù)組x中各相鄰兩個(gè)元素的和依次存放到a數(shù)組中,然后輸出。請(qǐng)?zhí)羁铡?/p>

main()

{intx[10],a[9],I;

for(I=0;I<10;I++)scanf("%d",&x[I]);

for(【】;I<10;I++)

a[I-1]=x[I]+【】;.

for(I=0;I<9;I++)printf("%d",a[I]);

printf("");

}

三、1.選擇題(20題)41.若有結(jié)構(gòu)體定義:structstu{intnum;charsex;intage;}a1,a2;則下列語句中錯(cuò)誤的是()。

A.printf("%d,%c,%d",a1);

B.a2.age=a1.age;

C.a1.age++;

D.a1.num=5;

42.以下程序中調(diào)用scanf函數(shù)給變量a輸入數(shù)值的方法是錯(cuò)誤的,其錯(cuò)誤原因是main(){int*p,*q,a,b;p=&a;printf("inputa:");scanf("%d",*p);}

A.*p表示的是指針變量p的地址

B.*p表示的是變量a的值,而不是變量a的地址

C.*p表示的是指針變量p的值

D.*p只能用來說明p是一個(gè)指針變量

43.下列不屬于軟件工程的3個(gè)要素的是______。

A.工具B.過程C.方法D.環(huán)境

44.在下列給出的表達(dá)式中,與while(E)中的(E)不等價(jià)的表達(dá)式是()。

A.(!E==0)B.(E>0‖E<0)C.(E==0)D.(E!=0)

45.有以下程序main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)pfintf("%d",i);}printf("\n");}執(zhí)行后的輸出結(jié)果是

A.5B.24C.32D.40

46.已知二叉樹BT的后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是______.

A.cedbaB.acbedC.decabD.deabc

47.有以下程序:#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf("%d\n",i);}執(zhí)行后輸出結(jié)果是

A.28B.22C.16D.4

48.下面的敘述正確的是()。

A.程序設(shè)計(jì)就是編制程序

B.程序的測試必須由程序員自己去完成

C.程序經(jīng)份試改錯(cuò)后還應(yīng)進(jìn)行再測試

D.程序經(jīng)調(diào)試改錯(cuò)后不必進(jìn)行再測試

49.假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為``

A.log2n

B.n2

C.O(n1.5)

D.n(n-1)/2

50.有以下程序:main(){unsignedinta;intb=-1;a=b;printf("%u",a);}程序運(yùn)行后的輸出結(jié)果是()。

A.-1B.65535C.32767D.-32768

51.以下程序的輸出結(jié)果是typedefunion{longx[2]inty[4];charz[8];}MYTYPE;MYTYPEthem;main(){printf("%d\n",sizeof(them));}

A.32B.16C.8D.24

52.設(shè)有以下說明語句typedefstruct{intn;charch[8];}PER;

A.PER是結(jié)構(gòu)體變量名

B.PER是結(jié)構(gòu)體類型名

C.typedefstruct是結(jié)構(gòu)體類型

D.struct是結(jié)構(gòu)本類型名

53.有以下程序main()}inti,s=1;for(i=1;i<50;i++)if(!(i%5)&&!(i%3))s+=i;printf("%d/n",s);}程序的輸出結(jié)果是

A.409B.277C.1D.91

54.完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例的測試方法是()

A.黑箱測試法B.白箱測試法C.錯(cuò)誤推測法D.安裝測試法

55.數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識(shí)的圖符不屬于數(shù)據(jù)流圖合法圖符的是()

A.控制流B.加工C.數(shù)據(jù)存儲(chǔ)D.源和潭

56.設(shè)變量x為float型且已經(jīng)賦值,則以下語句中能夠?qū)中的數(shù)值保留到小數(shù)點(diǎn)后面兩位,并將第三位四舍五入的是______。

A.x=x*100+0.5/100.0

B.x=(x*100+0.5)/100.0

C.x=(int)(x*100+0.5)/100.0

D.x=(x/100+0.5)*100.0

57.以下合法的賦值語句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

58.下面程序段中的循環(huán)體的執(zhí)行次數(shù)是()。for(i=4;i<0;i--)for(j=1;j<=4;j++)sum=sum+j;

A.4B.0C.12D.16

59.下面關(guān)于對(duì)象概念的描述中,錯(cuò)誤的是

A.對(duì)象就是C語言中的結(jié)構(gòu)體變量

B.對(duì)象代表著正在創(chuàng)建的系統(tǒng)中的一個(gè)實(shí)體

C.對(duì)象是一個(gè)狀態(tài)和操作(或方法)的封裝體

D.對(duì)象之間的信息傳遞是通過消息進(jìn)行的

60.請(qǐng)讀程序:#include<stdio.h>#include<string.h>main(){char*s1="AbCdEf",*s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));}上面程序的輸出結(jié)果是______。

A.正數(shù)B.負(fù)數(shù)C.零D.不確定的值

四、選擇題(20題)61.

有以下程序

#include<stdio.h>

main

{inta=1,b=2,c=3,x;

x=(a^b)&C;printf("%d",x);

}

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

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

62.設(shè)有如下關(guān)系表

T

則下列操作中,正確的是()。

A.T=RnS

B.T=RuS

C.T=R×S

D.TzR/S

63.

64.有以下程序:

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

A.ABCDDEFEDBD

B.abcDDfefDbD

C.abcAAfefAbA

D.Abcddfefdbd

65.

66.

67.

68.有以下程序:

#include<stdio.h>

main()

{chara[20],b[20],c[20];

scanf("%s%s",a,b);

gets(c);

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

}

程序運(yùn)行時(shí)從第一列開始輸入:

Thisisacat!<回車>

則輸出結(jié)果是()。

A.Thisisacat!

B.Thisisa

C.Thisisacat!

D.Thisisacat!

69.

若變量e為char類型,能正確判斷出C為小寫字母的表達(dá)式是()。A.a<=c<=ZB.c>=a.(c<=Z)C.(a<=c)and(z>c)D.(c>=a)&&(c<=Z)

70.有以下程序:

fun(inta[],intm,intn)

{inti;

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

a[i+1]=a[i]+3;

returna[i+1];

}

voidmain()

{

inti,a[6]={2,4,6,8,10,12};

fun(a,2,5);

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

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

}

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

A.24691315B.24691215C.249121518D.249121415

71.若有定義語句:

72.設(shè)char型變量x中的值為10100111,則表達(dá)式(2+x)^(~3)的值是

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

73.有以下程序程序運(yùn)行后的輸出結(jié)果是()。

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

74.若程序中定義了以下函數(shù)doublemyadd(doublea,doubleb){return(a+b);}并將其放在調(diào)用語句之后,則在調(diào)用之前應(yīng)該對(duì)該函數(shù)進(jìn)行說明,以下選項(xiàng)中錯(cuò)誤的說明是()A.doublemyadd(doublea,b);

B.doublemyadd(double,double);

C.doublemyadd(doubleb,doublea);

D.doublemyadd(doublex,doubley);

75.下列字符數(shù)組初始化語句中,不正確的是()。

A.charc[]=goodmorning;

B.charc[20]="goodmorning";

C.charc[]={a,b,c,d);

D.charc[]={"ffgoodmorning"};

76.

下面程序的功能是輸出以下形式的金字塔圖案:main

{inti,j;*

for(i=l;i<-4;i++)***

{for(j=1;j<=4-i;j++)printf("");

*****

for(j=1;j<=____;j++)printf("

*");*******

printf("\n");

}

}

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

A.iB.2*i一1C.n=2*i+1D.i+2

77.以下選項(xiàng)中非法的字符常量是()。

A.\101B.\65C.\xffD.\019

78.

79.

80.以下符號(hào)C語言語法的實(shí)型常量是()。

A)1.2E0.5B)3.14159E

C)5E-3D)E15

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的作用是:將字符串tt中的大寫字母都改為對(duì)應(yīng)的小寫字母,其他字符不變。

例如,若輸入“I,anl,A,Student”,則輸出“i,am,a,student”。

請(qǐng)修改程序中的錯(cuò)誤。使它能得到正確結(jié)果。

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

試題程序:

六、程序設(shè)計(jì)題(1題)82.編寫函數(shù)fun(),其功能是計(jì)算:

s作為函數(shù)值返回。

在C語言中可調(diào)用log(n)函數(shù)求1n(n)。log函數(shù)的引

用說明為:doublelog(doublex)。

例如,若m的值為20,則fun()函數(shù)值為6.506583。

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

請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填

溫馨提示

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

評(píng)論

0/150

提交評(píng)論