2021-2022年黑龍江省黑河市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)_第1頁(yè)
2021-2022年黑龍江省黑河市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)_第2頁(yè)
2021-2022年黑龍江省黑河市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)_第3頁(yè)
2021-2022年黑龍江省黑河市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)_第4頁(yè)
2021-2022年黑龍江省黑河市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩115頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2021-2022年黑龍江省黑河市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.計(jì)算機(jī)算法必須具備輸入、輸出和()等5個(gè)特性。

A.可行性、可移植性和可擴(kuò)充性B.可行性、確定性和有窮性C.確定性、有窮性和穩(wěn)定性D.易讀性、穩(wěn)定性和安全性

2.

3.設(shè)有如下定義:int(*ptr);則以下敘述中正確的是()。

A.ptr是指向一維組數(shù)的指針變量

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個(gè)int型數(shù)據(jù)

D.ptr是一個(gè)函數(shù)名,該函數(shù)的返回值是指int型數(shù)據(jù)的指針

4.在一個(gè)C語(yǔ)言源程序文件中所定義的全局變量,其作用域?yàn)?)。

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

5.以下關(guān)于typedef的敘述錯(cuò)誤的是()。A.用tyFedef可以增加新類型

B.typedef只是將已存在的類型用一個(gè)新的名字來(lái)代表

C.用typedef可以為各種類型說(shuō)明一個(gè)新名,但不能用來(lái)為變量說(shuō)明一個(gè)新名

D.用typedef為類型說(shuō)明一個(gè)新名,通??梢栽黾映绦虻目勺x性

6.以下函數(shù)findmax擬實(shí)現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯(cuò)導(dǎo)致不能實(shí)現(xiàn)預(yù)定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成錯(cuò)誤的原因是()。A.定義語(yǔ)句“inti,max;”中max未賦初值

B.賦值語(yǔ)句“max=MIN;”中,不應(yīng)給max賦MIN值

C.語(yǔ)句“if(max<x[i])max=x[i];”中判斷條件設(shè)置錯(cuò)誤

D.賦值語(yǔ)句“max-MIN;”放錯(cuò)了位置

7.

8.順序結(jié)構(gòu)的本質(zhì)特點(diǎn)是()。

A.數(shù)據(jù)元素存儲(chǔ)在地址連續(xù)的內(nèi)存空間

B.數(shù)據(jù)元素緊鄰

C.數(shù)據(jù)元素在內(nèi)存中的相對(duì)位置表示數(shù)據(jù)之間的邏輯關(guān)系

D.不使用指針

9.一個(gè)優(yōu)化的程序可以生成n個(gè)元素集合的所有子集,那么該程序的時(shí)間復(fù)雜度是()

A.O(n!)B.O(nlogn)C.O(n^2)D.O(2^n)

10.是哈希查找的沖突處理方法()。

A.求余法B.平均取中法C.二分法D.開(kāi)放地址法

11.若串S=,software,其子串的數(shù)目是()。

A.8B.37C.36D.9

12.擁有PC機(jī)并以撥號(hào)方式接入網(wǎng)絡(luò)的用戶需要配置()

A.CD-ROMB.ModemC.電話機(jī)D.鼠標(biāo)

13.

14.數(shù)據(jù)管理技術(shù)發(fā)展的三個(gè)階段中,()沒(méi)有專門的軟件對(duì)數(shù)據(jù)進(jìn)行管理。

I.人工管理階段

II.文件系統(tǒng)階段

Ⅲ.?dāng)?shù)據(jù)庫(kù)階段A.A.僅IB.僅ⅢC.I和IID.II和Ⅲ

15.

16.有以下程序:#include<stdio.h>main(){inta=-2,b=0;while(a++++b);printf("%d,%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A.1,3B.0,2C.0,3D.1,2

17.若變量已正確定義,有下列程序段:inta=3,b=5,c=7;if(a>B)a=b;c=a;if(c!=A)c=b;printf("%d,%d,%d\n",a,b,C);其輸出結(jié)果是()。A.程序段有語(yǔ)法錯(cuò)B.3,5,3C.3,5,5D.3,5,7

18.對(duì)于如圖所示二叉樹(shù)采用中根遍歷,正確的遍歷序列應(yīng)為()A.ABCDEFB.ABECDFC.CDFBEAD.CBDAEF

19.

20.計(jì)算機(jī)算法指的是()。

A.計(jì)算方法B.排序方法C.解決問(wèn)題的有限運(yùn)算序列D.調(diào)度方法

二、2.填空題(20題)21.以下程序的功能是根據(jù)輸入的“y”(“Y”)與“n”(“N”),在屏幕上分別顯示出“ThisisYES.”與“ThisNO.”??瞻滋幮枰钊氲膬?nèi)容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case'y':

case'Y':printf("\nThisisYES,\n");

case'n':

case'N':printf("\nThisisNO.\n");}}

main()

{charch;

printf("\nEnterachar'y','Y'or'n','N':");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

22.隊(duì)列是限定在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表。允許插入的一端稱作______。

23.數(shù)據(jù)庫(kù)技術(shù)的主要特點(diǎn)為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理與控制。

24.若按功能劃分,軟件測(cè)試的方法通常分為白盒測(cè)試方法和【】測(cè)試方法。

25.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖中,使()解釋其中的圖形元素。

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

27.閱讀下列程序,則在執(zhí)行后,程序的運(yùn)行結(jié)果為#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}

28.以下程序的功能是輸入任意整數(shù)給n后,輸出n行由大寫字母A開(kāi)始構(gòu)成的三角形字符陣列圖形。例如,輸入整數(shù)5時(shí)(注意:n不得大于10),程序運(yùn)行結(jié)果如下:

ABCDE

FGHI

JKL

MN

O

請(qǐng)?zhí)羁胀瓿稍摮绦颉?/p>

main()

{inti,j,n;charch='A';

scanf("%d",&n);

if(n<11)

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

{for(j=1;j<=n-i+1;j++)

{printf("%2c",ch);

【】;

}

【】;

}

}

elseprintf("nistoolarge!\n")

printf("\n"0);

}

29.若有以下定義,則不移動(dòng)指針p,且通過(guò)指針p引用值為98的數(shù)組元素的表達(dá)式是【】。

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

30.有以下程序片段,請(qǐng)問(wèn)執(zhí)行后的輸出結(jié)果是【】。

intn=10;

while(n>7)

{printf("%d",n--);

}

31.有以下程序

intfa(intx){returnx*x;}

intfb(intx){returnx*x*x;}

intf(ing(*f1)(),int(*f2)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2),printf("%d\n",i);}

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

32.下面的程序通過(guò)函數(shù)average計(jì)算數(shù)組中各元素的平均值,請(qǐng)?zhí)羁铡?/p>

floatavetage(int*pa,intn)

{inti;

floatavg=0.0;

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

avg=avg+【】;avg=【】;

returnavg;

}

main()

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

floatmean;

prinf("%mean=%f\n",mean);

}

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

34.以下程序是用遞歸方法求數(shù)組中的最大值及其下標(biāo)值。請(qǐng)?zhí)羁铡?/p>

#defineM10

voidfindmax(int*a,intn,inti,int*pk)

{if(i<n)

{if(a[i]>a[*pk])【】;

findmax(a,n,i+1,&(*pk));}}

main()

{inta[M],j,n=0;

printf("\nEnter%ddata;\n",M);

for(i=0;i<M;i++)scanf("%d",a+i);

findmax(a,M,0,&n);

printf("Themaxinumis:%d\n",a[n]);

printf("It'sindexis;%d\n",n);}

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

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

36.以下程序段的輸出結(jié)果是【】。

inti=9;

printf("%o\n",i);

37.下列程序輸出的結(jié)果是______。

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

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

}

38.診斷和改正程序中錯(cuò)誤的工作通常稱為【】。

39.在一個(gè)容量為32的循環(huán)隊(duì)列中,若頭指針front=3,尾指針rear=2,則該循環(huán)隊(duì)列中共有______個(gè)元素。

40.下列程序的運(yùn)行結(jié)果為【】。

#include<stdio.h>

main()

{staticcharstr1[40];

charstr2140];

strcpy(str2,"China");

strcat(str1,str2);

strcat(str1,"isagreatcountry!");

printf("%s%s",str2,strl);

printf("%d%d\n",strlen(str2),strlen(str1));

}

三、1.選擇題(20題)41.有以下語(yǔ)句,則對(duì)a數(shù)組元素的引用不正確的是inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

42.下列敘述中正確的是()。

A.接口復(fù)雜的模塊,其耦合程度一定低

B.耦合程度弱的模塊,其內(nèi)聚程度一定低

C.耦合程度弱的模塊,其內(nèi)聚程度一定高

D.上述三種說(shuō)法都不對(duì)

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

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

44.在以下術(shù)語(yǔ)中,與數(shù)據(jù)的邏輯結(jié)構(gòu)無(wú)關(guān)的是______。

A.線性結(jié)構(gòu)B.鏈?zhǔn)浇Y(jié)構(gòu)C.樹(shù)型結(jié)構(gòu)D.網(wǎng)狀結(jié)構(gòu)

45.下列關(guān)于棧的描述正確的是()。

A.在棧中只能插入元素而不能刪除元素

B.在棧中只能刪除元素而不能插入元素

C.棧是特殊的線性表,只能在一端插入或刪除元素

D.棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素

46.在Windows中,啟動(dòng)應(yīng)用程序的正確的方法是()

A.用鼠標(biāo)指向該應(yīng)用程序圖標(biāo)B.將該應(yīng)用程序窗口最小化成圖標(biāo)C.將該應(yīng)用程序窗口還原D.用鼠標(biāo)雙擊該應(yīng)用程序圖標(biāo)

47.有下列程序段:typedefstructNODE{intnum;structNODE*next;}OLD;下列敘述中正確的是()。

A.以上的說(shuō)明形式非法B.NODE是一個(gè)結(jié)構(gòu)體類型C.OLD是一個(gè)結(jié)構(gòu)體類型D.OLD是一個(gè)結(jié)構(gòu)體變量

48.設(shè)有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語(yǔ)句是()

A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;

49.如果要限制一個(gè)變量只能為本文件所使用,必須通過(guò)______來(lái)實(shí)現(xiàn)。

A.外部變量說(shuō)明B.靜態(tài)內(nèi)部變量說(shuō)明C.靜態(tài)外部變量說(shuō)明D.局部變量說(shuō)明

50.已知下面的程序段,正確的判斷是______。#defineA3#defineB(A)((A+1)*a)inta=3;......X=3*(A+B(7));

A.程序錯(cuò)誤,不允許嵌套定義B.X=93C.X=81D.程序錯(cuò)誤,宏定義不允許有參數(shù)

51.在調(diào)用函數(shù)時(shí),如果實(shí)參是簡(jiǎn)單變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是_______。

A.地址傳遞B.單向值傳遞C.由實(shí)參傳給形,再由形參傳回實(shí)參D.傳遞方式由用戶指定

52.設(shè)p1和p2是指向一個(gè)int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語(yǔ)句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

53.有以下函數(shù):fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}該函數(shù)的功能是()。

A.計(jì)算a和b所指字符串的長(zhǎng)度之差

B.將b所指字符串復(fù)制到a所指字符串中

C.將b所指字符串連接到a所指字符串后面

D.比較a和b所指字符串的大小

54.在C語(yǔ)言中,函數(shù)的隱含存儲(chǔ)類別是______。

A.autoB.staticC.externD.無(wú)存儲(chǔ)類別

55.已知大寫字母A的ACSⅡ碼為65,以下程序的運(yùn)行結(jié)果是()#include<stdio.h>main(){charc1='A',c2='Y';printf("%d,%d\n",c1,c2);}A.65,89B.A,YC.65,88D.65,90

56.下列程序的輸出結(jié)果是______。main(){inta=-1,b=1,k;if((++a<0)&&!(b--<=0))printf("%d%d\n",a,b);elseprintf("%d%d\n",b,a);}

A.-11B.01C.10D.0

57.設(shè)已執(zhí)行預(yù)編譯命令#include<string.h>,以下程序段的輸出結(jié)果是

chars[]="anapple";

printf("%d\n",strlen(s));

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

58.設(shè)x為int型變量,則執(zhí)行以下語(yǔ)句后,x的值為_(kāi)_____。x=10;x+x-=x-x;

A.10B.20C.40D.30

59.以下程序段給數(shù)組所有的元素輸入數(shù)據(jù),請(qǐng)選擇正確答案填入。#include<stdio.h>main(){inta[10],i=0;while(i<10)scanf("%d",______);}

A.a+(i++)B.&a[i+1]C.a+iD.&a[++i]

60.下列程序的輸出結(jié)果是()main(){inti,j,m=0,n=0;for(i=0;i<2;i++)for(j=0;j<2;j++)if(j>=i)m=1;n++;printf("%d\n",n);}

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

四、選擇題(20題)61.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

62.以下程序執(zhí)行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不確定D.0

63.

64.有以下程序main(){union{charch[2];intd;}s;s.d=0x4321;printf("%x,%x\n",s.ch[0],s.ch[1]);}在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是______。A.21,43B.43,21C.43,00D.21,00

65.

有以下程序:

#include<stdio.1l>

voidWriteStr(char*fn.char*str)

{FILE*fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}

main

{WriteStr("tl.dat","start");

WriteStr("t1.dat","end");)

程序運(yùn)行后,文件t1.dat中的內(nèi)容是()。

A.startB.endC.startendD.endrt

66.下列條件語(yǔ)句中,輸出結(jié)果與其他語(yǔ)句不同的是()

67.已知各變量的類型說(shuō)明如下:

則以下不符合C語(yǔ)言語(yǔ)法的表達(dá)式是()。

A.

B.

C.

D.

68.

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

#include<stdio.h>

main

{inti;

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

{if(i*i>=20)&&(i*i<=100))

break;

}

printf("%d\n",i*i);

}

A.49B.36C.25D.64

69.有如下程序段

#include"stdio.h"

typedefstructaa

{inta;

structaa*next;

}M;

voidset(M*k,inti,int*b)

{intj,d=0;

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

{k[j-1].next=&k[j];

k[j-1].a=b[d++];

}

k[j].a=b[d];

}

main()

{Mk[5],*p;

intd[5]={23,34,45,56,67};

set(k,5,d);

p=k+1;

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

}

要輸出45,則在下畫線處應(yīng)填入的選項(xiàng)是

A.p->next->aB.++p->a

C.(*p).a(chǎn)++D.p++->a

70.第

1

若有運(yùn)算符<<,sizeof,^,&=,則它們按優(yōu)先級(jí)由高至低的正確排列次序是

A.sizeof,&=,<<,^

B.sizeof,<<,^,&=

C.^,<<,sizeof,&=

D.<<,^,&=,sizeof

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

#includedstdio.h>

#includedstrin9.h>

main

{char*s1="abDuj";

char*s2="ABdUG";

intt;

t=strcmp(s1,s2);

printf("%d",t);

}

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

72.已知數(shù)據(jù)表A中每個(gè)元素距其最終位置不遠(yuǎn),為節(jié)省時(shí)間,應(yīng)采用的算法是()

A.堆排序B.直接插入排序C.快速排序D.直接選擇排序

73.

74.有以下程序

#include<stdio.h>

voidfun(char**p)

{++p;printf("%s",*p);}

main

{char*a[]={"Morning","Afternoon","Evening","Night");

fun(a);

}

程序的運(yùn)行結(jié)果是()。A.A.AfternoonB.fternoonC.MorningD.orning

75.

76.現(xiàn)有如下程序段:

則程序段的輸出結(jié)果為()。

A.7,8

B.8,8

C.7,10

D.8,10

77.下列能正確定義且賦初值的語(yǔ)句是()。

A.intn1=n2=1;

B.charC=99;

C.floatf=f+1;

D.doublex=1.2E5.6;

78.C語(yǔ)言中char類型數(shù)據(jù)占字節(jié)數(shù)為()。

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

79.

80.

五、程序改錯(cuò)題(1題)81.下列給定的程序中,函數(shù)proc的功能是:用選擇法對(duì)數(shù)組中的m個(gè)元素按從小到大的順序進(jìn)行排序。例如,排序前的數(shù)據(jù)為:1132-5214則排序后的數(shù)據(jù)為:-52111432請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#defineM20voidproc(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");}

六、程序設(shè)計(jì)題(1題)82.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。程序中將m個(gè)人的成績(jī)存放在score數(shù)組中,請(qǐng)編寫函數(shù)fun(),它的功能是將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為10、20、30、40、50、60、70、80、90時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10、20、30、40。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:

參考答案

1.B

2.D

3.C本題中int(*ptr)的含義是指向函數(shù)的指針變量,其為指向函數(shù)的指針變量,該函數(shù)返回一個(gè)int型數(shù)據(jù),故選擇C選項(xiàng)。

4.D

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

\n

5.A用typedef沒(méi)有增加新類型,所以選擇A)。

6.D“max=MIN;”語(yǔ)句應(yīng)放在for循環(huán)之前,否則每次循環(huán)時(shí)都重新賦值,值沒(méi)有變化。

7.B

8.C

9.D

10.D

11.B

12.B

13.A

14.A數(shù)據(jù)管理技術(shù)發(fā)展的蘭個(gè)階段中,只有人工管理階段,沒(méi)有操作系統(tǒng),沒(méi)有管理數(shù)據(jù)的軟件,數(shù)據(jù)處理方式是批處理。在文件系統(tǒng)階段,操作系統(tǒng)中已經(jīng)有了專門數(shù)據(jù)管理軟件,一般稱為文件系統(tǒng)。在數(shù)據(jù)庫(kù)系統(tǒng)階段,出現(xiàn)了統(tǒng)一管理數(shù)據(jù)的專門軟件系統(tǒng),即數(shù)據(jù)庫(kù)管理系統(tǒng)。

15.D

16.D輸出的結(jié)果是:-1,1\r\n0,2\r\n1,2

17.B解析:本題考查的是程序結(jié)構(gòu)設(shè)計(jì)中if語(yǔ)句的應(yīng)用,當(dāng)if判斷條件成立時(shí)就執(zhí)行其后的相關(guān)語(yǔ)句,否則不執(zhí)行,本題中第一個(gè)if條件不成立,故不執(zhí)行“a=b”,接著執(zhí)行“c=a”,此時(shí)第二個(gè)if條件也不成立,故不執(zhí)行其后語(yǔ)句,最終c的值為3。

18.D

19.A

20.C

21.getchargetchar解析:題中要求根據(jù)輸入的字符調(diào)用函數(shù)YesNo來(lái)判斷輸入的字符是y(Y)還是n(N),字符的輸入可用字符輸入函數(shù)getchar。函數(shù)YesNo用來(lái)判斷一個(gè)字符是y(Y)還是n(N),主要用了一個(gè)switch多分支結(jié)構(gòu)來(lái)比較輸入字符與字符'y','Y'、,'n','N'是否相等來(lái)實(shí)現(xiàn)的。注意:用于字符串處理的函數(shù)。

22.隊(duì)尾隊(duì)尾解析:在隊(duì)列中,允許插入的一端叫做“隊(duì)尾”,允許刪除的一端叫做“隊(duì)頭”。

23.共享性共享性解析:數(shù)據(jù)庫(kù)技術(shù)的主要特點(diǎn)有以下幾個(gè)方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨(dú)立性,數(shù)據(jù)統(tǒng)一管理與控制。

24.黑盒軟件測(cè)試的方法有三種:動(dòng)態(tài)測(cè)試、靜態(tài)測(cè)試和正確性證明。設(shè)計(jì)測(cè)試實(shí)例的方法一般有兩類:黑盒測(cè)試法和白盒測(cè)試法。在使用黑盒法設(shè)計(jì)測(cè)試實(shí)例時(shí),測(cè)試人員將程序看成一個(gè)“黑盒”,即不關(guān)心程序內(nèi)部是如何實(shí)現(xiàn)的,只是檢查程序是否符合它的“功能說(shuō)明”,所以使用黑盒法設(shè)計(jì)的測(cè)試用例完全是根據(jù)程序的功能說(shuō)明來(lái)設(shè)計(jì)的。

25.數(shù)據(jù)字典數(shù)據(jù)字典解析:數(shù)據(jù)字典的作用是對(duì)數(shù)據(jù)流圖中出現(xiàn)的披命名的圖形元素進(jìn)行確切解釋。通常數(shù)據(jù)字典包含的信心有名稱、別名、何處使用/如何使用、內(nèi)容描述、補(bǔ)充信息等。

26.3691236912解析:本題考查最基本的for循環(huán)。for(cc=1;cc<5;cc++)規(guī)定循環(huán)次數(shù)為4次,每次a+=3,即每次a的值增加3,但因?yàn)閒un函數(shù)中變量a為static類型,所以每次調(diào)用完子函數(shù)之后,變量a所做的改變都要保存。

27.D

28.ch++;或++ch;或ch=ch+1;或ch=1+ch;或ch+=1;priintf("\n");或putchar('\n');ch++;或++ch;或ch=ch+1;或ch=1+ch;或ch+=1;\r\npriintf('\\n');或putchar(\'\\n\');解析:因?yàn)閏h被初始化為\'A\',而內(nèi)循環(huán)中有—條輸出ch的語(yǔ)句,整個(gè)程序都沒(méi)有一條改變ch值的語(yǔ)句。所以,第1空應(yīng)該填ch++或其它類似的表達(dá)式,以使每次輸出一個(gè)字母后ch都能變?yōu)橄乱粋€(gè)字母。內(nèi)循環(huán)結(jié)束后,代表這一行已經(jīng)輸出完畢,此時(shí)即將開(kāi)始下一行的輸出,所以在第2空位置應(yīng)該輸出一個(gè)換行符,故應(yīng)填入printf('\\n');或其他等價(jià)形式。

29.p[5]或*(p+5)p[5]或*(p+5)解析:98是數(shù)組w的第5個(gè)元素(最開(kāi)始的為第0個(gè)),而通過(guò)*p=w已經(jīng)將p指向了數(shù)組w,要想不移動(dòng)指針p而引用98,可以有以下兩種寫法:p[5]、*(p+5)。

30.1098

31.44解析:在主函數(shù)中調(diào)用函數(shù)f,函數(shù)f有三個(gè)參數(shù),形參f1與f2分別是兩個(gè)指向函數(shù)的指針。在f中執(zhí)行f2(x)-f1(x),實(shí)際上是執(zhí)行了fb()2)-fa(2),故執(zhí)行i=(fa,fb,2)卮i的值為23-22=4。

32.pa[i]avg/n

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

34.*pk=a[i]*pk=a[i]解析:通過(guò)參數(shù)傳遞,findmax函數(shù)接收到4個(gè)參數(shù),分別是數(shù)組a(需要對(duì)其中的數(shù)據(jù)按照題目的要求進(jìn)行計(jì)算)、10(數(shù)組a中的元素個(gè)數(shù))、0(數(shù)組a的起始位置)、指針變量n(對(duì)數(shù)組a中的元素進(jìn)行遍歷)。我們了解了這些參數(shù)的作用后,再對(duì)遞歸調(diào)用的函數(shù)進(jìn)行分析,就不難得出結(jié)論了。注意:通過(guò)對(duì)本例中遞歸函數(shù)的分析掌握遞歸算法的執(zhí)行原理。

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

36.1111解析:本題考核的知識(shí)點(diǎn)是printf()函數(shù)的輸出格式。本題中定義了一個(gè)整型變量i并賦初值為9,然后要求以八進(jìn)制輸出i的值,9的八進(jìn)制數(shù)的表示為11。

37.11解析:本題考查局部變量和全局變量的區(qū)別:局部變量是指作用域在函數(shù)級(jí)和塊級(jí)的變量,全局變量是指作用域在程序級(jí)和文件級(jí)的變量。本程序首先定義了一個(gè)全局變量m=17,m=17的作用域在整個(gè)程序內(nèi)。在fun函數(shù)內(nèi)部定義了一個(gè)局部變量m=3,m=3的作用域僅在fun函數(shù)內(nèi)部,通過(guò)fun函數(shù)返回兩個(gè)形參的積再減m。在主函數(shù)中,輸出fun(a,b)/m=(5*7-3)/17=1。

38.程序調(diào)試程序調(diào)試解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯(cuò)誤。程序調(diào)試與軟件測(cè)試不同,軟件測(cè)試是盡可能多地發(fā)現(xiàn)軟件中的錯(cuò)誤。先要發(fā)現(xiàn)軟件的錯(cuò)誤,然后借助于調(diào)試工具找出軟件錯(cuò)誤的具體位置。軟件測(cè)試貫穿整個(gè)軟件生命期,而調(diào)試主要在開(kāi)發(fā)階段。

39.3131解析:設(shè)隊(duì)列容量為m,如果:rear>front,則隊(duì)列中元素個(gè)數(shù)為rear-front;如果rear<front,則隊(duì)列中元素個(gè)數(shù)為m+(rear-front)。本題rear<front,則m=32+(2-3)=31。

40.ChinaChinaisagreatcountry!525

41.D解析:本題考查數(shù)組指針的應(yīng)用。選項(xiàng)D)第一層括號(hào)中為數(shù)組a中第i項(xiàng)元素的值,外面再加指針運(yùn)算符沒(méi)有意義。

42.C解析:影響模塊之間耦合的主要因素有兩個(gè):模塊之間的連接形式,模塊接口的復(fù)雜性。一般來(lái)說(shuō),接口復(fù)雜的模塊,其耦合程度要比接口簡(jiǎn)單的模塊強(qiáng),所以選項(xiàng)A的說(shuō)法錯(cuò)誤;耦合程度弱的模塊,其內(nèi)聚程度一定高,選項(xiàng)B錯(cuò)誤;選項(xiàng)C正確。

43.B解析:先定義了一個(gè)指向字符型數(shù)組str的指針p,指針p旨向數(shù)組str的首地址,p+3將指針指向str[3],又因?yàn)樽址蛿?shù)組在存放字符串時(shí)會(huì)自動(dòng)在末尾加上'\\0',所以*(p+3)=0。

44.B

45.C解析:根據(jù)數(shù)據(jù)結(jié)構(gòu)對(duì)棧的定義及其特點(diǎn)可知:棧是限定只在表尾進(jìn)行插入或刪除操作的線性表,因此棧是先進(jìn)后出的線性表,對(duì)棧的插入與刪除操作,不需要改變棧底元素。棧是限定只在表尾進(jìn)行插入或刪除操作的線性表。

46.D

47.C解析:C語(yǔ)言允許用typedef說(shuō)明一種新類型名,其一般形式為:typedef類型名標(biāo)識(shí)符。typedef語(yǔ)句的作用僅僅是使“標(biāo)識(shí)符”來(lái)代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型。原有類型名依然有效。此題中,用使typedef定義了新的類型OLD結(jié)構(gòu),所以O(shè)LD為結(jié)構(gòu)體類型。

48.C解析:data是—結(jié)構(gòu)體變量,a是它的成員,因此引用a域的正確方法是:data.a,取它的地址賦值給指針變量p的語(yǔ)句應(yīng)該是:p=&data.a。選項(xiàng)A,將a的地址直接賦給了p,而忽略了a為結(jié)構(gòu)體內(nèi)部的一個(gè)成員,而不是一單獨(dú)的變量,故選項(xiàng)A不正確;選項(xiàng)B在p=data.a表達(dá)式中右邊為一個(gè)結(jié)構(gòu)體變量的成員不是地址,而左邊為一指針應(yīng)該將一地址賦給它,故選項(xiàng)B不正確;選項(xiàng)D表達(dá)式*p=data.a是將結(jié)構(gòu)體變量中的成員a的值賦給指針p所指向的變量值,而不是使指針p指向data中的a域,故選項(xiàng)D不正確:4個(gè)選項(xiàng)中只有C正確。

49.C

50.C解析:本題的宏定義是合法的,宏定義展開(kāi)為3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。

51.B解析:C語(yǔ)言函數(shù)中的參數(shù)傳遞方式有傳值與傳址兩種方式,傳值方式是指將實(shí)參的值復(fù)制一份傳遞給形參,而傳址方式是指將實(shí)參的變量地址傳遞給形參,也就是實(shí)參的引用。

52.B解析:本題主要考查了一維數(shù)組指針的賦值和用指針引用數(shù)組元素進(jìn)行運(yùn)算。選項(xiàng)B)中p2為指向int型變量的指針。而k為int型變量,不能將int型變量直接賦值給指向int型變量的指針,所以選項(xiàng)B)錯(cuò)誤。

53.D解析:本題要求閱讀的代碼是一個(gè)函數(shù),閱讀之前先要看清函數(shù)的定義,該函數(shù)有兩個(gè)參數(shù),都是字符指針,這說(shuō)明它接收的是兩個(gè)字符串.該函數(shù)沒(méi)有定義返回類型,C語(yǔ)言規(guī)定函數(shù)的返回類型為int時(shí)可以省略,所以切不可將其看成是無(wú)返回類型的void型函數(shù),它是int型函數(shù)。函數(shù)體中除了返回語(yǔ)句外,只有一條while循環(huán)語(yǔ)句,該循環(huán)的循環(huán)條件為(*a!='\\'0}&&(*b!='\\0')&&(*a==*B),即當(dāng)a和b所指處都不是字符結(jié)束符'\\0'并且a和b所指處的內(nèi)容相等時(shí)執(zhí)行循環(huán)。而循環(huán)體中只是簡(jiǎn)單地將指針a和b同時(shí)往后移動(dòng)1位。循環(huán)結(jié)束后返回a所指內(nèi)容減去b所指內(nèi)容的差。換個(gè)角度去考慮,也就是說(shuō)當(dāng)字符串a(chǎn)或b中有一個(gè)結(jié)束了或者是它們的相同位置中有一個(gè)字符不同時(shí),則返回該位置兩個(gè)字符之差。若兩者長(zhǎng)度相同而且所有對(duì)應(yīng)字符都相同的話,最后返回的是'\\0\\-'\\0'=0,否則的話就返回兩個(gè)字符串第一對(duì)不相同的字符之差.這時(shí)應(yīng)該可以看出來(lái),這個(gè)函數(shù)實(shí)現(xiàn)的是對(duì)兩個(gè)字符串的比較。所以,4個(gè)選項(xiàng)中D正確。

54.C解析:C語(yǔ)言規(guī)定,只要在定義函數(shù)時(shí)不進(jìn)行存儲(chǔ)類型的顯式說(shuō)明,函數(shù)的存儲(chǔ)類型就隱含為外部類型,即extern型,外部類型允許其他文件中的函數(shù)調(diào)用。

55.A

56.C

57.B解析:考查了測(cè)字符串長(zhǎng)度函數(shù)strlen。如果一個(gè)字符數(shù)組中存放一個(gè)字符串,則函數(shù)strlen的值為'\\0'之前的全部字符個(gè)數(shù),也包括空格在內(nèi)。

58.B解析:賦值運(yùn)算符按照“從右往左”的結(jié)合順序。因此,先執(zhí)行x-=x-x,即x=x-(x-x)=10;再執(zhí)行x+=x,即x=x+x=20,故正確選項(xiàng)為B。

59.A解析:a就是數(shù)組a的首地址,而a+x是數(shù)組中第x個(gè)元素的地址,所以在四個(gè)選項(xiàng)中,選項(xiàng)B和C只能輸入一個(gè)數(shù)據(jù),選項(xiàng)D不能給a[0]輸入數(shù)據(jù),只有A可以完成給數(shù)組所有的元素輸入數(shù)據(jù)的任務(wù)。

60.C

61.A本題考查函數(shù)值的類型。在函數(shù)調(diào)用時(shí),盡管Y的類型是float.x的類型是double,但是因?yàn)楹瘮?shù)定義時(shí)沒(méi)有指定類型說(shuō)明,系統(tǒng)默認(rèn)函數(shù)值的類型為int型,所以計(jì)算后Y的類型是int型。

62.Csum+=i等價(jià)于sun+i,在本題中sum沒(méi)有賦初值,而題中只輸出sum的值,因此整個(gè)結(jié)果為不確定值。

63.A

64.A結(jié)構(gòu)體和共用體;在“聯(lián)合”中,各成員共享一段內(nèi)存空間,一個(gè)聯(lián)合變量的長(zhǎng)度等于各成員中最長(zhǎng)的長(zhǎng)度。應(yīng)該說(shuō)明的是,這里所謂的共享不是指把多個(gè)成員同時(shí)裝入一個(gè)聯(lián)合變量?jī)?nèi),而是指該聯(lián)合變量可被賦予任一成員值,但每次只能賦一種值,賦入新值則沖去舊值

65.B

\n用'w'方式打開(kāi)文件,意思是如果文件名相同則覆蓋原來(lái)的文件,所以當(dāng)再次輸入時(shí)覆蓋了第一次的內(nèi)容,B選項(xiàng)正確。\n

66.A若a為0,A)選項(xiàng)輸出x,其他輸出y,所以選擇A)。

67.A”%”是求余運(yùn)算符或模運(yùn)算符,”%”兩側(cè)均應(yīng)為整型數(shù)據(jù),選項(xiàng)A)中的X是double型數(shù)據(jù)。

68.C

\n當(dāng)if執(zhí)行到第一個(gè)滿足(i*i>一20)&&(i*i<=100)這個(gè)條件的i出現(xiàn)時(shí),通過(guò)break語(yǔ)句跳出循環(huán),執(zhí)行下面的printf語(yǔ)句。

\n

69.A在本題中,程序首先定義了一個(gè)結(jié)構(gòu)體,結(jié)構(gòu)體中有兩個(gè)成員變量,一個(gè)是整型,另一個(gè)是指向該結(jié)構(gòu)體的指針。然后程序定義了一無(wú)返回值的函數(shù)set,該函數(shù)帶有三個(gè)參數(shù),第一個(gè)是結(jié)構(gòu)體指針變量k,第二個(gè)是整型變量i,第三個(gè)是整型指針變量b。在函數(shù)體中,首先定義了兩個(gè)整型變量,然后執(zhí)行for循環(huán),從循環(huán)變量的初始值及循環(huán)結(jié)束條件我們可以知道,循環(huán)執(zhí)行的次數(shù)與形參變量i有關(guān),從循環(huán)體中我們可以看出,該循環(huán)是將結(jié)構(gòu)體數(shù)組中的前一個(gè)結(jié)構(gòu)體的指針成員指向后一個(gè)結(jié)構(gòu)體的首地址,并用數(shù)組b中的值給結(jié)構(gòu)體的成員變量a賦值。

在主函數(shù)中,定義了一個(gè)大小為5的結(jié)構(gòu)體數(shù)組k和一個(gè)結(jié)構(gòu)體指針p,然后定義了一個(gè)數(shù)組d,并給數(shù)組d進(jìn)行了初始化操作,然后調(diào)用函數(shù)set,實(shí)參分別為結(jié)構(gòu)體數(shù)組k、5和數(shù)組d,結(jié)合上面我們對(duì)set函數(shù)的分析可以知道,此時(shí)執(zhí)行set的for循環(huán),可以是結(jié)構(gòu)體數(shù)組中各結(jié)構(gòu)體變量的指針成員next指向下一個(gè)結(jié)構(gòu)體變量,并將該結(jié)構(gòu)體變量的成員a賦值為數(shù)組d的與之位置相對(duì)應(yīng)的值,如結(jié)構(gòu)體數(shù)組中第一個(gè)結(jié)構(gòu)體變量的a被賦值為數(shù)組d中的第一個(gè)元素值,即23。那么函數(shù)調(diào)用后,結(jié)構(gòu)體數(shù)組各元素的成員a的值分別為23、34、45、56、67。

函數(shù)調(diào)用后,運(yùn)行p=k+1;語(yǔ)句,該語(yǔ)句的作用是使結(jié)構(gòu)體指針變量p執(zhí)行結(jié)構(gòu)體數(shù)組k的第二個(gè)元素,然后執(zhí)行輸出語(yǔ)句,本題要填的空就在輸出語(yǔ)句中,根據(jù)題目要求,要輸出一個(gè)45的值,當(dāng)然,用數(shù)組d輸出這么一個(gè)結(jié)果很簡(jiǎn)單,為d[2],但選項(xiàng)中并沒(méi)有這項(xiàng),而是需要我們從結(jié)構(gòu)體數(shù)組中輸出這個(gè)值,從上面的分析我們知道,該值對(duì)應(yīng)結(jié)構(gòu)體數(shù)組第三個(gè)元素的成員,而當(dāng)前的p執(zhí)行第二個(gè)元素,從四個(gè)選項(xiàng)來(lái)分析,只有A選項(xiàng)能完成輸出45的任務(wù)。

B選項(xiàng)中的++p->a由于運(yùn)算符優(yōu)先級(jí)問(wèn)題,首先運(yùn)行p->a,輸出的是34,然后加1,即輸出35。

C選項(xiàng)中的(*p).a++等于((*p).a)++,這樣的結(jié)果是34++,最后的輸出結(jié)果是34。

D選項(xiàng)中的p++->a等價(jià)于(p++)->a,顯然是輸出第二個(gè)結(jié)構(gòu)體的a成員值,即34。

70.B本題主要考查運(yùn)算符的優(yōu)先級(jí)。在C語(yǔ)言中包含算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符等。這些運(yùn)算符的優(yōu)先級(jí)和結(jié)合方式在我們的教材《30天通過(guò)計(jì)算機(jī)等級(jí)考試:二級(jí)C語(yǔ)言》中可以查閱到。題目中給出運(yùn)算符優(yōu)先級(jí)從高到低依次為sizeof、<<、^、&=。因此本題的答案選B。

71.A本題考查符符串比較函數(shù)和兩個(gè)字符串比較的原則這兩個(gè)知識(shí)點(diǎn)。

\n(1)兩字符串比較的原則是依次比較兩個(gè)字符串同一位置的一對(duì)字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對(duì)字符,若它們的ASCII碼值不同,則ASCII碼值較大的字符所在的字符串較大;若所有字符相同,則兩個(gè)字符串相等;若一個(gè)字符串全部i個(gè)字符與另一個(gè)字符串的前i個(gè)字符相同,則字符串較長(zhǎng)的較大(2)strcmp(s1,s2)的返回值,當(dāng)str1<str2時(shí),返回值為負(fù)數(shù);當(dāng)str1=str2時(shí),返回0;當(dāng)str1>str2,返回值為正數(shù)。

72.B堆排序。先把序列看成一棵大根堆或小根堆,摘取最大或最小元素后再建成新的根堆,再排序。堆排序的過(guò)程是:先建一個(gè)堆,輸出堆頂?shù)淖畲蠡蜃钚〉脑?,再將剩余的n-1個(gè)元素重新調(diào)整成一個(gè)新堆。如此反復(fù)進(jìn)行,直到排序完成。

直接插入排序是一種最簡(jiǎn)單的排序方法,它的基本操作是將一個(gè)記錄插入到已排好的有序表中,從而得到一個(gè)新的、記錄數(shù)增1的有序表。首先,將序列中的第1個(gè)記錄看成是一個(gè)有序的子序列,然后從第2個(gè)記錄起逐個(gè)進(jìn)行插入,直至整個(gè)序列變成按關(guān)鍵字非遞減有序序列為止。

快速排序是對(duì)冒泡排序的一種改進(jìn)。它的基本思想是通過(guò)一趟排序?qū)⒋庞涗浄指畛瑟?dú)立的兩部分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,則可以分別對(duì)這兩部分記錄繼續(xù)進(jìn)行排序,以達(dá)到整個(gè)序列有序。

直接選擇排序是通過(guò)n-i次關(guān)鍵字間的比較,從n-i+1個(gè)記錄中選出關(guān)鍵字最小的一個(gè)記錄,并和第i個(gè)記錄交換。這樣重復(fù)執(zhí)行n-1趟選擇排序。

在本題中,數(shù)據(jù)表A中每個(gè)元素距其最終位置不遠(yuǎn),即說(shuō)明數(shù)據(jù)表基本有序,簡(jiǎn)單移動(dòng)一些元素即可完成排序,在這種情況下,使用直接插入排序法所需時(shí)間最少,最合理。因此本題的正確答案是B。

\r\n\r\n\r\n

73.A

74.A執(zhí)行fun(a)語(yǔ)句時(shí),P指向的是字符串?dāng)?shù)組a的第一個(gè)字符串“Morning”,p自加1之后,p指向字符串?dāng)?shù)組a的第2個(gè)字符串“Afternoon”。

75.D

76.D在c語(yǔ)言中,定義一維數(shù)組的語(yǔ)句一般形式如下:

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

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

77.B在c語(yǔ)言規(guī)定中,可以在定義變量的同時(shí)給變量賦初值,選項(xiàng)A中n2沒(méi)有定義;選項(xiàng)C中不能在賦值表達(dá)式的右邊出現(xiàn)變量本身,選項(xiàng)D中字母E后面的數(shù)應(yīng)該為整數(shù),所以不對(duì)。

78.CChar類型數(shù)據(jù)占1個(gè)字節(jié)。

79.C

80.C

81.(1)錯(cuò)誤:for(j=0;j<n-1;j++);正確:for(j=0;j<n-1j++)(2)錯(cuò)誤:a[p]=t;正確:a[j]=t;【解析】for循環(huán)結(jié)束的標(biāo)志是for后的一個(gè)語(yǔ)句,如果for后面直接跟一個(gè)分號(hào),說(shuō)明是一個(gè)空循環(huán)不執(zhí)行任何功能,因此“for(j=0;j<n-1;j++);”后面的分號(hào)應(yīng)該去掉;當(dāng)a[i]<a[p]時(shí)兩元素互換,因此“a[p]=t;”應(yīng)改為“a[j]=t”。

82.1intfun(intscore[],intm,intbe-low[])2{3inti,j=0;4floatav=0.0;5for(i=0;i<m;i++)6av=av+score[i]/m;/*求平均值*/</m;i++)<m;i++)7for(i=0;i<m;i++)gif(score[i]</m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>8低于平均分,則將此分?jǐn)?shù)放入below數(shù)::組中*/</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>9below[j++]=score[i];</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>10returnj;/*</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>返回低于平均分的人數(shù)*/U}要計(jì)算低于平均分的人數(shù),首先應(yīng)該求出數(shù)組score中各元素的平均值。然后通過(guò)for循環(huán)語(yǔ)句和if條件語(yǔ)句找出低于平均值的分?jǐn)?shù)。該題第1個(gè)循環(huán)的作用是求出平均值av,第2個(gè)循環(huán)的作用是找出數(shù)組score中低于平均值的成績(jī)記錄并存入below數(shù)組中。</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)2021-2022年黑龍江省黑河市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.計(jì)算機(jī)算法必須具備輸入、輸出和()等5個(gè)特性。

A.可行性、可移植性和可擴(kuò)充性B.可行性、確定性和有窮性C.確定性、有窮性和穩(wěn)定性D.易讀性、穩(wěn)定性和安全性

2.

3.設(shè)有如下定義:int(*ptr);則以下敘述中正確的是()。

A.ptr是指向一維組數(shù)的指針變量

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個(gè)int型數(shù)據(jù)

D.ptr是一個(gè)函數(shù)名,該函數(shù)的返回值是指int型數(shù)據(jù)的指針

4.在一個(gè)C語(yǔ)言源程序文件中所定義的全局變量,其作用域?yàn)?)。

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

5.以下關(guān)于typedef的敘述錯(cuò)誤的是()。A.用tyFedef可以增加新類型

B.typedef只是將已存在的類型用一個(gè)新的名字來(lái)代表

C.用typedef可以為各種類型說(shuō)明一個(gè)新名,但不能用來(lái)為變量說(shuō)明一個(gè)新名

D.用typedef為類型說(shuō)明一個(gè)新名,通常可以增加程序的可讀性

6.以下函數(shù)findmax擬實(shí)現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯(cuò)導(dǎo)致不能實(shí)現(xiàn)預(yù)定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成錯(cuò)誤的原因是()。A.定義語(yǔ)句“inti,max;”中max未賦初值

B.賦值語(yǔ)句“max=MIN;”中,不應(yīng)給max賦MIN值

C.語(yǔ)句“if(max<x[i])max=x[i];”中判斷條件設(shè)置錯(cuò)誤

D.賦值語(yǔ)句“max-MIN;”放錯(cuò)了位置

7.

8.順序結(jié)構(gòu)的本質(zhì)特點(diǎn)是()。

A.數(shù)據(jù)元素存儲(chǔ)在地址連續(xù)的內(nèi)存空間

B.數(shù)據(jù)元素緊鄰

C.數(shù)據(jù)元素在內(nèi)存中的相對(duì)位置表示數(shù)據(jù)之間的邏輯關(guān)系

D.不使用指針

9.一個(gè)優(yōu)化的程序可以生成n個(gè)元素集合的所有子集,那么該程序的時(shí)間復(fù)雜度是()

A.O(n!)B.O(nlogn)C.O(n^2)D.O(2^n)

10.是哈希查找的沖突處理方法()。

A.求余法B.平均取中法C.二分法D.開(kāi)放地址法

11.若串S=,software,其子串的數(shù)目是()。

A.8B.37C.36D.9

12.擁有PC機(jī)并以撥號(hào)方式接入網(wǎng)絡(luò)的用戶需要配置()

A.CD-ROMB.ModemC.電話機(jī)D.鼠標(biāo)

13.

14.數(shù)據(jù)管理技術(shù)發(fā)展的三個(gè)階段中,()沒(méi)有專門的軟件對(duì)數(shù)據(jù)進(jìn)行管理。

I.人工管理階段

II.文件系統(tǒng)階段

Ⅲ.?dāng)?shù)據(jù)庫(kù)階段A.A.僅IB.僅ⅢC.I和IID.II和Ⅲ

15.

16.有以下程序:#include<stdio.h>main(){inta=-2,b=0;while(a++++b);printf("%d,%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A.1,3B.0,2C.0,3D.1,2

17.若變量已正確定義,有下列程序段:inta=3,b=5,c=7;if(a>B)a=b;c=a;if(c!=A)c=b;printf("%d,%d,%d\n",a,b,C);其輸出結(jié)果是()。A.程序段有語(yǔ)法錯(cuò)B.3,5,3C.3,5,5D.3,5,7

18.對(duì)于如圖所示二叉樹(shù)采用中根遍歷,正確的遍歷序列應(yīng)為()A.ABCDEFB.ABECDFC.CDFBEAD.CBDAEF

19.

20.計(jì)算機(jī)算法指的是()。

A.計(jì)算方法B.排序方法C.解決問(wèn)題的有限運(yùn)算序列D.調(diào)度方法

二、2.填空題(20題)21.以下程序的功能是根據(jù)輸入的“y”(“Y”)與“n”(“N”),在屏幕上分別顯示出“ThisisYES.”與“ThisNO.”??瞻滋幮枰钊氲膬?nèi)容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case'y':

case'Y':printf("\nThisisYES,\n");

case'n':

case'N':printf("\nThisisNO.\n");}}

main()

{charch;

printf("\nEnterachar'y','Y'or'n','N':");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

22.隊(duì)列是限定在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表。允許插入的一端稱作______。

23.數(shù)據(jù)庫(kù)技術(shù)的主要特點(diǎn)為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理與控制。

24.若按功能劃分,軟件測(cè)試的方法通常分為白盒測(cè)試方法和【】測(cè)試方法。

25.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖中,使()解釋其中的圖形元素。

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

27.閱讀下列程序,則在執(zhí)行后,程序的運(yùn)行結(jié)果為#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}

28.以下程序的功能是輸入任意整數(shù)給n后,輸出n行由大寫字母A開(kāi)始構(gòu)成的三角形字符陣列圖形。例如,輸入整數(shù)5時(shí)(注意:n不得大于10),程序運(yùn)行結(jié)果如下:

ABCDE

FGHI

JKL

MN

O

請(qǐng)?zhí)羁胀瓿稍摮绦颉?/p>

main()

{inti,j,n;charch='A';

scanf("%d",&n);

if(n<11)

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

{for(j=1;j<=n-i+1;j++)

{printf("%2c",ch);

【】;

}

【】;

}

}

elseprintf("nistoolarge!\n")

printf("\n"0);

}

29.若有以下定義,則不移動(dòng)指針p,且通過(guò)指針p引用值為98的數(shù)組元素的表達(dá)式是【】。

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

30.有以下程序片段,請(qǐng)問(wèn)執(zhí)行后的輸出結(jié)果是【】。

intn=10;

while(n>7)

{printf("%d",n--);

}

31.有以下程序

intfa(intx){returnx*x;}

intfb(intx){returnx*x*x;}

intf(ing(*f1)(),int(*f2)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2),printf("%d\n",i);}

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

32.下面的程序通過(guò)函數(shù)average計(jì)算數(shù)組中各元素的平均值,請(qǐng)?zhí)羁铡?/p>

floatavetage(int*pa,intn)

{inti;

floatavg=0.0;

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

avg=avg+【】;avg=【】;

returnavg;

}

main()

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

floatmean;

prinf("%mean=%f\n",mean);

}

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

34.以下程序是用遞歸方法求數(shù)組中的最大值及其下標(biāo)值。請(qǐng)?zhí)羁铡?/p>

#defineM10

voidfindmax(int*a,intn,inti,int*pk)

{if(i<n)

{if(a[i]>a[*pk])【】;

findmax(a,n,i+1,&(*pk));}}

main()

{inta[M],j,n=0;

printf("\nEnter%ddata;\n",M);

for(i=0;i<M;i++)scanf("%d",a+i);

findmax(a,M,0,&n);

printf("Themaxinumis:%d\n",a[n]);

printf("It'sindexis;%d\n",n);}

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

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

36.以下程序段的輸出結(jié)果是【】。

inti=9;

printf("%o\n",i);

37.下列程序輸出的結(jié)果是______。

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

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

}

38.診斷和改正程序中錯(cuò)誤的工作通常稱為【】。

39.在一個(gè)容量為32的循環(huán)隊(duì)列中,若頭指針front=3,尾指針rear=2,則該循環(huán)隊(duì)列中共有______個(gè)元素。

40.下列程序的運(yùn)行結(jié)果為【】。

#include<stdio.h>

main()

{staticcharstr1[40];

charstr2140];

strcpy(str2,"China");

strcat(str1,str2);

strcat(str1,"isagreatcountry!");

printf("%s%s",str2,strl);

printf("%d%d\n",strlen(str2),strlen(str1));

}

三、1.選擇題(20題)41.有以下語(yǔ)句,則對(duì)a數(shù)組元素的引用不正確的是inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

42.下列敘述中正確的是()。

A.接口復(fù)雜的模塊,其耦合程度一定低

B.耦合程度弱的模塊,其內(nèi)聚程度一定低

C.耦合程度弱的模塊,其內(nèi)聚程度一定高

D.上述三種說(shuō)法都不對(duì)

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

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

44.在以下術(shù)語(yǔ)中,與數(shù)據(jù)的邏輯結(jié)構(gòu)無(wú)關(guān)的是______。

A.線性結(jié)構(gòu)B.鏈?zhǔn)浇Y(jié)構(gòu)C.樹(shù)型結(jié)構(gòu)D.網(wǎng)狀結(jié)構(gòu)

45.下列關(guān)于棧的描述正確的是()。

A.在棧中只能插入元素而不能刪除元素

B.在棧中只能刪除元素而不能插入元素

C.棧是特殊的線性表,只能在一端插入或刪除元素

D.棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素

46.在Windows中,啟動(dòng)應(yīng)用程序的正確的方法是()

A.用鼠標(biāo)指向該應(yīng)用程序圖標(biāo)B.將該應(yīng)用程序窗口最小化成圖標(biāo)C.將該應(yīng)用程序窗口還原D.用鼠標(biāo)雙擊該應(yīng)用程序圖標(biāo)

47.有下列程序段:typedefstructNODE{intnum;structNODE*next;}OLD;下列敘述中正確的是()。

A.以上的說(shuō)明形式非法B.NODE是一個(gè)結(jié)構(gòu)體類型C.OLD是一個(gè)結(jié)構(gòu)體類型D.OLD是一個(gè)結(jié)構(gòu)體變量

48.設(shè)有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語(yǔ)句是()

A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;

49.如果要限制一個(gè)變量只能為本文件所使用,必須通過(guò)______來(lái)實(shí)現(xiàn)。

A.外部變量說(shuō)明B.靜態(tài)內(nèi)部變量說(shuō)明C.靜態(tài)外部變量說(shuō)明D.局部變量說(shuō)明

50.已知下面的程序段,正確的判斷是______。#defineA3#defineB(A)((A+1)*a)inta=3;......X=3*(A+B(7));

A.程序錯(cuò)誤,不允許嵌套定義B.X=93C.X=81D.程序錯(cuò)誤,宏定義不允許有參數(shù)

51.在調(diào)用函數(shù)時(shí),如果實(shí)參是簡(jiǎn)單變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是_______。

A.地址傳遞B.單向值傳遞C.由實(shí)參傳給形,再由形參傳回實(shí)參D.傳遞方式由用戶指定

52.設(shè)p1和p2是指向一個(gè)int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語(yǔ)句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

53.有以下函數(shù):fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}該函數(shù)的功能是()。

A.計(jì)算a和b所指字符串的長(zhǎng)度之差

B.將b所指字符串復(fù)制到a所指字符串中

C.將b所指字符串連接到a所指字符串后面

D.比較a和b所指字符串的大小

54.在C語(yǔ)言中,函數(shù)的隱含存儲(chǔ)類別是______。

A.autoB.staticC.externD.無(wú)存儲(chǔ)類別

55.已知大寫字母A的ACSⅡ碼為65,以下程序的運(yùn)行結(jié)果是()#include<stdio.h>main(){charc1='A',c2='Y';printf("%d,%d\n",c1,c2);}A.65,89B.A,YC.65,88D.65,90

56.下列程序的輸出結(jié)果是______。main(){inta=-1,b=1,k;if((++a<0)&&!(b--<=0))printf("%d%d\n",a,b);elseprintf("%d%d\n",b,a);}

A.-11B.01C.10D.0

57.設(shè)已執(zhí)行預(yù)編譯命令#include<string.h>,以下程序段的輸出結(jié)果是

chars[]="anapple";

printf("%d\n",strlen(s));

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

58.設(shè)x為int型變量,則執(zhí)行以下語(yǔ)句后,x的值為_(kāi)_____。x=10;x+x-=x-x;

A.10B.20C.40D.30

59.以下程序段給數(shù)組所有的元素輸入數(shù)據(jù),請(qǐng)選擇正確答案填入。#include<stdio.h>main(){inta[10],i=0;while(i<10)scanf("%d",______);}

A.a+(i++)B.&a[i+1]C.a+iD.&a[++i]

60.下列程序的輸出結(jié)果是()main(){inti,j,m=0,n=0;for(i=0;i<2;i++)for(j=0;j<2;j++)if(j>=i)m=1;n++;printf("%d\n",n);}

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

四、選擇題(20題)61.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

62.以下程序執(zhí)行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不確定D.0

63.

64.有以下程序main(){union{charch[2];intd;}s;s.d=0x4321;printf("%x,%x\n",s.ch[0],s.ch[1]);}在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是______。A.21,43B.43,21C.43,00D.21,00

65.

有以下程序:

#include<stdio.1l>

voidWriteStr(char*fn.char*str)

{FILE*fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}

main

{WriteStr("tl.dat","start");

WriteStr("t1.dat","end");)

程序運(yùn)行后,文件t1.dat中的內(nèi)容是()。

A.startB.endC.startendD.endrt

66.下列條件語(yǔ)句中,輸出結(jié)果與其他語(yǔ)句不同的是()

67.已知各變量的類型說(shuō)明如下:

則以下不符合C語(yǔ)言語(yǔ)法的表達(dá)式是()。

A.

B.

C.

D.

68.

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

#include<stdio.h>

main

{inti;

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

{if(i*i>=20)&&(i*i<=100))

break;

}

printf("%d\n",i*i);

}

A.49B.36C.25D.64

69.有如下程序段

#include"stdio.h"

typedefstructaa

{inta;

structaa*next;

}M;

voidset(M*k,inti,int*b)

{intj,d=0;

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

{k[j-1].next=&k[j];

k[j-1].a=b[d++];

}

k[j].a=b[d];

}

main()

{Mk[5],*p;

intd[5]={23,34,45,56,67};

set(k,5,d);

p=k+1;

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

}

要輸出45,則在下畫線處應(yīng)填入的選項(xiàng)是

A.p->next->aB.++p->a

C.(*p).a(chǎn)++D.p++->a

70.第

1

若有運(yùn)算符<<,sizeof,^,&=,則它們按優(yōu)先級(jí)由高至低的正確排列次序是

A.sizeof,&=,<<,^

B.sizeof,<<,^,&=

C.^,<<,sizeof,&=

D.<<,^,&=,sizeof

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

#includedstdio.h>

#includedstrin9.h>

main

{char*s1="abDuj";

char*s2="ABdUG";

intt;

t=strcmp(s1,s2);

printf("%d",t);

}

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

72.已知數(shù)據(jù)表A中每個(gè)元素距其最終位置不遠(yuǎn),為節(jié)省時(shí)間,應(yīng)采用的算法是()

A.堆排序B.直接插入排序C.快速排序D.直接選擇排序

73.

74.有以下程序

#include<stdio.h>

voidfun(char**p)

{++p;printf("%s",*p);}

main

{char*a[]={"Morning","Afternoon","Evening","Night");

fun(a);

}

程序的運(yùn)行結(jié)果是()。A.A.AfternoonB.fternoonC.MorningD.orning

75.

76.現(xiàn)有如下程序段:

則程序段的輸出結(jié)果為()。

A.7,8

B.8,8

C.7,10

D.8,10

77.下列能正確定義且賦初值的語(yǔ)句是()。

A.intn1=n2=1;

B.charC=99;

C.floatf=f+1;

D.doublex=1.2E5.6;

78.C語(yǔ)言中char類型數(shù)據(jù)占字節(jié)數(shù)為()。

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

79.

80.

五、程序改錯(cuò)題(1題)81.下列給定的程序中,函數(shù)proc的功能是:用選擇法對(duì)數(shù)組中的m個(gè)元素按從小到大的順序進(jìn)行排序。例如,排序前的數(shù)據(jù)為:1132-5214則排序后的數(shù)據(jù)為:-52111432請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#defineM20voidproc(inta[],intn){inti,j,t,P;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論