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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.有以下程序:#include<stdio.h>main(){charx,a=‘A’,b=‘B’,c=‘C’,d=‘D’;x=(a<b)?a:b;x=(x>c)?c:x;x=(d>x)?x:d;printf(“%c\n”,x);}程序運(yùn)行后的輸出結(jié)果是()。

A.DB.BC.CD.A

2.運(yùn)行下列程序時(shí),若輸入的數(shù)據(jù)為“1,2,3”,則輸出結(jié)果是()。main{floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a<b){t=a;a=b.b=t;)if(a<c){t=a;a=c;c=t;)it(b<c){t=b;b=C;c—=;)printf("%f\n%f\n%f\n",a,b,c);}A.1.002.003.00B.1.003.002.00C.132D.3.000002.000001.00000

3.若有以下程序段intm=0xabc,n=0xabc;m-=n;printf("%X\n",m);執(zhí)行后輸出結(jié)果是A.0X0B.0x0C.0D.0XABC

4.若有定義“charc=“hello!”;”,則以下說法正確的是()。

A.c占用7字節(jié)內(nèi)存B.c是一個(gè)字符串變量C.定義中有語法錯(cuò)誤D.c的有效字符個(gè)數(shù)是6

5.對一個(gè)關(guān)系投影操作以后,新關(guān)系的元組個(gè)數(shù)______原來關(guān)系的元組個(gè)數(shù)。

A.小于B.小于或等于C.等于D.大于

6.設(shè)有序表中的元素為(13,18,24,35,47,50,62),則在其中利用二分法查找值為24的元素需要經(jīng)過()次比較容易

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

7.軟件詳細(xì)設(shè)計(jì)的主要任務(wù)是確定每個(gè)模塊的()。

A.算法和使用的數(shù)據(jù)結(jié)構(gòu)B.外部接口C.功能D.編程

8.當(dāng)很頻繁的對序列中部進(jìn)行插入和刪除操作時(shí),應(yīng)該選擇使用的容器是()

A.vectorB.listC.dequeD.stack

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

A.文件指針是一種特殊的指針類型變量

B.文件指針的值等于文件當(dāng)前讀寫位置,以字節(jié)為單位

C.文件指針的值等于文件在計(jì)算機(jī)硬盤中的存儲(chǔ)位置

D.調(diào)用fscanf函數(shù)只能向文本文件中寫入任意字符

10.若有定義語句:“inta=3,b=2,c=1;”,以下選項(xiàng)中錯(cuò)誤的賦值表達(dá)式是()。

A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);

11.設(shè)變量a是整型,f是實(shí)型,i是雙精度型,則表達(dá)式10+'a'+i*f值的數(shù)據(jù)類型為()。

A.intB.floatC.doubleD.不確定

12.若有定義“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。

A.1B.1.9C.2D.2.4

13.給定數(shù)列(541,132,984,746,518,181,946,314,205,827)按照從小到大的順序排列,采用快速排序(以中間元素518為基準(zhǔn))的第一趟掃描結(jié)果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

14.以下正確的字符串常量是()。

A."\\\"B.abcC.OlympicGamesD.""

15.對稱數(shù)組A中,每個(gè)元素的長度為4個(gè)字節(jié),行下標(biāo)i從1到8,列下標(biāo)j從1到8。將其下三角中的元素連續(xù)存儲(chǔ)在從首地址SA開始的存儲(chǔ)器內(nèi),該數(shù)組按行存放是,則元素A[5][8]的起始地址為()。

A.SA+124B.SA+128C.SA+132D.136

16.有下列程序:intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i]:returnsum;}main(){inta[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序執(zhí)行后的輸出結(jié)果是()。、A.45B.50C.60D.55

17.在一個(gè)雙向鏈表中,q的前一個(gè)節(jié)點(diǎn)為p,q的后一個(gè)節(jié)點(diǎn)為n,刪除q所指向節(jié)點(diǎn),則執(zhí)行()

A.deleteq;

B.q->prev->next=q->prev;q->next->prev=q->next;deleteq;

C.q->prev=p->next;p->next=p->prev;deleteq;

D.q->next=q->prev->next;q->prev=q->next->prev;deleteq;

E.q->prev->next=q->next;q->next->prev=q->prev;deleteq;

F.p->prev->next=p->next;p->next->prev=p->prev;deleteq->next;

18.已定義以下函數(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兩個(gè)指針?biāo)缸址M(jìn)行比較

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

19.

20.以下不能對二維數(shù)組a進(jìn)行正確初始化的語句是()。A.inta[2][3]={0};

B.inta[2][3]={{1,2},{3,4},{5,6}};

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

D.inta[][3]={1,2,3,4,5,6};

二、2.填空題(20題)21.下面程序的功能是將字符串a(chǎn)下標(biāo)值為偶數(shù)的元素由小到大排序,其他元素不變,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chara[]="labchmfye",t;

inti,j;

for(i=0;i<7;i+=2)

for(j=i+2;j<9;【】)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;j++;}

puts(a);

printf("\n");

}

22.若輸入5、9,以下程序的運(yùn)行結(jié)果為【】。

main()

{inta,b,*pt1,*pt2;

printf("inputa,b:");

scanf("%d%d",&a,&b);

pt1=&a;

pt2=&b;

if(a<b)swap(pt1,pt2);

printf("\n%d,%d\n",*pt1,*pt2);

}

swap(p1,p2)

int*p1,*p2;

{int*p;

p=p1;

p1=p2;

p2=p;

}

23.當(dāng)循環(huán)隊(duì)列非空且隊(duì)尾指針等于隊(duì)頭指針時(shí),說明循環(huán)隊(duì)列已滿,不能進(jìn)行入隊(duì)運(yùn)算。這種情況稱為【】。

24.執(zhí)行以下程序后的輸出結(jié)果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

25.需求分析的最終結(jié)果是產(chǎn)生【】。

26.有如下圖所示的雙鏈表結(jié)構(gòu),請根據(jù)圖示完成結(jié)構(gòu)體的定義:

structaa

{intdata;

【】}node;

27.結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

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

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

main()

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

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

{switch(j)

{case1:

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

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

}

}

}

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

main()

{unsigneda=0112,x;

x=a>>3;

printf("x=%o",x);

}

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

main()

{

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

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

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

}

31.下列程序可以判斷輸入的年份是不是閏年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是閏年",year);

else

printf("%d年不是閏年\n",year);

}

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

33.下列程序?qū)⒍S數(shù)組a的行和列元素互換后存放到另一個(gè)二維數(shù)組b中。請?zhí)羁铡?/p>

main()

{inta[2][3]={{1,2,3),{4,5}},b[3][2],i,j;

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

{for(j=0;j<30++)

______;

}

}

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

structaa

{intx,*y;

}*p;

inta[8]={10,20,30,40,50,60,70,80};

structaab[4]={100,&a[1],200,&a[3],10,&a[5],20,&a[7]};

main()

{p=b;

printf(%d",*++p->y);

printf("%d\n",++(p->x));

}

35.僅依據(jù)規(guī)格說明書描述的程序功能來設(shè)計(jì)測試實(shí)例的方法稱為【】。

36.若輸入字符串:(圖片),則以下while循環(huán)體將執(zhí)行【】次。

while((ch=getchar())=='e')printf("*");

37.一棵二叉樹第6層(根結(jié)點(diǎn)為第一層)的結(jié)點(diǎn)最多為______個(gè)。

38.當(dāng)運(yùn)行以下程序時(shí),從鍵盤輸入abcdabcdef<CR>

cde<CR>

(<CR>表示回車),則下面程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

main()

{inta;chars[80],t[80];

gets(s);gets(t);

a=fun(s,t);

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

fun(char*p,char*q)

{inti;

char*p1=p;

char*q1;

for(i=0;*p!='\0';p++,i++)

{p=p1+i;

if(*p!=*q)continue;

for(q1=q+1,p=p+1;*p!='\0'&&*q1!='\0';q1++,p++)

if(*p!=*q1)break;

if(*q1=='\0')returni;}

return(-1);}

39.閱讀下面語句,則執(zhí)行后的輸出結(jié)果為【】。

#include"stdio.h"

main()

{chara,b;

for(a='0',b='9';a<b;a++,b--)

printf("%c%c",a,b);

printf("\n");}

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

intx=0,y=0;

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

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

三、1.選擇題(20題)41.下列有關(guān)數(shù)據(jù)庫的描述,正確的是A.數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程

B.數(shù)據(jù)的物理獨(dú)立性是指當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時(shí),數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)不變

C.關(guān)系中的每一列稱為元組,一個(gè)元組就是一個(gè)字段

D.如果一個(gè)關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個(gè)關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字

42.若有函數(shù)內(nèi)部說明:inta[3][4];則數(shù)組a中各元素

A.可在程序的運(yùn)行階段得到初值0

B.可在程序的編譯階段得到初值0

C.不能得到確定的初值

D.可在程序的編譯或運(yùn)行階段得到初值0

43.設(shè)intx=1,y=1;表達(dá)式(!x||y--)的值是()。

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

44.以下敘述中錯(cuò)誤的是

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

B.預(yù)處理命令行的最后不能以分號表示結(jié)束

C.#defineMAX是合法的宏定義命令行

D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的

45.以下程序中函數(shù)f的功能是將n個(gè)字符串按由大到小的順序進(jìn)行排序。#include<string.h>voidf(charp[][10],intn){chart[20];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j]<0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[][10]={“abc”,“aabdfg”,“abbd”,“dcdbe”,”cd”};inti;f(p,5);printf(“%d\n”,strlen(P[0]));}程序運(yùn)行后的輸出結(jié)果是

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

46.數(shù)據(jù)庫設(shè)計(jì)包括兩個(gè)方面的設(shè)計(jì)內(nèi)容,它們是()

A.概念設(shè)計(jì)和邏輯設(shè)計(jì)B.模式設(shè)計(jì)和內(nèi)模式設(shè)計(jì)C.內(nèi)模式設(shè)計(jì)和物理設(shè)計(jì)D.結(jié)構(gòu)特性設(shè)計(jì)和行為特性設(shè)計(jì)

47.以下敘述中錯(cuò)誤的是()

A.二進(jìn)制文件打開后可以先讀文件的末尾,而順序文件不可以

B.在程序結(jié)束時(shí),應(yīng)當(dāng)用fclose函數(shù)關(guān)閉已打開的文件

C.在利用fread函數(shù)從二進(jìn)制文件中讀數(shù)據(jù)時(shí),可以用數(shù)組名給數(shù)組中所有元素讀入數(shù)據(jù)

D.不可以用FILE定義指向二進(jìn)制文件的文件指針

48.下列可用于C語言用戶標(biāo)識符的—組是______。

A.voiddefineWORD

B.a3_b3_123Car

C.For-abcIFCase

D.2aDOsizeof

49.有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序運(yùn)行后的輸出結(jié)果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

50.若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯(cuò)誤的是A.函數(shù)調(diào)用可以作為獨(dú)立的語句存在

B.函數(shù)調(diào)用可以作為一個(gè)函數(shù)的實(shí)參

C.函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中

D.函數(shù)調(diào)用可以作為一個(gè)函數(shù)的形參

51.有以下程序:main(){charstr[]="xyz",*ps=str;while(*ps)ps++;for(ps--;ps-str>=O;ps--)puts(ps);}執(zhí)行后的輸出結(jié)果是()。

A.yzxyzB.zyzC.zyzxyzD.xxyxyz

52.表達(dá)式'8'-'2'的值是()。

A.整數(shù)6B.字符6C.表達(dá)式不合法D.字符8

53.下列說法正確的是()。

A.一個(gè)C程序可以有多個(gè)主函數(shù)

B.一個(gè)C語言的函數(shù)中只允許有一對花括號

C.C程序的書寫格式是自由的,一個(gè)語句可以寫在一行上,也可以寫在多行內(nèi)

D.在對C程序進(jìn)行編譯時(shí),可以發(fā)現(xiàn)注釋行中的拼寫錯(cuò)誤

54.設(shè)有如下程序#include<stdio.h>main(){int**k,*j,i=100;j=&i;k=&j;printf("%d\n",**k);}上述程序的輸出結(jié)果是_______。

A.運(yùn)行錯(cuò)誤B.100C.i的地址D.j的地址

55.以下選項(xiàng)中,當(dāng)x為大于1的奇數(shù)時(shí),值為0的表達(dá)式是

A.x%2==1B.x/2C.x%21=0D.x%2==0

56.以下選項(xiàng)中,與k=n++完全等價(jià)的表達(dá)式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1

57.下列選項(xiàng)中不能正確定義結(jié)構(gòu)體的是_______。

A.typedefstruct

B.structcolorcl{intred;{intred;intgreen;intgreen;intblue;intblue;}COLOR;};COLORcl;

C.structcolor

D.struct{intred;{intred;intgreen;intgreen;intblue;intblue;}cl;}cl;

58.運(yùn)行下面的程序,輸入字符串MicrosoftVisualStudio,則程序的執(zhí)行結(jié)果是()。#include<stdio.h>main(){charChr[20];scanf("%s",&Chr);printf("%s\n”,Chr);}

A.MicrosoftVisua1Studio

B.M

C.Microsoft

D.MicrosoflVisualStudio

59.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無關(guān)的是數(shù)據(jù)的()。A.存儲(chǔ)結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.物理和存儲(chǔ)結(jié)構(gòu)

60.棧通常采用的兩種存儲(chǔ)結(jié)構(gòu)是()。

A.順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)B.散列方式和索引方式C.鏈表存儲(chǔ)結(jié)構(gòu)和數(shù)組D.線性存儲(chǔ)結(jié)構(gòu)和非線性存儲(chǔ)結(jié)構(gòu)

四、選擇題(20題)61.

62.

63.

64.

65.

66.

67.下述程序執(zhí)行的輸出結(jié)果是()。

#include<stdio.h>

main()

{chara[2][4];,

strcpy(a。"are");strcpy(a[1],"you");

a[o][3]=&;

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

}

A.are&you

B.you

C.are

D.&

68.有以下程序:

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

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

69.若x=5,y=3則y*=x+5;y的值為___________.

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

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

A.passwarnB.passerrorC.goodpasswarnD.pass

71.若有語句:Char*line[5];,以下敘述中正確的是()。

A.定義line是一個(gè)數(shù)組,每個(gè)數(shù)組元素是一個(gè)基類型為Char的指針變量

B.定義line是一個(gè)指針變量,該變量可以指向一個(gè)長度為5的字符型數(shù)組

C.定義line是一個(gè)指針數(shù)組,語句中的*號稱為間址運(yùn)算符

D.定義line是一個(gè)指向字符型函數(shù)的指針

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

intx=10,y=10;

printf(“%d%d\n”,x--,--y);

A.1010B.99C.910D.109

73.

以下程序執(zhí)行后sum的值是()。

main

{inti,sum;

for(i=1;i<6;i++)sum+=i:

printf("1%d\n",sum):

}

A.15B.14C.不確定D.0

74.若有以下的說明和語句,則在執(zhí)行for語句后,’(*(pt+1)+2)表示的數(shù)組元素是()。

intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];A.A.t[2][0]B.t[2][2]C.t[1][2]D.t[2][1]

75.專門的關(guān)系運(yùn)算不包括下列的()運(yùn)算。

A.連接運(yùn)算B.選擇運(yùn)算C.投影運(yùn)算D.并運(yùn)算

76.有以下程序

main()

{

inta[3][2]={0},(*ptr)[2],i,j;

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

{

ptr=a+i;

scanf("%d",ptr);

ptr++;

}

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

{

for(j=0;j<2;j++)

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

printf("\n");

}

}

若運(yùn)行時(shí)輸入:123<回車>,則輸出結(jié)果是

77.設(shè)intx=7,則~x的值是()。

A.-8B.7C.-1D.1

78.

79.有以下程序:

#include<stdio.h>

main()

{chara=H;

a=(a>=Aa<=2)?(a-A+a):a;

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

}

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

A.AB.aC.HD.h

80.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關(guān)系

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc的功能是:根據(jù)輸入的3個(gè)邊長(整型值),判斷能否構(gòu)成三角形:若能構(gòu)成等邊三角形,則返回3;若是等腰三角形,則返回2;若能構(gòu)成三角形則返回1;若不能,則返回0。例如,輸入3個(gè)邊長為3,4,5,實(shí)際輸入時(shí),數(shù)與數(shù)之間以Enter鍵分隔而不是逗號。請修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#include<math.h>intproc(inta,intb,intc){if(a+b>c&&b+c>aa+c>b){if(a==b&&b==c)//****found****return1;elseif(a==b||b==c||a==c)return2;//****found****elsereturn3;}elsereturn0;}voidmain{inta,b,C,shape;printf("\nlnputa,b,C:");scanf("%d%d%d",&a,&b,&c);printf("\na=%d,b=%d,c=%d\n",a,b,c);shape=proc(a,b,c);printf("\n\nTheshape:%d\n",shape);}

六、程序設(shè)計(jì)題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是統(tǒng)計(jì)s所指字符串中的數(shù)字字符個(gè)數(shù),并將其作為函數(shù)值返回。例如,s所指字符串中的內(nèi)容是2def35adh253kjsdf7/kj8655x,函數(shù)fun()返回值為11注意:部分源程序在文件prog1.c中。請勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.D題干中,字符變量a、b、c、d都是大寫字母字符。C語言中,大寫字母的ASCII值是按照字母順序連續(xù)遞增的,所以a小于b,b小于c,c小于d。則表達(dá)式“x=(a<b)?a:b”等價(jià)于“x=a”;“x=(x>c)?c:x”等價(jià)于“x=(a>c)?c:a”,等價(jià)于“x=a”;“x=(d>x)?x:d”等價(jià)于“x=(d>a)?a:d”,等價(jià)于“x=a”;所以程序輸出x的值為A。故本題答案為D選項(xiàng)。

2.D本題考查if語句。第1個(gè)if語句,如果a<b,則a與b交換;第2個(gè)if語句,如果a<c,則a與c交換;第3個(gè)if語句,如果b<2t,則b與c交換。3個(gè)if語句結(jié)合起來實(shí)現(xiàn)的功能就是將a、b、C按從大到小排序。

3.C解析:格式字符x或x是以十六進(jìn)制無符號形式輸出整型數(shù)(不帶前導(dǎo)0x或OX)。對于x用abc輸出,X用ABC輸出。

4.Cc是字符變量,“hello!”是字符串。字符串不能賦給字符變量,定義中有語法錯(cuò)誤。本題答案為C選項(xiàng)。

5.B解析:投影操作是從關(guān)系中選擇某些列,投影后消去了某些屬性,就可能出現(xiàn)重復(fù)元組,根據(jù)關(guān)系的性質(zhì),應(yīng)消去這些完全相同的元組。這樣使得新關(guān)系的元組數(shù)小于或等于原來的元組數(shù)。

6.C

7.A解析:從軟件開發(fā)的工程化觀點(diǎn)來看,在使用程序設(shè)計(jì)語言編制程序以前,需要對所采用算法的邏輯關(guān)系進(jìn)行分析,設(shè)計(jì)出全部必要的過程細(xì)節(jié),并給予清晰的表達(dá)。詳細(xì)設(shè)計(jì)的任務(wù)就是要決定各個(gè)模塊的實(shí)現(xiàn)算法,并精確表達(dá)出這些算法。本題正確答案為選項(xiàng)A。

8.B

9.A文件指針實(shí)際上是指向一個(gè)結(jié)構(gòu)體類型的指針。這個(gè)結(jié)構(gòu)體中包含緩沖區(qū)的地址、在緩沖區(qū)中當(dāng)前存取字符的位置、對文件是“讀”還是“寫”、是否出錯(cuò)、是否已經(jīng)遇到文件結(jié)束標(biāo)識等信息。選項(xiàng)A正確,選項(xiàng)B、C錯(cuò)誤;fscanf函數(shù)只能從文本文件中輸入數(shù)據(jù)到內(nèi)存,選項(xiàng)D錯(cuò)誤。故本題答案為A選項(xiàng)。

10.A由等式的規(guī)則可知,A選項(xiàng)錯(cuò)誤。先對括號的b進(jìn)行等式運(yùn)算,得出b=4,然后計(jì)算得出a=4=3,所以會(huì)導(dǎo)致錯(cuò)誤。答案選擇A。

11.C

12.A在表達(dá)式“z=0.9+x/y”中,先計(jì)算“3.6-2”,結(jié)果為1;再計(jì)算“0.9+1”,結(jié)果為1.9。因?yàn)樽兞縵為整型,所以z的值為1。故本題答案為A選項(xiàng)。

13.B

14.D選項(xiàng)A中“\\\”為轉(zhuǎn)義字符,故選項(xiàng)A錯(cuò)誤,選項(xiàng)B和C顯然不是字符串常量。選項(xiàng)D是一個(gè)字符串常量,稱為空串。

15.B

16.C在函數(shù)intfun(intx[],intn)的定義中,變量sum為一個(gè)靜態(tài)局部變量。由于在整個(gè)程序運(yùn)行期間,靜態(tài)局部變量在內(nèi)存中的靜態(tài)存儲(chǔ)中占據(jù)著永久的存儲(chǔ)單元。函數(shù)intfun(intx[],intn)的功能是求出數(shù)組x[]各個(gè)元素的和,所以在主函數(shù)中,調(diào)用函數(shù)fun(a,5)后,變量sum=1+2+3+4+5=15,當(dāng)再次調(diào)用fun(b,4)后,變量sum=15+6+7+8+9=45,所以s=15+45=60。

17.E

18.A解析:fun()函數(shù)中聲明了兩個(gè)字符串指針作為形參,在其函數(shù)體中用了一個(gè)while循環(huán),首先while括號內(nèi)表達(dá)式*p2=*p1是將p1所指的內(nèi)容賦值到P2所指的存儲(chǔ)空間中,然后再判斷是否為'\\0',表達(dá)式的值為真時(shí),執(zhí)行循環(huán)體,指針p1和指針P2分別下移一位,當(dāng)p1指向字符'\\0'時(shí),表達(dá)式的值為假,循環(huán)結(jié)束,故此函數(shù)的功能是將p1所指字符串復(fù)制到p2所指內(nèi)存空間中。

19.A

20.B選項(xiàng)A中,將二維數(shù)組a的6個(gè)元素都賦值為0,正確;選項(xiàng)B中,由于a包含2個(gè)元素,每個(gè)元素都是包含3個(gè)元素的一維數(shù)組,初始化列表中包含3個(gè)元素,每個(gè)元素是包含2個(gè)元素的數(shù)組,錯(cuò)誤;選項(xiàng)C中,a的每個(gè)元素是包含3個(gè)元素的一維數(shù)組,初始化列表將a[0]的3個(gè)元素初始化為1,2,0,將a[1]的3個(gè)元素初始化為0,0,0,正確;選項(xiàng)D中,將a[0]初始化為1,2,3,將a[1]初始化為4,5,6,正確。本題答案為B選項(xiàng)。

21.j++a[i]>a[j]或a[j]<a[i]j++\r\na[i]>a[j]或a[j]<a[i]解析:題目要求排序的元素是下標(biāo)值為偶數(shù)的元素,外循環(huán)循環(huán)4次,i的值分別為0、2、4、6,所以內(nèi)循環(huán)也循環(huán)4次,i的值就應(yīng)為2、4、6、8,在循環(huán)體中已經(jīng)有了對j加1的操作,因此for后括號中的語句應(yīng)再對j加1,保證下標(biāo)為偶數(shù)。if語句的功能是如果后一個(gè)數(shù)比前一個(gè)數(shù)小則交換位置。

22.59

23.上溢上溢解析:入隊(duì)運(yùn)算是指在循環(huán)隊(duì)列的隊(duì)尾加入一個(gè)新元素。這個(gè)運(yùn)算有兩個(gè)基本操作:首先將隊(duì)尾指針進(jìn)一(即rear=rear+1),并當(dāng)rear=m+1時(shí)置rear=1;然后將新元素插入隊(duì)尾指針指向的位置。當(dāng)循環(huán)隊(duì)列非空(s=1)時(shí)且隊(duì)尾指針等于隊(duì)頭指針時(shí),說明循環(huán)隊(duì)列已滿,不能進(jìn)行入隊(duì)運(yùn)算,這種情況稱為“上溢”。

24.a=14a=14解析:逗號表達(dá)式的值是以逗號分隔的最后一個(gè)表達(dá)式的值。所以題目中的語句a=(3*5,a+4);就等價(jià)于a=a+4;。故本題輸出結(jié)果是a=14。

25.需求規(guī)格說明書需求規(guī)格說明書解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。需求規(guī)格說明書包括正確性、無歧義性、完整性、可驗(yàn)證性、一致性、可理解性、可修改性和可追蹤性等。

26.structaa*lhead*rchild;structaa*lhead,*rchild;解析:結(jié)構(gòu)體對鏈表的定義。

27.模塊化模塊化

28.5555解析:分析程序執(zhí)行過程,第一次循環(huán)時(shí),j=3,i-5,因?yàn)閟witch(3),所以執(zhí)行case3,調(diào)用P(a[-i)=p(a[4])=P(5),輸出5;第二次循環(huán)時(shí),j=2,i=4,因?yàn)閟witch(2),所以執(zhí)行case2,調(diào)用P(s[i++])=P(a[4])=P(5),輸出5,之后i的n等于5。

29.x=11x=11解析:在對無符號數(shù)的右移是高位補(bǔ)0。

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

31.yearleap=1leap

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

33.b[j][i]=a[i][j]b[j][i]=a[i][j]解析:本題考查二維數(shù)組的基本知識。它是要將一個(gè)二維數(shù)組,的行和列元素互換后存放到另一個(gè)二維數(shù)組b中,只要將數(shù)組a的行標(biāo)和列標(biāo)互換,然后賦給數(shù)組b即可。

34.3010130101解析:注意地址自增與變量自增的區(qū)別。

35.黑箱法黑箱法

36.00解析:函數(shù)getchar()是從鍵盤得到用戶輸入的一個(gè)字符。用戶輸入的第1個(gè)字符是a,不管后面輸入的是什么ch的值都是'a',因此條件(ch=getchar())=='e'為假,這個(gè)循環(huán)不會(huì)被執(zhí)行。

37.3232解析:二叉樹第k層上,最多有2k-1(k≥1)個(gè)結(jié)點(diǎn)。第6層的結(jié)點(diǎn)數(shù)最多是26-1=32。注意區(qū)別“二叉樹的結(jié)點(diǎn)最多數(shù)”和“某一層的結(jié)點(diǎn)最多數(shù)”。前者的計(jì)算是深度為m的二叉樹最多有2m-1個(gè)結(jié)點(diǎn)。

38.a=6a=6解析:字符指針p++使指針向后移動(dòng)一個(gè)字符的位置,而*p則是取得指針p所在位置的字符元素。

39.918273645918273645解析:for是C語言的關(guān)鍵字,其后的一對圓括號中通常含有3個(gè)表達(dá)式,各個(gè)表達(dá)式之間用分號隔開,這3個(gè)表達(dá)式可以是任意形式的表達(dá)式,通常主要用于for循環(huán)控制。

40.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,此時(shí)y=8。

41.D數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程,故選項(xiàng)A敘述錯(cuò)誤。數(shù)據(jù)的物理獨(dú)立性是指數(shù)據(jù)的物理結(jié)構(gòu)的改變,不會(huì)影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),故選項(xiàng)B敘述錯(cuò)誤。關(guān)系中的行稱為元組,對應(yīng)存儲(chǔ)文件中的記錄,關(guān)系中的列稱為屬性,對應(yīng)存儲(chǔ)文件中的字段,故選項(xiàng)C敘述錯(cuò)誤。所以本題選D。

42.C本題主要考查數(shù)組的定義及初始化。在對數(shù)組進(jìn)行定義和初始化時(shí),需要注意以下事項(xiàng)。

(1)數(shù)組的內(nèi)存空間在編譯時(shí)確定,定義數(shù)組時(shí)的n值只能使用常量,不能使用變量。

(2)定義數(shù)組時(shí)可以不標(biāo)明數(shù)組元素的個(gè)數(shù),而是通過賦初值的方式確定,編譯系統(tǒng)將自動(dòng)計(jì)算花括號內(nèi)的數(shù)據(jù)數(shù)量作為數(shù)組的元素個(gè)數(shù)。

(3)數(shù)組初始化時(shí),當(dāng)初值的個(gè)數(shù)小于整型常量n時(shí),編譯系統(tǒng)會(huì)自動(dòng)補(bǔ)0。一旦給定初值數(shù)超過n,編譯系統(tǒng)將報(bào)錯(cuò)。

(4)初始化數(shù)組的元素類型,必須與定義數(shù)組時(shí)的類型一致。

(5)數(shù)組名記錄了數(shù)組在內(nèi)存中的首地址,其值不能更改。

(6)除字符數(shù)組外,不能直接用數(shù)組名對數(shù)組進(jìn)行整體輸入或輸出。

本題中定義了一個(gè)3行4列的數(shù)組,但沒有對其進(jìn)行賦初值操作,可能我們會(huì)想在系統(tǒng)編譯時(shí)會(huì)自動(dòng)補(bǔ)0,這只是在初值個(gè)數(shù)小于數(shù)組定義大小的情況下的操作,如果沒有進(jìn)行賦初值操作,數(shù)組中的元素值是不能被確定的。因此,本題答案選C。

43.B

44.D解析:在C語言中,凡是以“#”開頭的行都稱為編譯預(yù)處理命令行,如#include、#define、#if等,每行的末尾不得用“;”結(jié)束,以區(qū)別于C語句、定義和說明語句。選項(xiàng)C中的宏定義為不帶參數(shù)的宏命令行,宏名之后可以有替換文本,也可以沒有。編譯預(yù)處理是在編譯程序?qū)源程序進(jìn)行編譯前執(zhí)行的.當(dāng)然也在程序執(zhí)行之前執(zhí)行,因此選項(xiàng)D是錯(cuò)誤的。

45.C解析:函數(shù)stremp(字符串1,字符串2)作用是將“字符串1”和“字符串2”進(jìn)行比較,如果“字符串1”>“字符串2”,返回一個(gè)大于0的整數(shù)值;如果“字符串1”<“字符串2”,返回一個(gè)小于0的整數(shù)值;如果“字符串1”=“字符串2”,返回0。函數(shù)strepy(字符串?dāng)?shù)組名,字符串,[整型表達(dá)式]),整型表達(dá)式的作用是將“字符串”的前“整型表達(dá)式”個(gè)字符存入到指定的“字符數(shù)組”中,若省略“整型表達(dá)式”,則將整個(gè)“字符串”存入“字符數(shù)組”中。函數(shù)f()的功能是利用選擇法把一個(gè)具有n行的二維數(shù)組中按行存放的n個(gè)字符串由大到小排序。在主函數(shù)中定義了一個(gè)二維字符數(shù)組p并給它按行賦初值,然后調(diào)用f()函數(shù),把它按行從大到小排列。字符串比較大小的標(biāo)準(zhǔn)是從第一個(gè)字符開始依次向右比較,遇到某一個(gè)字符大,該字符所在的字符串就是較大的字符串。由此可知最大的字符串為“dcdbe”,排序后存放在第一行,其首地址為P[0],在輸出語句輸出的P[0]指向的字符串長度是5。

46.A解析:模式設(shè)計(jì)和內(nèi)模式設(shè)計(jì)是概念設(shè)計(jì)的兩種方法。物理設(shè)計(jì)是根據(jù)特定的計(jì)算機(jī)系統(tǒng),對數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)和存取方法進(jìn)行設(shè)計(jì),從而實(shí)現(xiàn)從邏輯結(jié)構(gòu)到物理結(jié)構(gòu)的轉(zhuǎn)換。從系統(tǒng)開發(fā)的角度來看,結(jié)構(gòu)特性設(shè)計(jì)和行為特性-設(shè)計(jì)是數(shù)據(jù)庫應(yīng)用系統(tǒng)所具有的兩個(gè)特性。結(jié)構(gòu)特性的設(shè)計(jì),設(shè)計(jì)各級數(shù)據(jù)庫模式(靜態(tài)特性):行為特性的設(shè)計(jì),改變實(shí)體及其特性,決定數(shù)據(jù)庫系統(tǒng)的功能(動(dòng)態(tài)特性)。

47.D解析:順序文件只能從頭讀寫,二進(jìn)制文件可以隨機(jī)讀寫,選項(xiàng)A正確:文件在使用后應(yīng)關(guān)閉,當(dāng)程序結(jié)束時(shí),應(yīng)當(dāng)把打開的文件關(guān)閉,選項(xiàng)B正確:用fread()函數(shù)可以一次性地讀取同類型的很多數(shù)據(jù),選項(xiàng)C正確;在C語言中指向各種文件的文件指針都是通過FILE來定義的,故選項(xiàng)D是錯(cuò)誤的。所以4個(gè)選項(xiàng)中選D

48.B解析:C語言規(guī)定標(biāo)識符只能由字母,數(shù)字和下劃線3種字符組成,且第—個(gè)字符必須為字母或下劃線,所以排除C和D。C語言還規(guī)定標(biāo)識符不能為C語言的關(guān)鍵字,從而選項(xiàng)A(void是關(guān)鍵字)也是錯(cuò)誤的。

49.D解析:本題中首先定義一個(gè)字符數(shù)組s,并將字符串'ABCD'存到數(shù)組s中,定義了一個(gè)字符指針變量p,在接下來for循環(huán)中,循環(huán)體共執(zhí)行了三次,第一次p指向s[1],所以此時(shí)輸出的p所指字符串的值為BCD,第二次循環(huán)p指向s[2],此時(shí)輸出p所指的字符串的值為CD,第三次循環(huán)p指向s[3],此時(shí)輸出的p所指的字符串的值為D。所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。

50.D解析:本題考查函數(shù)的調(diào)用。在有參函數(shù)調(diào)用中,是將主調(diào)函數(shù)的實(shí)參值傳給被調(diào)函數(shù)的形參。按函數(shù)在程序中出現(xiàn)的位置來分,有以下三種函數(shù)調(diào)用形式:

①函數(shù)調(diào)用作為一條語句。例如:fun();這時(shí)不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作。故選項(xiàng)A)正確。

②函數(shù)出現(xiàn)在表達(dá)式中,這種表達(dá)式稱為函數(shù)表達(dá)式。這時(shí)要求函數(shù)帶回一個(gè)確定的值以參加表達(dá)式的運(yùn)算。例如:c=5*max(a,b);函數(shù)max是表達(dá)式的一部分,將其值乘以5后賦給c。故選項(xiàng)C)正確。

③函數(shù)調(diào)用作為一個(gè)函數(shù)的實(shí)參,例如:m=max(a,max(b,c));其中max(b,c)是一次函數(shù)調(diào)用,它的值作為max另一次調(diào)用的實(shí)參。故選項(xiàng)B)正確。

函數(shù)調(diào)用不可作為一個(gè)函數(shù)的形參,因?yàn)楹瘮?shù)調(diào)用參數(shù)的數(shù)據(jù)傳遞是單向傳遞,即實(shí)參傳給形參,不能由形參傳給實(shí)參。故選項(xiàng)D)錯(cuò)誤。

51.C解析:執(zhí)行while循環(huán),使指針變量ps指向字符串“xyz”的字符串結(jié)束標(biāo)志,然后執(zhí)行for循環(huán),先執(zhí)行ps--,使ps指向字符‘z’,故puts(ps)輸出結(jié)果為z;再次執(zhí)行ps--,使ps指向字符‘y’,故puts(ps)輸出結(jié)果為yz;再次執(zhí)行ps--,使ps指向字符‘x’,故puts(ps)輸出結(jié)果為xyz,退出循環(huán)。所以,C選項(xiàng)為所選。

52.A解析:在C語言中,雖然字符都是變?yōu)槠鋵?yīng)的ASCII碼值來參與算術(shù)運(yùn)算的,但字符間的相對位置關(guān)系還是不變的,字符8和字符2的ASCII碼值相差仍是6。

53.C解析:本題涉及C語言基本的3個(gè)知識點(diǎn):①C語言規(guī)定一個(gè)程序只允許有一個(gè)主函數(shù),一個(gè)函數(shù)內(nèi)可以允許有多個(gè)花括號;②C語言的標(biāo)識符是由字母、數(shù)字、下劃線組成的,可以是大寫字母,而且標(biāo)識符區(qū)分字母的大小寫;③C程序的注釋部分僅僅是方便程序員閱讀,提高程序的可讀性和可移植性,它并不參與程序的編譯,所以編譯器也就不會(huì)發(fā)現(xiàn)注釋行中的錯(cuò)誤。

54.B解析:j=&i,j的值就是i的地址,*j=100,將j的地址賦給k,這時(shí)*k=j,那么,**k=*j,而*j=100,所以**k=100,最后的打印結(jié)果應(yīng)當(dāng)為100。

55.D解析:因?yàn)閤的值為大于1的奇數(shù),所以x除以2的余數(shù)等于1,因此,選項(xiàng)A)、C)中表達(dá)式的結(jié)果為真,不為0;對于選項(xiàng)B)來說,x除以2的商不會(huì)等于0;選項(xiàng)D)中表達(dá)式的結(jié)果為假,即等于0。

56.A解析:在本題中k=n++,為后綴運(yùn)算。根據(jù)其運(yùn)算規(guī)則,首先n先加一,但n++表達(dá)式的值依然n原來的值,即k的值沒有改變。選項(xiàng)A中先給k賦值為n,然后n再加1,k值沒有變化,所以這個(gè)表達(dá)式和本題中表達(dá)式等價(jià):選項(xiàng)B中先n加1,然后將n加1后的值賦給k,k變化了比原來的值大1,所以這個(gè)表達(dá)式和本題中表達(dá)式不等價(jià):選項(xiàng)C中先計(jì)算表達(dá)式左邊的表達(dá)式++=N的值,執(zhí)行++n后,左邊的表達(dá)式的值為n的值加1,然后將n+1后的值賦給k,所以這個(gè)表達(dá)式和本題中的表達(dá)式不等價(jià);選項(xiàng)D中表達(dá)式展開為k=k+(n+1),k的值發(fā)生了變化,所以這個(gè)表達(dá)式和本題中的表達(dá)式不等價(jià)。所以4個(gè)選項(xiàng)中A正確。

57.B解析:將一個(gè)變量定義為標(biāo)準(zhǔn)類型與定義為結(jié)構(gòu)體類型不同之處在于:后者不僅要求指定變量為結(jié)構(gòu)體類型,而且要求指定為某一特定的結(jié)構(gòu)體類型(例如,structcolor),不能只指定結(jié)構(gòu)體名。其中可以不出現(xiàn)結(jié)構(gòu)體名,答案D就是缺省結(jié)構(gòu)體名的隋況。而變量名歹婊必須放在成員列表后面,所以B答案不能正確將cl定義為結(jié)構(gòu)件變量。

58.C解析:當(dāng)從鍵盤輸入MicrosoftVisualstudio時(shí),由于scanf輸入函數(shù)的特點(diǎn)是遇到空格時(shí)結(jié)束讀入字符,因此,該程序只將Microsoft這9個(gè)字符送到了字符數(shù)組str中,并在其后自動(dòng)加上結(jié)束符“\\0”。

59.C數(shù)據(jù)結(jié)構(gòu)概念一般包括3個(gè)方面的內(nèi)容,數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)(物理結(jié)構(gòu))及數(shù)據(jù)上的運(yùn)算集合。數(shù)據(jù)的邏輯結(jié)構(gòu)只抽象地反映數(shù)據(jù)元素之間的邏輯關(guān)系,即數(shù)據(jù)元素之間的前后件關(guān)系,而不管它在計(jì)算機(jī)中的存儲(chǔ)表示形式。

60.A解析:和線性表類似,棧也有兩種存儲(chǔ)方法,一是順序棧,二是鏈?zhǔn)綏?。棧的順序存?chǔ)結(jié)構(gòu)是利用一組地址連續(xù)的存儲(chǔ)單元一次存儲(chǔ)自棧底到棧頂?shù)臄?shù)據(jù)元素,同時(shí)附設(shè)指針top指示棧頂元素的位置,由于棧的操作是線性表操作的特例,相對而言,鏈?zhǔn)綏5牟僮鞲子趯?shí)現(xiàn)。注意:這3種運(yùn)算方法在各種存儲(chǔ)結(jié)構(gòu)中的應(yīng)用。

61.B

62.A

63.A

64.D

65.C\r\n

66.C

67.A\nstrcpy實(shí)現(xiàn)的功能是復(fù)制,該操作把a(bǔ)re復(fù)制到a中,aE03E33一’&’,且strcpy(aEl],'you')把you復(fù)制到a[l]中,故輸出a為“are&you”。

\n

68.A本愿考查位運(yùn)算符以及相關(guān)運(yùn)算,‘為按位或,&為按位與,部么a"b為3,再與c按位與仍然為3,所以答案為A選項(xiàng)。

69.D

70.A本題的考查點(diǎn)是switch語句。當(dāng)用戶鍵人字符時(shí),會(huì)進(jìn)入一個(gè)多分支選擇語句,根據(jù)n的值,來確定下一步執(zhí)行的選擇語句;最后的結(jié)果應(yīng)當(dāng)為passwarn。本題需要注意的是,當(dāng)case語句沒有跟隨break語句時(shí),不會(huì)跳出switch,而是繼續(xù)執(zhí)行下一個(gè)case語句,直至遇到break語句。

71.A解析:理解復(fù)雜定義要掌握兩點(diǎn):一、右結(jié)合原則.本題中的定義char*line[5];等價(jià)于char*(line[5]);;二、自外向內(nèi)分解成typedef語句。char*(line[5]);等價(jià)于typedefchar*A;Aline[5];其中A被typedef定義成字符指針的別名,然后line被定義成A的一維數(shù)組,即字符指針的一維數(shù)組。再來看看行指針的定義char(*line)[5];它應(yīng)該被分解成typedefcharB[5];B*line;其中B被定義成包含5個(gè)元素的一維字符數(shù)組,然后line被定義成指向B的指針,即指向包含5個(gè)元素的一維字符數(shù)組的指針。所以兩者切不可混淆了,后者的括號不能省略。故本題應(yīng)該選擇A。

72.D

73.C

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

\n

74.C從for循環(huán)可知pt是指向行的首地址的指針變量,因此由指針的表示方法可知:*(*(pt+1)+2)=pt[1][2]=t[1][2]。

75.D關(guān)系運(yùn)算有傳統(tǒng)的集合運(yùn)算和專門的關(guān)系運(yùn)算,傳統(tǒng)的集合運(yùn)算有交,差,并,除和笛卡爾積,專門的關(guān)系運(yùn)算有鏈接,選擇,投影。

76.B本題定義了一個(gè)二維數(shù)組a,并通過a[3][2]={0}將數(shù)組中的各個(gè)元素初始化為0,又定義了一個(gè)指針變量ptr,它用于指向包含2個(gè)元素的一維數(shù)組。在第一個(gè)for循環(huán)中,語句“ptr=a+i;”用于將指針變量ptr指向第i行的數(shù)組元素。通過兩次循環(huán),分別給二維數(shù)組a的第0行的第1個(gè)元素和第1行的第1個(gè)元素賦了值1和2,即a[0][0]=1,a[1][0]=2。

77.A本題主要考查按位求反運(yùn)算和C語言正負(fù)數(shù)的表示,“O”代表正數(shù),“1”代表負(fù)數(shù);x=7的二進(jìn)制為00111,第一個(gè)0代表正數(shù),~x為11000,第一個(gè)l代表負(fù)數(shù),值為8。

78.A

79.D\n多元運(yùn)算符問號前面表達(dá)式為真,所以(a-A+a)賦值給a,括號里的運(yùn)算是把大寫字母變成小寫字母,所以答案應(yīng)為選項(xiàng)D。

\n

80.C(10)C)解析:DB即數(shù)據(jù)庫(Database),是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合;DBMS即數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem),是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DB的方法;DBS即數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)由如下5部分組成,數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、系統(tǒng)平臺之一——硬件平臺(硬件)、系統(tǒng)平臺之二——軟件平臺(軟件)。

81.(1)錯(cuò)誤:returnl;正確:return3;(2)錯(cuò)誤:return3;正確:returnl;【解析】三條邊都相等的三角形為等邊三角形,按題目中要求,等邊三角形返回3,若不是等邊三角形也不是等腰三角形則返回l,因此,“returnl;”應(yīng)改為“return3;”;“return3;”應(yīng)改為“returnl;”。

82.intfun(char*s)2;{intn=0;3char*p;4:;for(p=s;*p!=,\\0';p丄+)if((*p≥’o’)&&(≤’9’))6n++;7returnn;8}要統(tǒng)計(jì)字符串中數(shù)字字符的個(gè)數(shù),首先應(yīng)定義變量n,并將其初始化為0,然后遍歷字符串,逐個(gè)判斷字符是否為數(shù)字字符,判斷條件為該元素的ASCII值在字符o和9的ASCII值之間,若判斷條件成立,則使n的值加1,否則,繼續(xù)判斷下一個(gè)字符,直到字符串結(jié)束。2021-2022年河南省洛陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:#include<stdio.h>main(){charx,a=‘A’,b=‘B’,c=‘C’,d=‘D’;x=(a<b)?a:b;x=(x>c)?c:x;x=(d>x)?x:d;printf(“%c\n”,x);}程序運(yùn)行后的輸出結(jié)果是()。

A.DB.BC.CD.A

2.運(yùn)行下列程序時(shí),若輸入的數(shù)據(jù)為“1,2,3”,則輸出結(jié)果是()。main{floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a<b){t=a;a=b.b=t;)if(a<c){t=a;a=c;c=t;)it(b<c){t=b;b=C;c—=;)printf("%f\n%f\n%f\n",a,b,c);}A.1.002.003.00B.1.003.002.00C.132D.3.000002.000001.00000

3.若有以下程序段intm=0xabc,n=0xabc;m-=n;printf("%X\n",m);執(zhí)行后輸出結(jié)果是A.0X0B.0x0C.0D.0XABC

4.若有定義“charc=“hello!”;”,則以下說法正確的是()。

A.c占用7字節(jié)內(nèi)存B.c是一個(gè)字符串變量C.定義中有語法錯(cuò)誤D.c的有效字符個(gè)數(shù)是6

5.對一個(gè)關(guān)系投影操作以后,新關(guān)系的元組個(gè)數(shù)______原來關(guān)系的元組個(gè)數(shù)。

A.小于B.小于或等于C.等于D.大于

6.設(shè)有序表中的元素為(13,18,24,35,47,50,62),則在其中利用二分法查找值為24的元素需要經(jīng)過()次比較容易

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

7.軟件詳細(xì)設(shè)計(jì)的主要任務(wù)是確定每個(gè)模塊的()。

A.算法和使用的數(shù)據(jù)結(jié)構(gòu)B.外部接口C.功能D.編程

8.當(dāng)很頻繁的對序列中部進(jìn)行插入和刪除操作時(shí),應(yīng)該選擇使用的容器是()

A.vectorB.listC.dequeD.stack

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

A.文件指針是一種特殊的指針類型變量

B.文件指針的值等于文件當(dāng)前讀寫位置,以字節(jié)為單位

C.文件指針的值等于文件在計(jì)算機(jī)硬盤中的存儲(chǔ)位置

D.調(diào)用fscanf函數(shù)只能向文本文件中寫入任意字符

10.若有定義語句:“inta=3,b=2,c=1;”,以下選項(xiàng)中錯(cuò)誤的賦值表達(dá)式是()。

A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);

11.設(shè)變量a是整型,f是實(shí)型,i是雙精度型,則表達(dá)式10+'a'+i*f值的數(shù)據(jù)類型為()。

A.intB.floatC.doubleD.不確定

12.若有定義“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。

A.1B.1.9C.2D.2.4

13.給定數(shù)列(541,132,984,746,518,181,946,314,205,827)按照從小到大的順序排列,采用快速排序(以中間元素518為基準(zhǔn))的第一趟掃描結(jié)果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

14.以下正確的字符串常量是()。

A."\\\"B.abcC.OlympicGamesD.""

15.對稱數(shù)組A中,每個(gè)元素的長度為4個(gè)字節(jié),行下標(biāo)i從1到8,列下標(biāo)j從1到8。將其下三角中的元素連續(xù)存儲(chǔ)在從首地址SA開始的存儲(chǔ)器內(nèi),該數(shù)組按行存放是,則元素A[5][8]的起始地址為()。

A.SA+124B.SA+128C.SA+132D.136

16.有下列程序:intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i]:returnsum;}main(){inta[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序執(zhí)行后的輸出結(jié)果是()。、A.45B.50C.60D.55

17.在一個(gè)雙向鏈表中,q的前一個(gè)節(jié)點(diǎn)為p,q的后一個(gè)節(jié)點(diǎn)為n,刪除q所指向節(jié)點(diǎn),則執(zhí)行()

A.deleteq;

B.q->prev->next=q->prev;q->next->prev=q->next;deleteq;

C.q->prev=p->next;p->next=p->prev;deleteq;

D.q->next=q->prev->next;q->prev=q->next->prev;deleteq;

E.q->prev->next=q->next;q->next->prev=q->prev;deleteq;

F.p->prev->next=p->next;p->next->prev=p->prev;deleteq->next;

18.已定義以下函數(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兩個(gè)指針?biāo)缸址M(jìn)行比較

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

19.

20.以下不能對二維數(shù)組a進(jìn)行正確初始化的語句是()。A.inta[2][3]={0};

B.inta[2][3]={{1,2},{3,4},{5,6}};

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

D.inta[][3]={1,2,3,4,5,6};

二、2.填空題(20題)21.下面程序的功能是將字符串a(chǎn)下標(biāo)值為偶數(shù)的元素由小到大排序,其他元素不變,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chara[]="labchmfye",t;

inti,j;

for(i=0;i<7;i+=2)

for(j=i+2;j<9;【】)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;j++;}

puts(a);

printf("\n");

}

22.若輸入5、9,以下程序的運(yùn)行結(jié)果為【】。

main()

{inta,b,*pt1,*pt2;

printf("inputa,b:");

scanf("%d%d",&a,&b);

pt1=&a;

pt2=&b;

if(a<b)swap(pt1,pt2);

printf("\n%d,%d\n",*pt1,*pt2);

}

swap(p1,p2)

int*p1,*p2;

{int*p;

p=p1;

p1=p2;

p2=p;

}

23.當(dāng)循環(huán)隊(duì)列非空且隊(duì)尾指針等于隊(duì)頭指針時(shí),說明循環(huán)隊(duì)列已滿,不能進(jìn)行入隊(duì)運(yùn)算。這種情況稱為【】。

24.執(zhí)行以下程序后的輸出結(jié)果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

25.需求分析的最終結(jié)果是產(chǎn)生【】。

26.有如下圖所示的雙鏈表結(jié)構(gòu),請根據(jù)圖示完成結(jié)構(gòu)體的定義:

structaa

{intdata;

【】}node;

27.結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

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

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

main()

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

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

{switch(j)

{case1:

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

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

}

}

}

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

main()

{unsigneda=0112,x;

x=a>>3;

printf("x=%o",x);

}

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

main()

{

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

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

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

}

31.下列程序可以判斷輸入的年份是不是閏年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是閏年",year);

else

printf("%d年不是閏年\n",year);

}

32.在面向?qū)ο蠓椒ㄖ校惖膶?shí)例稱為______。

33.下列程序?qū)⒍S數(shù)組a的行和列元素互換后存放到另一個(gè)二維數(shù)組b中。請?zhí)羁铡?/p>

main()

{inta[2][3]={{1,2,3),{4,5}},b[3][2],i,j;

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

{for(j=0;j<30++)

______;

}

}

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

structaa

{intx,*y;

}*p;

inta[8]={10,20,30,40,50,60,70,80};

structaab[4]={100,&a[1],200,&a[3],10,&a[5],20,&a[7]};

main()

{p=b;

printf(%d",*++p->y);

printf("%d\n",++(p->x));

}

35.僅依據(jù)規(guī)格說明書描述的程序功能來設(shè)計(jì)測試實(shí)例的方法稱為【】。

36.若輸入字符串:(圖片),則以下while循環(huán)體將執(zhí)行【】次。

while((ch=getchar())=='e')printf("*");

37.一棵二叉樹第6層(根結(jié)點(diǎn)為第一層)的結(jié)點(diǎn)最多為______個(gè)。

38.當(dāng)運(yùn)行以下程序時(shí),從鍵盤輸入abcdabcdef<CR>

cde<CR>

(<CR>表示回車),則下面程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

main()

{inta;chars[80],t[80];

gets(s);gets(t);

a=fun(s,t);

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

fun(char*p,char*q)

{inti;

char*p1=p;

char*q1;

for(i=0;*p!='\0';p++,i++)

{p=p1+i;

if(*p!=*q)continue;

for(q1=q+1,p=p+1;*p!='\0'&&*q1!='\0';q1++,p++)

if(*p!=*q1)break;

if(*q1=='\0')returni;}

return(-1);}

39.閱讀下面語句,則執(zhí)行后的輸出結(jié)果為【】。

#include"stdio.h"

main()

{chara,b;

for(a='0',b='9';a<b;a++,b--)

printf("%c%c",a,b);

printf("\n");}

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

intx=0,y=0;

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

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

三、1.選擇題(20題)41.下列有關(guān)數(shù)據(jù)庫的描述,正確的是A.數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程

B.數(shù)據(jù)的物理獨(dú)立性是指當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時(shí),數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)不變

C.關(guān)系中的每一列稱為元組,一個(gè)元組就是一個(gè)字段

D.如果一個(gè)關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個(gè)關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字

42.若有函數(shù)內(nèi)部說明:inta[3][4];則數(shù)組a中各元素

A.可在程序的運(yùn)行階段得到初值0

B.可在程序的編譯階段得到初值0

C.不能得到確定的初值

D.可在程序的編譯或運(yùn)行階段得到初值0

43.設(shè)intx=1,y=1;表達(dá)式(!x||y--)的值是()。

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

44.以下敘述中錯(cuò)誤的是

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

B.預(yù)處理命令行的最后不能以分號表示結(jié)束

C.#defineMAX是合法的宏定義命令行

D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的

45.以下程序中函數(shù)f的功能是將n個(gè)字符串按由大到小的順序進(jìn)行排序。#include<string.h>voidf(charp[][10],intn){chart[20];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j]<0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[][10]={“abc”,“aabdfg”,“abbd”,“dcdbe”,”cd”};inti;f(p,5);printf(“%d\n”,strlen(P[0]));}程序運(yùn)行后的輸出結(jié)果是

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

46.數(shù)據(jù)庫設(shè)計(jì)包括兩個(gè)方面的設(shè)計(jì)內(nèi)容,它們是()

A.概念設(shè)計(jì)和邏輯設(shè)計(jì)B.模式設(shè)計(jì)和內(nèi)模式設(shè)計(jì)C.內(nèi)模式設(shè)計(jì)和物理設(shè)計(jì)D.結(jié)構(gòu)特性設(shè)計(jì)和行為特性設(shè)計(jì)

47.以下敘述中錯(cuò)誤的是()

A.二進(jìn)制文件打開后可以先讀文件的末尾,而順序文件不可以

B.在程序結(jié)束時(shí),應(yīng)當(dāng)用fclose函數(shù)關(guān)閉已打開的文件

C.在利用fread函數(shù)從二進(jìn)制文件中讀數(shù)據(jù)時(shí),可以用數(shù)組名給數(shù)組中所有元素讀入數(shù)據(jù)

D.不可以用FILE定義指向二進(jìn)制文件的文件指針

48.下列可用于C語言用戶標(biāo)識符的—組是______。

A.voiddefineWORD

B.a3_b3_123Car

C.For-abcIFCase

D.2aDOsizeof

49.有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序運(yùn)行后的輸出結(jié)果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

50.若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯(cuò)誤的是A.函數(shù)調(diào)用可以作為獨(dú)立的語句存在

B.函數(shù)調(diào)用可以作為一個(gè)函數(shù)的實(shí)參

C.函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中

D.函數(shù)調(diào)用可以作為一個(gè)函數(shù)的形參

51.有以下程序:main(){charstr[]="xyz",*ps=str;while(*ps)ps++;for(ps--;ps-str>=O;ps--)puts(ps);}執(zhí)行后的輸出結(jié)果是()。

A.yzxyzB.zyzC.zyzxyzD.xxyxyz

52.表達(dá)式'8'-'2'的值是()。

A.整數(shù)6B.字符6C.表達(dá)式不合法D.字符8

53.下列說法正確的是()。

A.一個(gè)C程序可以有多個(gè)主函數(shù)

B.一個(gè)C語言的函數(shù)中只允許有一對花括號

C.C程序的書寫格式是自由的,一個(gè)語句可以寫在一行上,也可以寫在多行內(nèi)

D.在對C程序進(jìn)行編譯時(shí),可以發(fā)現(xiàn)注釋行中的拼寫錯(cuò)誤

54.設(shè)有如下程序#include<stdio.h>main(){int**k,*j,i=100;j=&i;k=&j;printf("%d\n",**k);}上述程序的輸出結(jié)果是_______。

A.運(yùn)行錯(cuò)誤B.100C.i的地址D.j的地址

55.以下選項(xiàng)中,當(dāng)x為大于1的奇數(shù)時(shí),值為0的表達(dá)式是

A.x%2==1B.x/2C.x%21=0D.x%2==0

56.以下選項(xiàng)中,與k=n++完全等價(jià)的表達(dá)式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1

57.下列選項(xiàng)中不能正確定義結(jié)構(gòu)體的是_______。

A.typedefstruct

B.structcolorcl{intred;{intred;intgreen;intgreen;intblue;intblue;}COLOR;};COLORcl;

C.structcolor

D.struct{intred;{intred;intgreen;intgreen;intblue;intblue;}cl;}cl;

58.運(yùn)行下面的程序,輸入字符串MicrosoftVisualStudio,則程序的執(zhí)行結(jié)果是()。#include<stdio.h>main(){charChr[20];scanf("%s",&Chr);printf("%s\n”,Chr);}

A.MicrosoftVisua1Studio

B.M

C.Microsoft

D.MicrosoflVisualStudio

59.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無關(guān)的是數(shù)據(jù)的()。A.存儲(chǔ)結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.物理和存儲(chǔ)結(jié)構(gòu)

60.棧通常采用的兩種存儲(chǔ)結(jié)構(gòu)是()。

A.順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)B.散列方式和索引方式C.鏈表存儲(chǔ)結(jié)構(gòu)和數(shù)組D.線性存儲(chǔ)結(jié)構(gòu)和非線性存儲(chǔ)結(jié)構(gòu)

四、選擇題(20題)61.

62.

63.

64.

65.

66.

67.下述程序執(zhí)行的輸出結(jié)果是()。

#include<stdio.h>

main()

{chara[2][4];,

strcpy(a。"are");strcpy(a[1],"you");

a[o][3]=&;

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論