2021-2022年海南省海口市全國計算機(jī)等級考試C語言程序設(shè)計_第1頁
2021-2022年海南省??谑腥珖嬎銠C(jī)等級考試C語言程序設(shè)計_第2頁
2021-2022年海南省??谑腥珖嬎銠C(jī)等級考試C語言程序設(shè)計_第3頁
2021-2022年海南省海口市全國計算機(jī)等級考試C語言程序設(shè)計_第4頁
2021-2022年海南省??谑腥珖嬎銠C(jī)等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021-2022年海南省??谑腥珖嬎銠C(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后輸出結(jié)果是()。

A.77B.88C.810D.1010

2.有以下程序:voidfun1(char*p){char*q;q=p;while(*q!='\0'){(*q)++;q++;}}main(){chara[]={"Program"),*p;p=&a[3];fun1(p)printf("%s\n",A);}程序執(zhí)行后的輸出結(jié)果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

3.若各選項中所用變量已正確定義,函數(shù)fun中通過return語句返回一個函數(shù)值,下列選項中錯誤的程序是()。

A.main(){…x=fun(2,10);…}floatfun(inta,intB){…}

B.floatfun(inta,intB){…}main(){…x=fun(i,j);…}

C.floatfun(int,int);main(){…x=fun(2,10);…}floatfun(inta,intB){…}

D.main()…{floatfun(inti,intj);…x=fun(i,j);…}floatfun(inta,intB){…}

4.右兩個關(guān)系R和S如下:

則由關(guān)系R得到關(guān)系S的操作是()。A.自然連接B.并C.選擇D.投影

5.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5

6.下列關(guān)于邏輯運(yùn)算符兩側(cè)運(yùn)算對象的敘述中正確的是()。

A.只能是整數(shù)0或1B.只能是整數(shù)0或非0整數(shù)C.可以是結(jié)構(gòu)體類型的數(shù)據(jù)D.可以是任意合法的表達(dá)式

7.下列有關(guān)圖的遍歷說法中,不正確的是()

A.圖的遍歷必須用遞歸實現(xiàn)

B.基本遍歷算法兩種:深度遍歷和廣度遍歷

C.有向圖和無向圖都可以進(jìn)行遍歷操作

D.圖的遍歷算法可以執(zhí)行在有回路的圖上

8.下列選項中不是字符常量的是()。A.A.'\v'

B.'\x2a'

C.'a'

D."\0"

9.設(shè)某文件內(nèi)排序后得到100個初始?xì)w并段(初始順串),若使用多路歸并排序算法,且要求三趟歸并完成排序,問歸并路數(shù)最少為()

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

10.下述關(guān)于C語言文件的操作的結(jié)論中,正確的是______。

A.對文件操作必須先關(guān)閉文件

B.對文件操作必須先打開文件

C.對文件操作順序無要求

D.對文件操作前必須先測文件是否存在,然后再打開文件

11.程序運(yùn)行后的輸出結(jié)果是()。A.10B.11C.20D.21

12.設(shè)有定義“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若變量均已正確賦初值,則下列語句中錯誤的是()。

A.t1=t2;

B.t2.num1=t1.num1;

C.t2.mark=t1.mark;

D.t2.num2=t1.num2;

13.

14.以下語句定義正確的是()A.A.inta[1][4]-{1,2,3,4,5};

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

C.longa[2][3]={{1},{1,2},{1,2,3},{0,0)};

D.doublea[][3]={O);

15.有以下程序#include<stdio.h>structtt(intx;structtt*y;)*P;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main{inti;p=a;for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}}程序的運(yùn)行結(jié)果是()。A.20,30,B.30,17,C.15,30,D.20,15,

16.若有說明:int*p,m=5,n;以下正確的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

C.scanf("%d",&n);*p=n;

D.p=&n;*p=m;

17.設(shè)有序順序表中有n個數(shù)據(jù)元素,則利用二分查找法查找數(shù)據(jù)元素X的最多比較次數(shù)不超過()。A.log2+1

B.log2(n-1)

C.log2n

D.log2(n+1)

18.若有定義“inta,b,c;”,想通過語句“scanf(“%d,%d%d”,&a,&b,&c);”把1、2、3分別賦給變量a、b、c,則正確的鍵盤輸入是()。

A.1,2,3<Enter>

B.1,2<tab>3<Enter>

C.1<Enter><tab>2<tab>3

D.1<Enter>2<Enter>3

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

A.函數(shù)的返回值類型不能是結(jié)構(gòu)體類型,只能是簡單類型

B.函數(shù)可以返回指向結(jié)構(gòu)體變量的指針

C.可以通過指向結(jié)構(gòu)體變量的指針訪問所指結(jié)構(gòu)體變量的任何成員

D.只要類型相同,結(jié)構(gòu)體變量之間可以整體賦值

20.以下程序的輸出結(jié)果是()。main(){inti,a[4][4]一{{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a(chǎn)[O][3],a[1][2],a[2][1],a[3][0];}A.0650B.1470C.5430D.輸出值不定

二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

22.在面向?qū)ο蠓椒ㄖ?,允許作用于某個對象上的操作稱為【】。

23.下面程序中函數(shù)creat用于建立一個帶頭結(jié)點(diǎn)的單向鏈表,新產(chǎn)生的結(jié)點(diǎn)總是插在鏈表的末尾,單向鏈表的頭指針作為函數(shù)值返回。將程序補(bǔ)充完整。

#include<stdiao.h>

structlist

{chardata;structlist*next;};

structlist*creat()

{

structlist*h,*p,*q;charch;

h=【】malloc(sizeof(structlist));

p=q=h;ch=getchar();

while(ch!='?')

{

p=【】malloc(sizeof(structlist));

p->data=ch;q->next=p;q=p;ch=getchar();

}

p->next='\0';

【】;

}

24.在Windows環(huán)境下,可以將窗口最小化為【】。

25.若a=1,b=2,則表達(dá)式!(x=A)‖(y=B)&&0的值是______。

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

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

27.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體"項目主管"與實體"項目"的聯(lián)系屬于【】的聯(lián)系。

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

main()

{

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

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

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

}

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

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6},*k[3],i=1;

while(i<4)

{k[i-1]=&a[2*i-1];

printf("%d",*k[i-1]);

i++;

}

}

30.成本估算模型中,Putnam估算模型是一種【】模型。

31.以下程序通過函數(shù)SunFun求。這里f(x)=x2+l,由F函數(shù)實現(xiàn)。請?zhí)羁铡?/p>

main()

{

printf("Thesum=%d\n",SunFun(10));

}

SunFun(intn)

{

intx,s=0;

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

S+=F(______);

returns;

}

F(intx)

{

return(______);

}

32.下列程序段的運(yùn)行結(jié)果是______。

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

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

#defineP(A)printf("%d",A)

main()

{intj,a[]={1,2,3,4,5,6,7),i=5;

for(j=3;j>1;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

34.數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和______三種。

35.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。

36.已知字母A的ASCII碼為65。以下程序運(yùn)行后的輸出結(jié)果是______。

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

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

}

37.若有程序

main()

{inti,j;

scanf("i=%d,j=%d",&i,&j);

pfintf("i=%d,j=%d\n",i,j);

}

要求給i賦10,給j賦20,則應(yīng)該從鍵盤輸入【】。

38.一個關(guān)系表的行稱為()。

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

40.設(shè)變量已正確定義為整型,則表達(dá)式n=i=2,++i,i++的值為【】。

三、1.選擇題(20題)41.若有以下定義的語句:structstudent{intage;intnum;};structstudentstu[3]={{1001,20},{1002,19},{1003,21}};main(){structstudent*p;p=stu;…}則以下不正確的引用是()。

A.(p++)->numB.p++C.(*p).numD.P=&stu.age.

42.已定義以下函數(shù):fun(char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}此函數(shù)的功能是()。

A.將P1所指字符串復(fù)制到p2所指內(nèi)存空間,

B.將p1所指字符串的地址賦給指針p2

C.對p1和p2兩個指針?biāo)缸址M(jìn)行比較

D.檢查p1和p2兩個指針?biāo)缸址惺欠裼?\0'

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

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

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

A.log2n

B.n2

C.O(n1.5)

D.n(n-1)/2

45.在C語言中,下列關(guān)于文件操作的敘述正確的是()。

A.對文件操作必須先關(guān)閉文件B.對文件操作必須先打開文件C.對文件操作順序沒有統(tǒng)一規(guī)定D.以上全錯

46.在單鏈表中,增加頭結(jié)點(diǎn)的目的是______。

A.方便運(yùn)算的實現(xiàn)B.使單鏈表至少有一個結(jié)點(diǎn)C.標(biāo)識表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置D.說明單鏈表是線性表的鏈?zhǔn)酱鎯崿F(xiàn)

47.設(shè)有定義:intn1=0,n2,*p=&n2,*q=&n1;,下列賦值語句中與n2=n1;語句等價的是()。

A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;

48.下面的程序執(zhí)行后,文件test.t中內(nèi)容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"W");for(i=0;i<strlen(st);i++)foutc(st[i]myf;fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}

A.hello,B.newworldhelloC.newworldD.hello,rid

49.以下敘述中正確的是

A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

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

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

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

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

A.sizeof,&=,<<,^

B.sizeof,<<,^,&=

C.^,<<,sizeof,&=

D.<<,^,&=,sizeof

51.有以下程序

main()

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

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

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

52.在c語言中,變量的隱含存儲類別是()。

A.autoB.staticC.externD.無存儲類別

53.設(shè)有定義:inta,*pa=&a;以下scanf語句中能正確為變量a讀入數(shù)據(jù)的是()。

A.scanf("%d",pA);

B.scanf("%d",A);

C.scanf("%d",&pA);

D.seanf("%d",*pA);

54.已知在ASCⅡ代碼中,字母A的序號為65,以下程序的輸出結(jié)果是______。#include<stdio.h>main(){charc1='A',c2='Y';printf("%d,%d\n",c1,c2);}

A.65,90B.因輸出格式不合法,輸出錯誤信息C.A,YD.65,89

55.下列設(shè)備不是輸出設(shè)備的是______。

A.顯示器B.打印機(jī)C.繪圖儀D.掃描儀

56.使計算機(jī)病毒傳播范圍最廣的媒介是________

A.硬磁盤B.軟磁盤C.內(nèi)部存儲器D.互聯(lián)網(wǎng)

57.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點(diǎn)訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

58.下面程序段中c的二進(jìn)制值是______。chara=3,b=6,c;c=a^b<<1;

A.1011B.1111C.11110D.11100

59.簡單的交換排序方法是()。

A.快速排序B.選擇排序C.堆排序D.冒泡排序

60.C語言庫函數(shù)fgets(str,n,fg)的功能是_______。

A.從中指向的文件中讀取長度n的字符串存入str指向的內(nèi)存

B.從fp指向的文件中讀取長度不超過n-1的字符串存入str指向的內(nèi)存

C.從fp指向的文件中讀取n個字符串存入str指向的內(nèi)存

D.從sb讀取至多n個字符到文件fp

四、選擇題(20題)61.

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

A.c語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行

B.可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)拇碎_始執(zhí)行

C.c語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行、

D.main的各種大小寫拼寫形式都可以作為主函數(shù)名,如MAIN,Main等

63.要求以下程序的功能是計算:s=1+1/2+1/3+…+1/100。

程序運(yùn)行后輸出結(jié)果錯誤,導(dǎo)致錯誤結(jié)果的程序行是()。

A.s=1.0;

B.

C.S=S+1/n;

D.

64.

65.

66.

67.以下選項中關(guān)于C語言常量的敘述錯誤的是()。

A.經(jīng)常被陡用的變量可以定義成常量

B.常量分為整型常量、實型常量、字符常量和字符串常量

C.常量可分為數(shù)值型常量和非數(shù)值型常量

D.所謂常量,是指在程序運(yùn)行過程中,其值不能被改變的量

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

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

69.有兩個關(guān)系R、S如下:

由關(guān)系R通過運(yùn)算得到關(guān)系s,則所使用的運(yùn)算為()。

A.選擇B.投影C.插入D.連接

70.

71.設(shè)有如下說明

typedefstruct

{intnumber;charclass;doublescore;}student;

則以下選項中,能正確定義結(jié)構(gòu)體數(shù)組并賦初值的語句是()。

A.studenttt[2]={{189,’A’,62},{190,’B’,75}};

B.studenttt[2]={189,’"A",62,190,"B",75};

C.structtt[2]={{189,’A’},{190,’B’}};

D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};

72.在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。

A.人工管理階段B.文件系統(tǒng)階段C.數(shù)據(jù)庫系統(tǒng)階段D.三個階段相同

73.若有說明“chars1[30]="abc",s2[]="defghi";",則在使用函數(shù)stoat(s1,s2)后,結(jié)果是()。A.A.s1的內(nèi)容更新為abcdefghiB.s1的內(nèi)容更新為defghi\0

C.s1的內(nèi)容更新勾defghiabc\0

D.s1的內(nèi)容更新為abcdefghi\0

74.

75.設(shè)有以下定義inta=0;doubleb=1.25;charc=’A’;#defined2則下面語句中錯誤的是()

A.a++;B.b++C.c++;D.d++;

76.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A.軟件集成測試計劃B.軟件詳細(xì)設(shè)計說明書C.用戶手冊D.軟件需求規(guī)格說明書

77.有如下程序main(){chars[][5]={"abc","de","fgh"};printf("%c",s[2][6]);}其輸出為______。

A.不確定B.編譯錯誤C.gD.輸出null字符

78.

79.一棵二叉樹共有25個結(jié)點(diǎn),其中5個是葉子結(jié)點(diǎn),則度為l的結(jié)點(diǎn)數(shù)為()。

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

80.有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r分別指向此鏈表中的3個連續(xù)結(jié)點(diǎn)。structnode{

int

data;structnode

*next;

}*p,*q,*r;現(xiàn)要將這個鏈表構(gòu)成一個環(huán),以下(

)操作是正確的。A.p->next=q->nextB.r->next=pC.p->next=rD.r->next=q->next->next

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun的功能是:將長整型數(shù)中各位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。

例如,當(dāng)s中的數(shù)為87653142時,t中的數(shù)為7531。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun,其功能是:刪除字符串中所有的*號。編寫函

數(shù)時,不得使用c語言提供的字符串函數(shù)。

例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******刪除*后字符串中的內(nèi)容應(yīng)當(dāng)

是:ABCDEFG。

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

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

參考答案

1.C解析:本題考核的知識點(diǎn)是字符數(shù)組的定義、賦初值以及函數(shù)sizeof()的應(yīng)用。本題中定義兩個字符型數(shù)組,其中a省略了長度,定義了b的長度為10,并賦初值分別為“abcdefg”和“abcdfg”。所以a的長度為賦值給它的字符串的字符個數(shù)7加上一個結(jié)束轉(zhuǎn)義字符,即a的長度為7+1為8.定義時b的長度定義為10,故b的長度為10,因此最后通過函數(shù)sizeof()求得的數(shù)組a和數(shù)組b的長度分別為8和10,所以,4個選項中選項C符合題意。

2.A解析:在函數(shù)fun1()中,首先將形參p的內(nèi)容存入臨時指針q中,然后使用—個while循環(huán),當(dāng)q所指內(nèi)容不是字符串結(jié)束標(biāo)志'\\0\'時,讓q所指內(nèi)容增1,然后將指針q增1指向下一個位置。所以函數(shù)fun1()實現(xiàn)的功能是:將傳入字符串的所有字符自增1。主函數(shù),指針p在被傳入fun1()函數(shù)之前,初始化指向的是寧符數(shù)組a的第4個元素\'g\',所以最終輸出的結(jié)果應(yīng)該是Prohsbn。故應(yīng)該選擇A。

3.A在調(diào)用函數(shù)時,應(yīng)對其進(jìn)行說明。A選項中,調(diào)用時沒有對函數(shù)進(jìn)行說明。B、C選項中,被調(diào)用函數(shù)在主調(diào)函數(shù)之前定義,不用說明。D選項中,在主函數(shù)中對被調(diào)用函數(shù)的返回值類型進(jìn)行了說明。故本題答案為A選項。

4.C選擇:是在數(shù)據(jù)表中給予一定的條件進(jìn)行篩選數(shù)據(jù)。投影:是把表中的某幾個屬性的數(shù)據(jù)選擇出來。連接:有自然連接、外連接,內(nèi)連接等,連接主要用于多表之間的數(shù)據(jù)查詢。并:與數(shù)學(xué)中的并是一樣的。兩張表進(jìn)行并操作,要求它們的屬性個數(shù)相同并且需要相容。

5.A依據(jù)fun函數(shù),可知其要實現(xiàn)的功能是將S中第(t+1)個元素以前的元素逆置賦給數(shù)組P。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,main函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)x,最后輸出x數(shù)組。

6.D解析:邏輯運(yùn)算符兩側(cè)的運(yùn)算對象可以是任意合法的表達(dá)式。邏輯表達(dá)式的運(yùn)算結(jié)果或者為1(“真”),或者為0(“假”)。

7.A

8.Dc語言規(guī)定,一個字符常量代表ASCII碼字符集里的一個字符,在群序中用單引號括起來,以便區(qū)分。'\v'表示的是豎向跳格:'kx2a'表示的是兩位十六迸制數(shù);'a'表示的是字符a對應(yīng)的ASCII碼值。"\0"用雙引號故不正確。

9.A

10.B解析:在C中對文件操作必須先打開文件,待文件操作完畢后要關(guān)閉文件。對文件以讀的方式進(jìn)行打開操作時,同時會執(zhí)行文件的檢查文件是否存在,不存在將會返回空的文件指針,如果對文件以寫的方式打開時,文件不存在,將會自動創(chuàng)建文件,因此在C中打開文件前不必對其檢查文件是否存在,故答案為B。

11.D[解析]聲明data是結(jié)構(gòu)S數(shù)組。初始化data[0].a=10;data[O]b=100;data[1].a=20;data[]b=200.主函數(shù)中p=data[1];即p.a=data[1].a;p.b=data[1].b;執(zhí)行語句prit("%odn",++(pa);打印輸出時p.a先增1再打印。p.a=data\u3000\u3000[1].a=20.先增1等于21.

12.Cmark為結(jié)構(gòu)體中的數(shù)組,不能直接賦值,所以C選項錯誤。故本題答案為C選項。

13.C

14.D本題考查的是如何對二維數(shù)組進(jìn)行賦值。選項A)中數(shù)組第二維的大小是4,但卻給賦了5個元素;選項B)中C語言規(guī)定,對于二維數(shù)組,只可以省略第一個方括號中的常量表達(dá)式而不可以省略第二個方括號中的常量表達(dá)式:選項c)中數(shù)組第一維的大小是2,但是賦值卻超過了2;選項D)中在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0。

15.D程序的結(jié)構(gòu)體數(shù)組a的元素形成了一個單向的循環(huán)鏈表,每個元素的指針成員都指向下一個元素的地址。

16.D解析:“&”是求址運(yùn)算符,“*”是指變量說明符。選項A)、B)應(yīng)改為scanf('%d',p);選項C)中指針變量p未指向一確定的內(nèi)存單元,不能為其賦值,并且這樣做很危險,建議不使用。

17.A

18.B題干中,格式輸入函數(shù)scanf的格式控制字符串中,第1個%d與第2個%d之間有一個逗號。所以輸入的第1個整數(shù)和第2個整數(shù)之間必須要有一個逗號,選項C、D錯誤;輸入的第2個整數(shù)和第3個整數(shù)之間需要間隔符,可以使用<Tab>鍵、<Enter>鍵、空格符。故本題答案為B選項。

19.A函數(shù)返回值類型可以是簡單類型和結(jié)構(gòu)體類型。

20.A當(dāng)所賦的值不夠其列的寬度時,系統(tǒng)在其后自動補(bǔ)0,因此a[0][3]=0,a[1][2]=6,a[2][1]=5,a[3][0]=0,故選擇A選項。

21.3535解析:函數(shù)swap(int*a,int*b)的功能是實現(xiàn)*a和*b中兩個數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。

22.方法方法解析:在面向?qū)ο蠓椒ㄖ校椒ㄊ侵冈试S作用于某個對象上的各種操作。

23.(structlist*)(structlist*)return(h)

24.圖標(biāo)或按鈕圖標(biāo)或按鈕

25.00解析:根據(jù)運(yùn)算符的運(yùn)算順序可知,該表達(dá)式最后運(yùn)算的是與(&&)運(yùn)算,而任何表達(dá)式與“0”進(jìn)行“與”運(yùn)算,結(jié)果都為0。

26.99解析:本題要輸出的結(jié)果是字符串'IBM\\n012\\1\\\\'的長度,'IBM'是3個字符,\'\\n\'是1個字符,'012'又是3個字符,最后的\'\\1\'和\'\\\\\'都是1個字符。所以最終字符串的長度應(yīng)該是3+1+3+1+1=9。故本題應(yīng)該填9。

27.一對多(或1∶N)一對多(或1∶N)解析:兩個實體集間的聯(lián)系實際上是實體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有3種,即一對一(1∶1)的聯(lián)系、一對多(1∶N)或多對一(N∶1)的聯(lián)系和多對多(N∶N)的聯(lián)系。

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

29.246

30.動態(tài)多變量動態(tài)多變量

31.xX*X+1或1+x*xx\r\nX*X+1或1+x*x解析:題目中要求從x=0開始將f(x)的值累加起來,直到x=10。在SunFun()函數(shù)中用了一個for循環(huán),每循環(huán)一次將f(x)累加到s中,所以在本題的第一個空格處我們應(yīng)該填x,,然后x+1,共循環(huán)10次。F()函數(shù)的功能應(yīng)該是求數(shù)學(xué)表達(dá)式f(x)得值,所以其返回值應(yīng)該為x*x+1。

32.8208,20解析:本題考查while循環(huán)和++運(yùn)算符的運(yùn)用。x=0符合條件x<15,則執(zhí)行y++,x+=++y后,y=1,x=0+2=2后y=2,符合條件繼續(xù)循環(huán),y=3,x=x+4=6后y=4,再循環(huán)y=5,x=x+6=6+6=12后,y=6,繼續(xù)循環(huán)y=7,x=x+8=12+8-20,此時y=8。

33.5555解析:分析程序執(zhí)行過程,第一次循環(huán)時,j=3,i=5。因為switch(3),所以執(zhí)行case3,調(diào)用P(a[--i])=P(a[4])=P(5),輸出5;第二次循環(huán)時,j=2,i=4,因為switch(2),所以執(zhí)行case2,調(diào)用P(a[i++])-P(a[4])=P(5),輸出5,之后i自加等于5。

34.關(guān)系模型關(guān)系模型

35.非線性結(jié)構(gòu)非線性結(jié)構(gòu)

36.67G67G解析:字符型變量中保存的是某個字符的ASCII碼值,是一個整數(shù),因此字符型變量的算術(shù)運(yùn)算和整型變量并無區(qū)別。所以。a='A'+'5'-'3'='A'+('5'='3')='A'+2=65+2=67:b=a+'6'='2'='C'+('6'-'2')='C'+4='G'。最后分別按十進(jìn)制整數(shù)和字符形式輸出a和b的值為:67G。

37.i=0j=20i=0,j=20解析:scanf()函數(shù)的使用,該函數(shù)的第一個參數(shù)是格式字符串,主要由兩類字符組成,一類是非格式符要求原樣輸入,一類是格式符對應(yīng)要輸入的變量,所以說本題中應(yīng)該原樣輸入i=,j=,后面分別給變量0和20,所以說空格處應(yīng)該填入i=0,j=20。

38.元組元組解析:一個關(guān)系表中的行稱為元組,列稱為屬性。

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

40.33解析:本題考查的是C語言逗號表達(dá)式的相關(guān)知識。程序在計算逗號表達(dá)式時,從左到右計算由逗號分隔各表達(dá)式的值,整個逗號表達(dá)式的值等于其中最后一個表達(dá)式的值。本題中,首先i被賦值為2,再自加1,最后i++的值計算為3。

41.D解析:結(jié)構(gòu)體成員的引用可以用“結(jié)構(gòu)體變量名.成員名”或者“結(jié)構(gòu)體變量指針->成員名”兩種方式來引用。注意:結(jié)構(gòu)體類型的變量、數(shù)組和指針變量的定義。

42.A解析:本題中的while((*p2=*p1)!='\\0')語句首先進(jìn)行賦值*p2=*p1,即把p1所指存儲單元的字符逐一復(fù)制到p2所指存儲單元中,然后判斷p1所指單元內(nèi)容是否為'\\0',若判斷條件成立,則指針p1和p2依次指向下一個字符,繼續(xù)執(zhí)行循環(huán)體語句,否則循環(huán)終止。

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

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

45.B解析:本題考查對文件的操作。文件打開后才可以對文件進(jìn)行操作,使用結(jié)束后要關(guān)閉文件。對文件的操作都是順序讀寫,即從文件的第一個數(shù)據(jù)開始,依次進(jìn)行讀寫。

46.A\nA。【解析】頭結(jié)點(diǎn)不僅標(biāo)識了表中首結(jié)點(diǎn)的位置,而且根據(jù)單鏈表(包含頭結(jié)點(diǎn))的結(jié)構(gòu),只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結(jié)點(diǎn)的目的是為了便于運(yùn)算的實現(xiàn)。

\n

47.A解析:在定義指針變量p和q時,分別把變量n2和n1的地址賦給了指針變量p和q,所以*p和*q中內(nèi)容就分別是變量n2和n1的值,所以語句*p=*q與語句n2=n1等價。因此選項A)正確。

48.A解析:C語言中文件有文本文件與二進(jìn)制文件,對文件的使用前必須先打開,打開方式有只讀、寫入、讀寫等方式。

49.C算法具有的5個特性是:有窮性、確定性、可行性、有0個或多個輸入、有一個或多個輸出。所以說,用C程序?qū)崿F(xiàn)的算法可以沒有輸入,但必須要有輸出。因此本題答案選C。

50.B解析:關(guān)系運(yùn)算符<,<=,>,>=的優(yōu)先級別相同,且高于==,!=兩種運(yùn)算符的級別。運(yùn)算符的優(yōu)先級別是:算術(shù)運(yùn)算符優(yōu)先級別最高,關(guān)系運(yùn)算符次之,賦值運(yùn)算符最低。

51.88解析:*p=&a[3],即*p=4,*q=p+2;即*q=6,所以*p+*q=10。

52.A解析:auto變量:無static聲明的局部變量。用auto作存儲類別的聲明時,可以不寫auto,存儲類別隱含確定為auto(自動存儲類別),是動態(tài)存儲方式。大多數(shù)變量是自動變量。用static聲明的局部變量是靜態(tài)局部變量。函數(shù)調(diào)用結(jié)束后靜態(tài)局部變量占據(jù)的內(nèi)存存儲單元空間不釋放,局部變量保留原值,下次調(diào)用時可以繼續(xù)使用該值。用extern聲明外部變量,外部變量即全局變量,可以用extern聲明來改變?nèi)肿兞康淖饔糜?實際上,關(guān)鍵字'auto'可以省略,auto不寫則隱含確定為'自動存儲類別',屬于動態(tài)存儲方式。

53.A解析:本題中定義了整型變量a和一個指向整型數(shù)據(jù)的指針變量pa,并定義pa是一個存放a的地址的變量。選項B是應(yīng)該將a改為&a,故選項B不正確;選項c應(yīng)該將&pa改為pa,因為pa已經(jīng)表示存放:的地址,故選項C不正確:選項D中*pa表示的是指針p8所指向存儲空間的變量的值,而不是一個地址,故選項D不正確,所以,4個選項十選項A符合題意。

54.D解析:在C語言中,將一字符常量賦值給一個變量,是把此字符常量所對應(yīng)的ASCII碼值賦值給此字符變量,所以一個字符既可作為字符形式輸出,也可以整數(shù)形式輸出。

55.D解析:掃描儀屬于輸入設(shè)備。

56.D

57.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結(jié)點(diǎn);③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結(jié)點(diǎn);②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點(diǎn)。根據(jù)前序遍歷的結(jié)果可知,a是根結(jié)點(diǎn)。由中序遍歷的結(jié)果dgbaechf可知,d、g、b是左子樹的結(jié)點(diǎn),e、c、h、f是右子樹的結(jié)點(diǎn)。再由前序遍歷的結(jié)果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結(jié)果dgb可知,d、g是b左邊子樹的結(jié)點(diǎn),b右邊子樹無結(jié)點(diǎn)。再由前序遍歷結(jié)果dg可知,d為b左子樹的根,g是以d為根的子樹的右結(jié)點(diǎn)。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結(jié)點(diǎn)位置。所以可知后序遍歷的結(jié)果是D。

58.B解析:C語言提供六種位運(yùn)算符,按優(yōu)先級由高到低的順序分別為:取反(~)、左移(<<)和右移(>>)、按位與(&)、按位異或(∧)、按位或(|)。所以表達(dá)式c=a^b<<1先運(yùn)算b<<1得二進(jìn)制值為00001100,再運(yùn)算a∧00001100,最后得二進(jìn)制值00001111。

59.D解析:所謂的交換類排序方法是指借助數(shù)據(jù)元素之間的互相交換進(jìn)行排序的一種方法,包括冒泡排序和快速排序,冒泡排序是一種最簡單的交換排序方法,它通過相鄰元素的交換,逐步將線性表變成有序。

60.B解析:fgets函數(shù)的作用是從指定的文件讀入一個字符串。fgets(str,n,fp);中的n為要求得到的字符的個數(shù),但只從fp指向的文件輸入n-1個字符,然后在最后加一個‘\\0’字符,因此得到的字符串共有n個字符。

61.D

62.AC語言中的主函數(shù)只能是main()函數(shù),不能任意指定,所以B選項錯誤。C語言從主函數(shù)main()開始,到主函數(shù)main()結(jié)束,所以C選項錯誤。主函數(shù)必須寫成小寫的main,不能混淆大小寫,所以D選項錯誤。

63.C本題的考查點(diǎn)是查找程序運(yùn)行錯誤的原因。主要考查運(yùn)算中字符的轉(zhuǎn)換。初看此題,可能不太容易發(fā)現(xiàn)錯誤,該題的運(yùn)行結(jié)果是1.0000,算法錯誤。s=s+1/n;1/2=0,因為n為整型,所以1/n都為0。這就是導(dǎo)致本題出錯的原因。s=s+1/n應(yīng)改為s=s+1.0/n。

64.C

65.B

66.B

67.A常量是在程序運(yùn)行時,其值不能被改變的量,跟是否經(jīng)常使用沒關(guān)系.

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

69.B解析:專門的關(guān)系運(yùn)算包括:選擇、投影和連接。1、選擇:從關(guān)系中找出滿足給定條件的元組的操作稱為選擇。選擇是從行的角度進(jìn)行的運(yùn)算,即從水平方向抽取記錄。2、投影:從關(guān)系模式中指定若干個屬性組成新的關(guān)系。投影是從列的角度進(jìn)行的運(yùn)算,相當(dāng)于對關(guān)系進(jìn)行垂直分解。3、連接:連接是關(guān)系的橫向結(jié)合。連接運(yùn)算將兩個關(guān)系模式拼接成一個更寬的關(guān)系模式,生成的新關(guān)系中包含滿足連接條件的元組。連接過程是通過連接條件來控制的,連接條件中將出現(xiàn)兩個表中的公共屬性名,或者具有相同語義、可比的屬性。選擇和投影運(yùn)算的操作對象只是一個表。相當(dāng)于對一個二維表進(jìn)行切割。連接運(yùn)算需要兩個表操作為操作對象。由圖可知關(guān)系R通過運(yùn)算得到關(guān)系S。關(guān)系S與關(guān)系R相比,記錄的條數(shù)沒有發(fā)生變化,屬性的個數(shù)發(fā)生了變化。因此所使用的運(yùn)算應(yīng)該是投影。選項C插入運(yùn)算會增加記錄的條數(shù)。所以選項B是正確的。

70.A

71.AB項定義格式不對,tt[2]只有兩個元素,C項缺少了結(jié)構(gòu)體名,而結(jié)構(gòu)體名不可少,D項一樣缺少了結(jié)構(gòu)體名。

72.C數(shù)據(jù)管理發(fā)展至今已經(jīng)歷了三個階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中最后一個階段結(jié)構(gòu)簡單,使用方便邏輯性強(qiáng)物理性少,在各方面的表現(xiàn)都最好,一直占據(jù)數(shù)據(jù)庫領(lǐng)域的主導(dǎo)地位,所以選擇C)。

73.Dstrcat(s1,s2)函數(shù)的功能是把s2字符串連接到s1字符串的末尾,要保證s1有足夠的空間容納下連接后的字符串。

74.B

75.D++是自增運(yùn)算符,作用是使變量的值增加1,選項D中的d不是變量,而是一個標(biāo)識符,它代表常量2,常量是不允許進(jìn)行自增運(yùn)算的。故本題答案為D。

76.D需求分析階段的工作可以概括為:需求獲取、需求分析、編寫需求規(guī)格說明書、需求評審四個方面。所以選擇D。

77.A解析:由于s[2][6]表示字符串已超出了數(shù)組s的表示范圍,在C中不會劉數(shù)組越界進(jìn)行檢查,當(dāng)數(shù)組越界時,會得到一個不確定的值。

78.B

79.A根據(jù)二叉樹的性質(zhì),n=n0+n1+n2(n表示總結(jié)點(diǎn)數(shù),n0表示葉子結(jié)點(diǎn)數(shù),nl表示度數(shù)為1的結(jié)點(diǎn)數(shù),n2表示度數(shù)為2的結(jié)點(diǎn)數(shù)),而葉子結(jié)點(diǎn)數(shù)總是比度數(shù)為2的結(jié)點(diǎn)數(shù)多1,所以n2=n1-1=5-1=4,而n=25,所以nl=n-n0-n2=25-5-4=16。

80.B要想將鏈表構(gòu)成一個環(huán),需要r指向的節(jié)點(diǎn)的next指針(指向下一節(jié)點(diǎn))指向p所指向的節(jié)點(diǎn),即將p的值賦給next.

81.

(1)}t=0;

(2)if(d%21=0)或if(d%2==1)

【考點(diǎn)分析】

本題考查:指針型變量作為函數(shù)參數(shù);if語句條件表達(dá)式,結(jié)合奇偶數(shù)的表示方法來確定該表達(dá)式內(nèi)容。

【解題思路】

(1)由函數(shù)定義可知,變量t是指針變量,所以對t進(jìn)行賦初值0是不對的。因為t指向的是存放新數(shù)的變量,所以此處應(yīng)給新數(shù)賦初值0,即。t=0。

(2)變量d表示數(shù)S各個位上的數(shù),此處的if條件應(yīng)為判斷d是否為奇數(shù)。

82.

【考點(diǎn)分析】

要刪除字符串中所有*號需要用循環(huán)語句遍歷字符串,用

判斷語句判斷字符是否為*號,由此可以決定該程序應(yīng)使用循

環(huán)判斷結(jié)構(gòu)。

【解題思路】

2021-2022年海南省??谑腥珖嬎銠C(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后輸出結(jié)果是()。

A.77B.88C.810D.1010

2.有以下程序:voidfun1(char*p){char*q;q=p;while(*q!='\0'){(*q)++;q++;}}main(){chara[]={"Program"),*p;p=&a[3];fun1(p)printf("%s\n",A);}程序執(zhí)行后的輸出結(jié)果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

3.若各選項中所用變量已正確定義,函數(shù)fun中通過return語句返回一個函數(shù)值,下列選項中錯誤的程序是()。

A.main(){…x=fun(2,10);…}floatfun(inta,intB){…}

B.floatfun(inta,intB){…}main(){…x=fun(i,j);…}

C.floatfun(int,int);main(){…x=fun(2,10);…}floatfun(inta,intB){…}

D.main()…{floatfun(inti,intj);…x=fun(i,j);…}floatfun(inta,intB){…}

4.右兩個關(guān)系R和S如下:

則由關(guān)系R得到關(guān)系S的操作是()。A.自然連接B.并C.選擇D.投影

5.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5

6.下列關(guān)于邏輯運(yùn)算符兩側(cè)運(yùn)算對象的敘述中正確的是()。

A.只能是整數(shù)0或1B.只能是整數(shù)0或非0整數(shù)C.可以是結(jié)構(gòu)體類型的數(shù)據(jù)D.可以是任意合法的表達(dá)式

7.下列有關(guān)圖的遍歷說法中,不正確的是()

A.圖的遍歷必須用遞歸實現(xiàn)

B.基本遍歷算法兩種:深度遍歷和廣度遍歷

C.有向圖和無向圖都可以進(jìn)行遍歷操作

D.圖的遍歷算法可以執(zhí)行在有回路的圖上

8.下列選項中不是字符常量的是()。A.A.'\v'

B.'\x2a'

C.'a'

D."\0"

9.設(shè)某文件內(nèi)排序后得到100個初始?xì)w并段(初始順串),若使用多路歸并排序算法,且要求三趟歸并完成排序,問歸并路數(shù)最少為()

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

10.下述關(guān)于C語言文件的操作的結(jié)論中,正確的是______。

A.對文件操作必須先關(guān)閉文件

B.對文件操作必須先打開文件

C.對文件操作順序無要求

D.對文件操作前必須先測文件是否存在,然后再打開文件

11.程序運(yùn)行后的輸出結(jié)果是()。A.10B.11C.20D.21

12.設(shè)有定義“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若變量均已正確賦初值,則下列語句中錯誤的是()。

A.t1=t2;

B.t2.num1=t1.num1;

C.t2.mark=t1.mark;

D.t2.num2=t1.num2;

13.

14.以下語句定義正確的是()A.A.inta[1][4]-{1,2,3,4,5};

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

C.longa[2][3]={{1},{1,2},{1,2,3},{0,0)};

D.doublea[][3]={O);

15.有以下程序#include<stdio.h>structtt(intx;structtt*y;)*P;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main{inti;p=a;for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}}程序的運(yùn)行結(jié)果是()。A.20,30,B.30,17,C.15,30,D.20,15,

16.若有說明:int*p,m=5,n;以下正確的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

C.scanf("%d",&n);*p=n;

D.p=&n;*p=m;

17.設(shè)有序順序表中有n個數(shù)據(jù)元素,則利用二分查找法查找數(shù)據(jù)元素X的最多比較次數(shù)不超過()。A.log2+1

B.log2(n-1)

C.log2n

D.log2(n+1)

18.若有定義“inta,b,c;”,想通過語句“scanf(“%d,%d%d”,&a,&b,&c);”把1、2、3分別賦給變量a、b、c,則正確的鍵盤輸入是()。

A.1,2,3<Enter>

B.1,2<tab>3<Enter>

C.1<Enter><tab>2<tab>3

D.1<Enter>2<Enter>3

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

A.函數(shù)的返回值類型不能是結(jié)構(gòu)體類型,只能是簡單類型

B.函數(shù)可以返回指向結(jié)構(gòu)體變量的指針

C.可以通過指向結(jié)構(gòu)體變量的指針訪問所指結(jié)構(gòu)體變量的任何成員

D.只要類型相同,結(jié)構(gòu)體變量之間可以整體賦值

20.以下程序的輸出結(jié)果是()。main(){inti,a[4][4]一{{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a(chǎn)[O][3],a[1][2],a[2][1],a[3][0];}A.0650B.1470C.5430D.輸出值不定

二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

22.在面向?qū)ο蠓椒ㄖ?,允許作用于某個對象上的操作稱為【】。

23.下面程序中函數(shù)creat用于建立一個帶頭結(jié)點(diǎn)的單向鏈表,新產(chǎn)生的結(jié)點(diǎn)總是插在鏈表的末尾,單向鏈表的頭指針作為函數(shù)值返回。將程序補(bǔ)充完整。

#include<stdiao.h>

structlist

{chardata;structlist*next;};

structlist*creat()

{

structlist*h,*p,*q;charch;

h=【】malloc(sizeof(structlist));

p=q=h;ch=getchar();

while(ch!='?')

{

p=【】malloc(sizeof(structlist));

p->data=ch;q->next=p;q=p;ch=getchar();

}

p->next='\0';

【】;

}

24.在Windows環(huán)境下,可以將窗口最小化為【】。

25.若a=1,b=2,則表達(dá)式!(x=A)‖(y=B)&&0的值是______。

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

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

27.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體"項目主管"與實體"項目"的聯(lián)系屬于【】的聯(lián)系。

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

main()

{

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

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

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

}

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

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6},*k[3],i=1;

while(i<4)

{k[i-1]=&a[2*i-1];

printf("%d",*k[i-1]);

i++;

}

}

30.成本估算模型中,Putnam估算模型是一種【】模型。

31.以下程序通過函數(shù)SunFun求。這里f(x)=x2+l,由F函數(shù)實現(xiàn)。請?zhí)羁铡?/p>

main()

{

printf("Thesum=%d\n",SunFun(10));

}

SunFun(intn)

{

intx,s=0;

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

S+=F(______);

returns;

}

F(intx)

{

return(______);

}

32.下列程序段的運(yùn)行結(jié)果是______。

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

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

#defineP(A)printf("%d",A)

main()

{intj,a[]={1,2,3,4,5,6,7),i=5;

for(j=3;j>1;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

34.數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和______三種。

35.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。

36.已知字母A的ASCII碼為65。以下程序運(yùn)行后的輸出結(jié)果是______。

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

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

}

37.若有程序

main()

{inti,j;

scanf("i=%d,j=%d",&i,&j);

pfintf("i=%d,j=%d\n",i,j);

}

要求給i賦10,給j賦20,則應(yīng)該從鍵盤輸入【】。

38.一個關(guān)系表的行稱為()。

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

40.設(shè)變量已正確定義為整型,則表達(dá)式n=i=2,++i,i++的值為【】。

三、1.選擇題(20題)41.若有以下定義的語句:structstudent{intage;intnum;};structstudentstu[3]={{1001,20},{1002,19},{1003,21}};main(){structstudent*p;p=stu;…}則以下不正確的引用是()。

A.(p++)->numB.p++C.(*p).numD.P=&stu.age.

42.已定義以下函數(shù):fun(char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}此函數(shù)的功能是()。

A.將P1所指字符串復(fù)制到p2所指內(nèi)存空間,

B.將p1所指字符串的地址賦給指針p2

C.對p1和p2兩個指針?biāo)缸址M(jìn)行比較

D.檢查p1和p2兩個指針?biāo)缸址惺欠裼?\0'

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

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

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

A.log2n

B.n2

C.O(n1.5)

D.n(n-1)/2

45.在C語言中,下列關(guān)于文件操作的敘述正確的是()。

A.對文件操作必須先關(guān)閉文件B.對文件操作必須先打開文件C.對文件操作順序沒有統(tǒng)一規(guī)定D.以上全錯

46.在單鏈表中,增加頭結(jié)點(diǎn)的目的是______。

A.方便運(yùn)算的實現(xiàn)B.使單鏈表至少有一個結(jié)點(diǎn)C.標(biāo)識表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置D.說明單鏈表是線性表的鏈?zhǔn)酱鎯崿F(xiàn)

47.設(shè)有定義:intn1=0,n2,*p=&n2,*q=&n1;,下列賦值語句中與n2=n1;語句等價的是()。

A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;

48.下面的程序執(zhí)行后,文件test.t中內(nèi)容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"W");for(i=0;i<strlen(st);i++)foutc(st[i]myf;fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}

A.hello,B.newworldhelloC.newworldD.hello,rid

49.以下敘述中正確的是

A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

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

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

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

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

A.sizeof,&=,<<,^

B.sizeof,<<,^,&=

C.^,<<,sizeof,&=

D.<<,^,&=,sizeof

51.有以下程序

main()

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

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

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

52.在c語言中,變量的隱含存儲類別是()。

A.autoB.staticC.externD.無存儲類別

53.設(shè)有定義:inta,*pa=&a;以下scanf語句中能正確為變量a讀入數(shù)據(jù)的是()。

A.scanf("%d",pA);

B.scanf("%d",A);

C.scanf("%d",&pA);

D.seanf("%d",*pA);

54.已知在ASCⅡ代碼中,字母A的序號為65,以下程序的輸出結(jié)果是______。#include<stdio.h>main(){charc1='A',c2='Y';printf("%d,%d\n",c1,c2);}

A.65,90B.因輸出格式不合法,輸出錯誤信息C.A,YD.65,89

55.下列設(shè)備不是輸出設(shè)備的是______。

A.顯示器B.打印機(jī)C.繪圖儀D.掃描儀

56.使計算機(jī)病毒傳播范圍最廣的媒介是________

A.硬磁盤B.軟磁盤C.內(nèi)部存儲器D.互聯(lián)網(wǎng)

57.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點(diǎn)訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

58.下面程序段中c的二進(jìn)制值是______。chara=3,b=6,c;c=a^b<<1;

A.1011B.1111C.11110D.11100

59.簡單的交換排序方法是()。

A.快速排序B.選擇排序C.堆排序D.冒泡排序

60.C語言庫函數(shù)fgets(str,n,fg)的功能是_______。

A.從中指向的文件中讀取長度n的字符串存入str指向的內(nèi)存

B.從fp指向的文件中讀取長度不超過n-1的字符串存入str指向的內(nèi)存

C.從fp指向的文件中讀取n個字符串存入str指向的內(nèi)存

D.從sb讀取至多n個字符到文件fp

四、選擇題(20題)61.

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

A.c語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行

B.可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)拇碎_始執(zhí)行

C.c語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行、

D.main的各種大小寫拼寫形式都可以作為主函數(shù)名,如MAIN,Main等

63.要求以下程序的功能是計算:s=1+1/2+1/3+…+1/100。

程序運(yùn)行后輸出結(jié)果錯誤,導(dǎo)致錯誤結(jié)果的程序行是()。

A.s=1.0;

B.

C.S=S+1/n;

D.

64.

65.

66.

67.以下選項中關(guān)于C語言常量的敘述錯誤的是()。

A.經(jīng)常被陡用的變量可以定義成常量

B.常量分為整型常量、實型常量、字符常量和字符串常量

C.常量可分為數(shù)值型常量和非數(shù)值型常量

D.所謂常量,是指在程序運(yùn)行過程中,其值不能被改變的量

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

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

69.有兩個關(guān)系R、S如下:

由關(guān)系R通過運(yùn)算得到關(guān)系s,則所使用的運(yùn)算為()。

A.選擇B.投影C.插入D.連接

70.

71.設(shè)有如下說明

typedefstruct

{intnumber;charclass;doublescore;}student;

則以下選項中,能正確定義結(jié)構(gòu)體數(shù)組并賦初值的語句是()。

A.studenttt[2]={{189,’A’,62},{190,’B’,75}};

B.studenttt[2]={189,’"A",62,190,"B",75};

C.structtt[2]={{189,’A’},{190,’B’}};

D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};

72.在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。

A.人工管理階段B.文件系統(tǒng)階段C.數(shù)據(jù)庫系統(tǒng)階段D.三個階段相同

73.若有說明“chars1[30]="abc",s2[]="defghi";",則在使用函數(shù)stoat(s1,s2)后,結(jié)果是()。A.A.s1的內(nèi)容更新為abcdefghiB.s1的內(nèi)容更新為defghi\0

C.s1的內(nèi)容更新勾defghiabc\0

D.s1的內(nèi)容更新為abcdefghi\0

74.

75.設(shè)有以下定義inta=0;doubleb=1.25;charc=’A’;#defined2則下面語句中錯誤的是()

A.a++;B.b++C.c++;D.d++;

76.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A.軟件集成測試計劃B.軟件詳細(xì)設(shè)計說明書C.用戶手冊D.軟件需求規(guī)格說明書

77.有如下程序main(){chars[][5]={"abc","de","fgh"};printf("%c",s[2][6]);}其輸出為______。

A.不確定B.編譯錯誤C.gD.輸出null字符

78.

79.一棵二叉樹共有25個結(jié)點(diǎn),其中5個是葉子結(jié)點(diǎn),則度為l的結(jié)點(diǎn)數(shù)為()。

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

80.有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r分別指向此鏈表中的3個連續(xù)結(jié)點(diǎn)。structnode{

int

data;structnode

*next;

}*p,*q,*r;現(xiàn)要將這個鏈表構(gòu)成一個環(huán),以下(

)操作是正確的。A.p->next=q->nextB.r->next=pC.p->next=rD.r->next=q->next->next

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun的功能是:將長整型數(shù)中各位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。

例如,當(dāng)s中的數(shù)為87653142時,t中的數(shù)為7531。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun,其功能是:刪除字符串中所有的*號。編寫函

數(shù)時,不得使用c語言提供的字符串函數(shù)。

例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******刪除*后字符串中的內(nèi)容應(yīng)當(dāng)

是:ABCDEFG。

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

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

參考答案

1.C解析:本題考核的知識點(diǎn)是字符數(shù)組的定義、賦初值以及函數(shù)sizeof()的應(yīng)用。本題中定義兩個字符型數(shù)組,其中a省略了長度,定義了b的長度為10,并賦初值分別為“abcdefg”和“abcdfg”。所以a的長度為賦值給它的字符串的字符個數(shù)7加上一個結(jié)束轉(zhuǎn)義字符,即a的長度為7+1為8.定義時b的長度定義為10,故b的長度為10,因此最后通過函數(shù)sizeof()求得的數(shù)組a和數(shù)組b的長度分別為8和10,所以,4個選項中選項C符合題意。

2.A解析:在函數(shù)fun1()中,首先將形參p的內(nèi)容存入臨時指針q中,然后使用—個while循環(huán),當(dāng)q所指內(nèi)容不是字符串結(jié)束標(biāo)志'\\0\'時,讓q所指內(nèi)容增1,然后將指針q增1指向下一個位置。所以函數(shù)fun1()實現(xiàn)的功能是:將傳入字符串的所有字符自增1。主函數(shù),指針p在被傳入fun1()函數(shù)之前,初始化指向的是寧符數(shù)組a的第4個元素\'g\',所以最終輸出的結(jié)果應(yīng)該是Prohsbn。故應(yīng)該選擇A。

3.A在調(diào)用函數(shù)時,應(yīng)對其進(jìn)行說明。A選項中,調(diào)用時沒有對函數(shù)進(jìn)行說明。B、C選項中,被調(diào)用函數(shù)在主調(diào)函數(shù)之前定義,不用說明。D選項中,在主函數(shù)中對被調(diào)用函數(shù)的返回值類型進(jìn)行了說明。故本題答案為A選項。

4.C選擇:是在數(shù)據(jù)表中給予一定的條件進(jìn)行篩選數(shù)據(jù)。投影:是把表中的某幾個屬性的數(shù)據(jù)選擇出來。連接:有自然連接、外連接,內(nèi)連接等,連接主要用于多表之間的數(shù)據(jù)查詢。并:與數(shù)學(xué)中的并是一樣的。兩張表進(jìn)行并操作,要求它們的屬性個數(shù)相同并且需要相容。

5.A依據(jù)fun函數(shù),可知其要實現(xiàn)的功能是將S中第(t+1)個元素以前的元素逆置賦給數(shù)組P。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,main函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)x,最后輸出x數(shù)組。

6.D解析:邏輯運(yùn)算符兩側(cè)的運(yùn)算對象可以是任意合法的表達(dá)式。邏輯表達(dá)式的運(yùn)算結(jié)果或者為1(“真”),或者為0(“假”)。

7.A

8.Dc語言規(guī)定,一個字符常量代表ASCII碼字符集里的一個字符,在群序中用單引號括起來,以便區(qū)分。'\v'表示的是豎向跳格:'kx2a'表示的是兩位十六迸制數(shù);'a'表示的是字符a對應(yīng)的ASCII碼值。"\0"用雙引號故不正確。

9.A

10.B解析:在C中對文件操作必須先打開文件,待文件操作完畢后要關(guān)閉文件。對文件以讀的方式進(jìn)行打開操作時,同時會執(zhí)行文件的檢查文件是否存在,不存在將會返回空的文件指針,如果對文件以寫的方式打開時,文件不存在,將會自動創(chuàng)建文件,因此在C中打開文件前不必對其檢查文件是否存在,故答案為B。

11.D[解析]聲明data是結(jié)構(gòu)S數(shù)組。初始化data[0].a=10;data[O]b=100;data[1].a=20;data[]b=200.主函數(shù)中p=data[1];即p.a=data[1].a;p.b=data[1].b;執(zhí)行語句prit("%odn",++(pa);打印輸出時p.a先增1再打印。p.a=data\u3000\u3000[1].a=20.先增1等于21.

12.Cmark為結(jié)構(gòu)體中的數(shù)組,不能直接賦值,所以C選項錯誤。故本題答案為C選項。

13.C

14.D本題考查的是如何對二維數(shù)組進(jìn)行賦值。選項A)中數(shù)組第二維的大小是4,但卻給賦了5個元素;選項B)中C語言規(guī)定,對于二維數(shù)組,只可以省略第一個方括號中的常量表達(dá)式而不可以省略第二個方括號中的常量表達(dá)式:選項c)中數(shù)組第一維的大小是2,但是賦值卻

溫馨提示

  • 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

提交評論