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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.s1和s2已正確定義并分別指向兩個字符串。若要求:當(dāng)s1所指串大于s2所指串時,執(zhí)行語句s;則以下選項中正確的是()。

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,sl)>O)S;

D.if(stremp(s1,s2)>O)S;

2.寫出a*(b-c*d)+e-f/g*(h+i*j-k)的逆波蘭表達(dá)式()。

A.a(b-c*d)*+e-(f/g(h+i*j-k)*)

B.a(b-(cd*))*+e-(fg/(h+ij*-k)*)

C.a(bcd*-)*+e-(fg/hij*+k-*)

D.abcd*-*e+fg/hij*+k-*-

3.數(shù)據(jù)結(jié)構(gòu)在計算機(jī)內(nèi)存中的表示是指()。A.數(shù)據(jù)的存儲結(jié)構(gòu)B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)的邏輯結(jié)構(gòu)D.數(shù)據(jù)元素之間的關(guān)系

4.已知字母A的ASCII碼為十進(jìn)制的65,下面程序main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}的輸出是_________。

A.67,DB.B,CC.C,DD.不確定的值

5.有如下形式的函數(shù):intfun(inta[4][5],int*p[10],intn){…}調(diào)用函數(shù)之前需要對函數(shù)進(jìn)行說明,即所謂的函數(shù)向前引用說明,以下對fun函數(shù)說明正確的是()。A.intfun(intb[][5],int*r[],intm);

B.intfun(inta[4][],int*p[10],intn);

C.intfun(inta[][],int*p[],intn);

D.intfun(inta[],int*p[],intn);

6.已知有結(jié)構(gòu)體:structsk{inta;floatb;}data,*p;若有p=&data,則對data的成員a的正確引用是()。

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

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

C.x、y、z都是結(jié)構(gòu)體成員名

D.structstr是結(jié)構(gòu)體類型名

7.下面軟件中,屬中應(yīng)用軟件的是()

A.UnixB.人事管理系統(tǒng)C.數(shù)據(jù)庫管理理系統(tǒng)D.DOS

8.若f(n)=3n2+2n+1,則f(n)=()。

A.O(n2)B.O(n)C.O(2n)D.O(3n2)

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

10.

11.已知字符A的ASCII值是65,字符變量c1的值是‘A’,c2的值是‘D’,則執(zhí)行語句“printf(“%d,%d”,c1,c2-2);”的輸出結(jié)果是()。

A.65,68B.A,68C.A,BD.65,66

12.設(shè)有定義:intx[2][3];,則以下關(guān)于二維數(shù)組X的敘述錯誤的是()。

A.x[0]可看做是由3個整型元素組成的一維數(shù)組

B.x[0]和x[l]是數(shù)組名,分別代表不同的地址常量

C.數(shù)組X包含6個元素

D.可以用語句x[o]=0;為數(shù)組所有元素賦初值0

13.某二叉樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是A.10B.8C.6D.4

14.軟件工程的出現(xiàn)是由于()。A.A.程序設(shè)計方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機(jī)的出現(xiàn)D.計算機(jī)的發(fā)展

15.以下敘述中正確的是_____。A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

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

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

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

16.若有如下形式的函數(shù):intfun(inta[],int*p,intn){…}調(diào)用函數(shù)之前需要對函數(shù)進(jìn)行聲明,則以下選項中錯誤的是()。

A.intfun(int,int,int);

B.intfun(inta[],int*p,intn);

C.intfun(inta[],int*,int);

D.intfun(int[],int*,int);

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

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

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

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

19.

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

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

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

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

22.數(shù)據(jù)庫保護(hù)分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。

23.順序存儲方法是把邏輯上相鄰的結(jié)點存儲在物理位置______的存儲單元中。

24.有以下程序:

#include<stdio.h>

main()

{charc;

while((c=getchar())!='?')putchar(--c);

}

程序運(yùn)行時,如果從鍵盤輸入Y?N?<回車>,則輸出結(jié)果為【】。

25.有以下程序

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

執(zhí)行后輸出結(jié)果是______。

26.在ER圖中,矩形表示【】。

27.函數(shù)YangHui的功能是把楊輝三角形的數(shù)據(jù)賦給二維數(shù)組的下半三角,形式如下

1

11

121

1331

14641

其構(gòu)成規(guī)律是:

(1)第0列元素和主對角線元素均為1

(2)其余元素為其左上方和正上方元素之和

(3)數(shù)據(jù)的個數(shù)每行遞增1

請將程序補(bǔ)充完整。

#defineN6

voidYangHui(intx[N][N])

{inti,j;

x[0][0]=1;

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

{x[i][0]=【】=1;

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

x[i][j]=【】;

}

}

28.一棵二叉樹第6層(根結(jié)點為第一層)的結(jié)點最多為______個。

29.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。

30.若給fun函數(shù)的形參s傳送字符串“∪∪6354'abc"(其中∪表示空格字符),則函數(shù)的返回值是【】。

longfun(chars[])

{longn;intsign;

for(;isspace(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*s-'0');

returnsign*n;

}

31.設(shè)x、y、z為整型變量,且x=2,y=3,z=4,當(dāng)執(zhí)行以下語句后,x的值是______。

x*=(y++)+(--z);

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

33.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

34.當(dāng)調(diào)用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳遞的是【】。

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

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main0

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

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

voidreverse(inta[],intn)

{inti,t;

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

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

}

37.若按功能劃分,軟件測試的方法通常分為______測試方法和黑盒測試方法。

38.設(shè)有定義語句:inta[][3]={{0},{1},{2}};,則數(shù)組元素a[1][2]的值為()。

39.與十進(jìn)制數(shù)101等值的二進(jìn)制數(shù)為【】。

40.設(shè)一棵二叉樹的中序遍歷結(jié)果為DBEAFC,前序遍歷結(jié)果為ABDECF,則后序遍歷結(jié)果為【】。

三、1.選擇題(20題)41.有以下程序#include<stringh>main(intargc,char*argv[]){inti,len=0;fot(i=1;i<argc;i+=2)len+=strlen(argv[i]);printf("%d\n",len);}經(jīng)編譯連接后生成的可執(zhí)行文件是ex.exe,若運(yùn)行時輸入以下帶參數(shù)的命令行exabcdefgh3k44執(zhí)行后輸出結(jié)果是

A.14B.12C.8D.6

42.若二維數(shù)組a有m列,且設(shè)a[0][0]位于數(shù)組的第一個位置上,則計算任意元素a[i][j]在數(shù)組中位置的公式為______。

A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+1

43.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),

A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定

44.以下語句的輸出結(jié)果是()printf("%d,%d,%u\n",016,16,-16);

A.16,16,65420B.14,16,6542C.16,16,-16D.14,16,-16

45.下列說法正確的是

A.int(**def)[10];----def指向一個指針,該指針指向10個整型變量構(gòu)成的數(shù)組

B.int*(*gh[10]);---gh指向一個指針,該指針指向10個整型變量構(gòu)成的數(shù)組

C.int*(*gh[10]);---gh是一個指針,指向由10個指向整型變量的指針構(gòu)成的數(shù)組

D.A,C均正確

46.對象實現(xiàn)了數(shù)據(jù)和操作的結(jié)合,是指對數(shù)據(jù)和數(shù)據(jù)的操作進(jìn)行______。A.A.結(jié)合B.隱藏C.封裝D.抽象

47.讀程序:#include<stdio.h>f(intb[],intn){inti,r;r=1;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intx,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}上面程序的輸出結(jié)果是()。

A.720B.120C.24D.6

48.有如下程序#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=1;i<=NUM;i++)printf("%d\n"i)}該程序中的for循環(huán)執(zhí)行的次數(shù)是______。

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

49.下列程序的輸出結(jié)果是()。#include<stdio.h>#include<string.h>main(){chara[]="\n123\\";printf("%d,%d\n",strlen(a),sizeof(a));}

A.5,6B.5,5C.6,6D.6,5

50.下列各數(shù)據(jù)類型不屬于構(gòu)造類型的是()。

A.枚舉型B.共用型C.結(jié)構(gòu)型D.數(shù)組型

51.有以下程序:main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是______。

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

52.當(dāng)前在數(shù)據(jù)庫管理系統(tǒng)的研究方面,較活躍的是()

A.關(guān)系數(shù)據(jù)庫B.網(wǎng)狀數(shù)據(jù)庫C.空間數(shù)據(jù)庫D.層次數(shù)據(jù)庫

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

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

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

C.不能得到確定的初值

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

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

55.可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是

A.andB.DateC.HiD.case_2007y-m-dDr.TomBigl

56.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}

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

57.已知函數(shù)的調(diào)用形式:fread(buffer,size,count,fp);其中buffer代表的是()。

A.一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)

B.一個文件指針,指向要讀的文件

C.一個指針,是指向的輸入數(shù)據(jù)放在內(nèi)存中的起始位置

D.一個存儲區(qū),存放要讀的數(shù)據(jù)項

58.數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,()沒有專門的軟件對數(shù)據(jù)進(jìn)行管理。Ⅰ.人工管理階段Ⅱ.文件系統(tǒng)階段Ⅲ.數(shù)據(jù)庫階段()

A.僅ⅠB.僅ⅢC.Ⅰ和ⅡD.Ⅱ和Ⅲ

59.已有定義:charc;,程序前面已在命令行中包含ctype.h文件。不能用于判斷c中的字符是否為大寫字母的表達(dá)式是()。

A.isupper(c)

B.'A'<=c<='Z'

C.'A'<=c&&c<='Z'

D.c<=('z'-32)&&('a'-32)<=c

60.閱讀以下程序#include<stdio.h>main(){IntCase;floatprintF;printf("請輸入2個數(shù):");scanf("%d%f",&Case,&printF);printf("%d%f\n",Case,printF);}以下說法正確的是()。

A.定義浯句出錯,Case是關(guān)鍵字,不能用作用戶自定義標(biāo)識符,printF不能用作用戶自定義標(biāo)識符

B.定義語句出錯,Int無法被識別

C.定義語句無錯,scanf不能作為輸入函數(shù)使用

D.定義語句無錯,printf不能輸出Case的值

四、選擇題(20題)61.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進(jìn)行查找的是()。

A.順序存儲的有序線性表B.結(jié)性鏈表C.二叉鏈表D.有序線性鏈表

62.以下選項中不能作為C語言合法常量的是

A.’Fab’B.0.7e+9C."\b"D.’\01211’

63.現(xiàn)有格式化輸入語句,

已知在輸入數(shù)據(jù)后,

x,Y,z的值分別是23,56,78,則下列選項中正確的輸入格式是()。

A.23,56,78<Enter>

B.x=23,y=56,z=78<Enter>

C.x=23C,sumy=56,z=78<Enter>

D.x=23],sum]y=56,line]z=78<Enter>

64.在數(shù)據(jù)流圖(DFD)中,帶有說明的箭頭表示

A.模塊之間的調(diào)用關(guān)系B.程序的組成成分C.控制程序的執(zhí)行順序D.?dāng)?shù)據(jù)的流向

65.

66.若有說明語句:double*p,a;則通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是()。A.A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

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

D.p=&a;scanf("%1f",p);

67.有三個關(guān)系R、S和t如下:由關(guān)系R和s通過運(yùn)算得到關(guān)系T,則所使用的運(yùn)算為()。

A.笛卡兒積B.交C.并D.自然連接

68.有以下程序

prt(int*m,intn)

{

inti;

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

m[i]++;

}

main()

{

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

prt(a,5);

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

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

}

程序運(yùn)行后的輸出結(jié)果是A.A.1,2,3,4,5,

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

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

D.2,3,4,5,1,

69.有下面程序段:

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

A.18B.19C.20D.21

70.假定已建立以下鏈表結(jié)構(gòu),且指針P和q已指向如圖所示的結(jié)點:

則以下選項中可將q所指結(jié)點從鏈表中刪除并釋放該結(jié)點的語句組是()。

A.p一>next=q一>next;flee(q);

B.p=q一>next;free(q);

C.p=q;free(q);

D.(*p).next=(幸q).next;ffee(p);

71.以下選項中非法的字符常量是()。

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

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

#include"string.h"

fun(char*w,intn)

{chart,*s1,*s2;

s1=w;s2=w+n-1;

while(s1<s2)

{t=*s1++;

*s1=*s2--;

*s2=t;

}

}

main()

{staticcharp[]="1234567";

fun(p,strlen(p));

printf("%s",p);

}

A.7654321B.1717171

C.7171717D.1711717

73.

74.

若變量已正確定義,有以下程序段

i—o;

doprintf("%d,",i);while(i++);

printf("%d",i)

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

A.0,0B.0,1C.1,1D.程序進(jìn)入無限循環(huán)

75.表示關(guān)系M<=N<=P的C語言表達(dá)式為()。

A.(M<=N.AND(N<=P.

B.(M<=N.&&(N<=P.

C.(M<=N<=P.

D.(M<=N.&(N<=P.

76.以下定義語句中正確的是()。

A.

B.

C.

D.

77.設(shè)有棧S和隊列Q,其狀態(tài)為空,元素a1,a2,a3,a4,a5,a6依次入棧,出棧的元素則進(jìn)入隊列Q,若6個元素出隊列的順序是a2,a3,a4,a6,a5,a1,則棧的容量至少是

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

78.

79.

80.

五、程序改錯題(1題)81.由N個有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,下列給定程序函數(shù)fun()的功能是:利用折半查找法查找整數(shù)m在數(shù)組中的位置。若找到,返回其下標(biāo)值;否則,返回-1。折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍low和high(10w%high)。然后用m與中間位置(mid)上元素的值進(jìn)行比較。如果m的值大于中間位置元素的值,則下一次的查找范圍落在中間位置之后的元素中;反之,下一次的查找范圍落在中間位置之前的元素中,直到low>;high,查找結(jié)束。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc,該函數(shù)的功能是:將放在字符串?dāng)?shù)組中的M個字符串(每串的長度不超過N),按順序合并組成一個新的字符串。例如,若字符串?dāng)?shù)組中的M個字符串為:ABCDBCDEFGCDEFGHI則合并后的字符串內(nèi)容應(yīng)該是ABCDBCDEFGCDEFGHl。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#defineM3#defineN20voidproc(chararr[M][N],char*b){}voidmain{charstr[M][N]={"ABCD","BCDEFG","CDEFGHl"),i;chararr[100]={"##################"};printf(”Thestrin9:kn”);for(i=0;i<M;i++)puts(str[i]);printf("\n");proc(str,arr);printf("TheAstring:\n");printf("%S",arr);printf("\n\n");}

參考答案

1.D在C語言中,不能直接比較兩個字符串的大小,必須用特定的函數(shù)來完成,選項A錯誤;選項B不管大于還是小于都執(zhí)行S,不符合題意;選項C正好相反,當(dāng)s2大于s1時,執(zhí)行語句S,可知選項D正確。

2.D

3.A數(shù)據(jù)結(jié)構(gòu)在計算機(jī)內(nèi)存中的表示指的是數(shù)據(jù)的存儲結(jié)構(gòu)。數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的表示。數(shù)據(jù)元素之間的關(guān)系有兩種不同的表示方法:順序映象和非順序映象,并由此得到兩種不同的存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)。

4.A解析:由于字符“5”和“3”的ASCII碼相差為2,所以ch1經(jīng)過運(yùn)算后的值應(yīng)為65+2=67;同理,ch2經(jīng)過運(yùn)算后的值應(yīng)為65+3=68,即是字符“D”。

5.A題干中函數(shù)的定義指出了函數(shù)名為fun,返回值的數(shù)據(jù)類型為int。函數(shù)包含3個參數(shù),第1個參數(shù)是整型的二維數(shù)組,第2個參數(shù)是整型數(shù)組,第3個參數(shù)是整型變量。在定義二維數(shù)組時,必須指定第二維的長度,所以選項B、C、D錯誤,選項A正確。本題答案為A選項。

6.B解析:本題主要考查結(jié)構(gòu)類型的定義:struct是結(jié)構(gòu)體類型的關(guān)鍵字;structstr是結(jié)構(gòu)體類型名;x、y、z都是結(jié)構(gòu)體成員名;st是結(jié)構(gòu)變量名。

7.B

8.A

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

10.D

11.D輸出時以%d整型格式輸出,所以輸出字符變量c1的值為65,c2-2的值為68-2,即66。故本題答案為D選項。

12.Dx[0]是不能賦值的。

13.C根據(jù)二叉樹的性質(zhì),在任意二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。

14.C解析:軟件工程的基本概念。軟件工程概念的出現(xiàn)源自于軟件危機(jī)。為了消除軟件危機(jī),通過認(rèn)真研究解決軟件危機(jī)的方法,認(rèn)識到軟件工程是使計算機(jī)軟件走向工程科學(xué)的途徑,逐步形成了軟件工程的概念。

15.C解析:算法的特性中包括“有零個或多個輸入”及“有一個或多個輸出”這兩個特性。一個算法得到的結(jié)果就是算法的輸出,沒有輸出的算法是沒有意義的,所以一千算法必須至少有一個輸出。

16.AC語言中,函數(shù)聲明的函數(shù)名、返回值類型和參數(shù)列表必須與函數(shù)定義相同。其中參數(shù)列表中可以省略參數(shù)名。題干中,fun函數(shù)返回整型,3個參數(shù)分別是:整型指針、整型指針、整型。選項A中,第1個參數(shù)應(yīng)該是整型指針類型,第2個參數(shù)也應(yīng)該是指針類型,錯誤;其他選項都正確。故本題答案為A選項。

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

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

19.D

20.C

21.1-21,-2解析:題中外層while循環(huán)的循環(huán)條件是y--!=-1,即y>=0;內(nèi)層do…while循環(huán)的循環(huán)條件是y--即y-->0,y>=1。注意:break和continue語句在循體中的作用。

22.完整性控制完整性控制

23.相鄰相鄰

24.XX解析:程序是從鍵盤緩沖區(qū)循環(huán)接收字符,并輸出接收到的字符在ASCII碼表中的前一個字符,直到接收到‘?’為止。

25.00解析:本題中的for循環(huán)共執(zhí)行了6次,每執(zhí)行一次將相應(yīng)i的值相乘,最后當(dāng)i=-1時停止循環(huán).該for循環(huán)執(zhí)行完后t的值為5*4*3*2*1*0=0,故最后輸出I的值為0。

26.實體實體解析:在E-R圖中用矩形表示實體;橢圓形表示屬性;菱形表示聯(lián)系。

27.x[i][i]x[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]解析:在程序中用兩重循環(huán)。在第一層循環(huán)中將每行的第0列賦值為1,對角線上的元素賦值為1顯然在第一個空中應(yīng)該填入對角線上的元素即x[i][i],在第二重循環(huán)中給每行其他元素賦值,而在每行中除了第0列和對角線的元素外其他元素為其對應(yīng)的上一行中同列和同列的前一列的元素相加,所以在第二個空中應(yīng)該填入x[i-1][j-1]+x[i-1][j]。

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

29.00解析:已知a=10,b=20,所以邏輯表達(dá)式a<b的值為true,即為1,在這個表達(dá)式前面有一個邏輯運(yùn)算符!,表示反操作,所以整個語句的值應(yīng)當(dāng)為false,即為0。

30.63546354解析:函數(shù)fun的第一個for循環(huán)跳過字符串的前導(dǎo)空白符,接著判斷第一個非空白符是否是負(fù)號,若是,則置變量sign為-1;否則,置變量sign為1。接著的if語句在第一個非空白字符是負(fù)號或正號時,跳過該字符。以后的for循環(huán)將后面的數(shù)字符當(dāng)作十進(jìn)制數(shù)的各位數(shù)字轉(zhuǎn)換為一個長整數(shù)n,當(dāng)遇字符a時,結(jié)束循環(huán)。最后,函數(shù)返回sign與n的乘積。所以若調(diào)用函數(shù)時提供的實參是“∪∪6354abc”,則函數(shù)的返回值是6354。

31.12。12。解析:表達(dá)式x*=(y++)+(--z)相當(dāng)于先進(jìn)行z的自減運(yùn)算,再執(zhí)行x=x*(y+z),最后y自加。因此,變量x的值為12,y和z的值分別是4和3。

32.3232解析:while(表達(dá)式)的功能是:首先計算表達(dá)式的值,若為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢,再計算表達(dá)式的值,若仍為真,則重復(fù)執(zhí)行循環(huán)體語句,直到表達(dá)式的值為假時,結(jié)束while語句的執(zhí)行,繼續(xù)執(zhí)行while語句后面的語句:i=0時滿足循環(huán)條件,也滿足if的條件,執(zhí)行語句得i=11,a=11,第2次循環(huán)不滿足if的條件,執(zhí)行i--,i=10,執(zhí)行i+=11;a+=i后,得i=21,a=32,不滿足i<20,循環(huán)結(jié)束。

33.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。

34.數(shù)組的首地址數(shù)組的首地址解析:在函數(shù)中,可以通過指針變量來引用調(diào)用函數(shù)中對應(yīng)的數(shù)組元素,此操作是通過傳遞數(shù)組的首地址來實現(xiàn)的。

35.11231123解析:在主函數(shù)中第一次調(diào)用func子函數(shù)時,m=0,i=2,i=i+m+1=3,m=i+a+b=3+5+3=11。因為在子函數(shù)中將m和i定義成了static類型,所以在子函數(shù)中對m和i進(jìn)行的改變,在下一次調(diào)用子函數(shù)時能進(jìn)行保存,所以第二次調(diào)用子函數(shù)時,m=11,i==3,則i=i+m+1=15,m=i+a+b=15+5+3=23。

36.2222解析:在main函數(shù)中,調(diào)用reverse函數(shù)將b數(shù)組中的前8個成員進(jìn)行互置,執(zhí)行完畢后,b數(shù)組中的成員為{8,7,6,5,4,3,2,1,9,10},然后再執(zhí)行for循環(huán)結(jié)構(gòu),將b[6],b[7]…b[9]的值相加,結(jié)果為22。

37.白盒白盒解析:軟件測試的方法分為白盒測試方法和黑盒測試方法.

38.00解析:二維數(shù)組中當(dāng)某行一對花括號內(nèi)的初值個數(shù)小于該行中元素的個數(shù)時,系統(tǒng)將自動給該行后面的元素補(bǔ)初值0,由此可見數(shù)組a[1][2]=0。

39.1100101

40.DEBFCA

41.D解析:主函數(shù)的第一個參數(shù)argc為整型參數(shù),記下從命令行輸入的參數(shù)的個數(shù);第二個參數(shù)argv是一個字符型的指針數(shù)組,它的每一個元素指向命令行輸入的參數(shù)字符數(shù)。在本例中argc的值為5,argv[0]指向字符串“ex”,argv[1]指向參數(shù)字符串“abed”,argv[2]指向字符串“efg”,argv[3]指向參數(shù)字符串“h3”,argv[4]指向參數(shù)字符串“k44”。在main()函數(shù)中,for循環(huán)執(zhí)行了2次,當(dāng)i=1時,len=0+strlen(argv[1]),而其中argv[1]=“abcd”,故此時len的值為4;當(dāng)i=3時,len=4+strlen(argv[3]),而其中argv[3]=“h3”,故此時len的值為6;當(dāng)i=5時,退出循環(huán),故最后輸出的len的值為6。

42.D解析:a[i][j]的位置應(yīng)該是第i+1行,第j+1列,那么它的位置是(i+1-1)*m+j+1=i*m+j+1。

43.D解析:在C語言的標(biāo)準(zhǔn)中,short占2個字節(jié)、long占4個字節(jié),但int的大小和編譯系統(tǒng)相關(guān)。例如在Turbo\u3000C\u30002.0中,int占2個字節(jié),但在VisualC++6.0(VC6可以用做C語言編譯器)中占4個字節(jié)。故本題應(yīng)該選擇D。

44.B

45.Dint*(*gh[10]);---gh是一個指針,指向由10個指向整型變量的指針構(gòu)成的數(shù)組,int(**def)[10];---def指向一個指針,該指針指向10個整型變量構(gòu)成的數(shù)組。

46.C解析:對象是由數(shù)據(jù)及可以對這些數(shù)據(jù)施加的操作組成的統(tǒng)一體。對象的內(nèi)部,即處理能力的實行和內(nèi)部狀態(tài),對外是看不見的,這一特性稱做對象的封裝。

47.B解析:本題考查函數(shù)的調(diào)用。函數(shù)f的功能是將b[]小的第1到n+1個數(shù)組元素的值進(jìn)行相乘運(yùn)算,然后返回其結(jié)果。由于實參3傳給形參n,所以f的返回值為x=2*3*4=5=120。

48.B解析:該題目測試考生對宏替換的理解。這是一種簡單的情況:不帶參數(shù)的宏。關(guān)鍵要注意在對2*M+1進(jìn)行宏替換時,要將宏名M原封不動地代進(jìn)去,得到NUM的形式為2*N+1+1(千萬不要隨意給N+1加上小括號,使NUM變?yōu)?。(N+1)+1,這就是宏名和變量名之間的區(qū)別),在將N代進(jìn)去,得到NUM的值為6。

49.A解析:轉(zhuǎn)義字符'\\n'表示換行,'\\\\'表示反斜杠,函數(shù)strlen()是計算字符串的長度,不包括文件結(jié)束標(biāo)志('\\0'),函數(shù)sizeof()統(tǒng)計字符串所占的字節(jié)數(shù)。

50.A本題考查高級語言的數(shù)據(jù)類型。其中屬于構(gòu)造類型的主要有結(jié)構(gòu)體類型、聯(lián)合體類型,即共用體類型和數(shù)組類型。

51.B解析:主函數(shù)中先定義了一個整型變量a,一個字符變量c并賦初值10,一個浮點型變量f并賦初值100.00和一個double型x,接著執(zhí)行a=f/=c*=(x=6.5),該語句從右向左計算,先把6.5賦值給x(該括號表達(dá)式的值也為6.5),此時x的值變?yōu)?.5,然后執(zhí)行c*=(x=6.5)相當(dāng)于執(zhí)行c=c*(x=6.5),此時c的值為65,接著向左執(zhí)行f/c*=(x=6.5),語句相當(dāng)于執(zhí)行f=f/c,所以f的值為100/65≈1.538。接著向最右邊執(zhí)行“a=f”,由于a是整型變量,所以a最后去f的整數(shù)部分為1。程序最后輸出的a、c、f和x的值(f和x只保留小數(shù)點后面1位)分別為1、65、1.5、6.5。所以,4個選項中選項B符合題意。

52.C

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

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

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

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

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

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

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

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

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

55.A解析:在C語言中,合法標(biāo)識符的命名規(guī)則是:標(biāo)識符可以由字母、數(shù)字和下劃線3種字符組成,且第一個字符必須為字母或下劃線。C語言的標(biāo)識符可以分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符。選項B)和C)中的橫線以及點都不合法,選項D)中的case為C語言關(guān)鍵字。

56.A解析:函數(shù)定義時如果數(shù)據(jù)類型默認(rèn),則默認(rèn)為int。函數(shù)中如果有“retum(表達(dá)式):”語句,表達(dá)式的類型可能與函數(shù)的類型不一致,但它并不能改變函數(shù)的類型,實際情況是把表達(dá)式轉(zhuǎn)換為函數(shù)值的類型作為返回值,因此本題的函數(shù)值類型是int。

57.C解析:數(shù)據(jù)塊輸入/輸出函數(shù)的調(diào)用形式為:fread(buffer,size,count,fp)。fread函數(shù)參數(shù)說明:“buffer”是一個指引,對fread來說,它是讀入數(shù)據(jù)的存放地址;“size”是要讀寫的字節(jié)數(shù);“count”是要進(jìn)行讀寫多少個size字節(jié)的數(shù)據(jù)項;“fp”是指文件型指針。

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

59.B解析:大寫字母從'A'~'Z'的ASCII碼是連續(xù)的,所以如果當(dāng)—個字符大于等于'A'且小于等于'z'時,那這個字符就一定是一個大寫字母,故選項C正確。C語言中的庫函數(shù)isupper()的作用也正是判斷一個字符是否為大寫字母的,故選項A正確。在ASCII碼中,小寫字母的編碼也是連續(xù)的,對應(yīng)的小寫字符比大寫字符的ASCII碼值大32,所以選項D經(jīng)過小寫字符-32后,換算成了對應(yīng)的大寫字母'Z'和'A',所得到結(jié)果和選項C是一致的,故也是正確的。選項B中,C語言的邏輯表達(dá)式不能直接連寫,而應(yīng)該寫成選項C那樣,故是錯誤的,應(yīng)該選擇B。

60.B解析:C語畝足一種大小寫敏感的語言,因此Int應(yīng)為int,而CaseprintF則可以使用。

61.A\nA?!窘馕觥慷址ú檎抑贿m用于順序存儲的有序線性表,對于順序存儲的非有序線性表和線性鏈表,都只能采用順序查找。

\n

62.A本題考查C語言中常量的定義。常量是指程序在運(yùn)行過程中,其值不能被改變的量。C語言中常見的常量主要有整型常量、實型常量、字符型常量。整型常量包括十進(jìn)制整數(shù),如456;八進(jìn)制整數(shù),以0開頭,如0456;十六進(jìn)制整數(shù),以0x開頭,如0x456。實型變量包括十進(jìn)制小數(shù)形式,如.456;指數(shù)形式,如456e0,字母e前面必須有數(shù)字,e后面的數(shù)字必須為整數(shù),如456e-4。字符型常量是用單撇號括起來的一個字符。如,’a’,’A’等。’a’不等于’A’。字符型常量還包括一種轉(zhuǎn)義字符,以’\\’開頭,表示將’\\’后面的字符轉(zhuǎn)換成另外的意義。字符串也可以作為常量,用雙撇號括起來,如'abc'。本題A選項中單撇號括起來的不是一個字符,而是三個字符,故不是合法常量。B選項是實型變量的指數(shù)表示形式。C選項是字符串常量,用雙撇號引起來。D選項是字符’\\0’,因為在碰到’\\0’后,字符串結(jié)束,因此只讀取到’\\0’,所以D選項是合法常量。

63.D若在scanf的格式化控制串中插人了其他字符,則在輸入時要求按一一對應(yīng)的位置原樣輸入這些字符。格式化輸入函數(shù)必須嚴(yán)格按照雙引號里面的格式進(jìn)行輸入。所以選擇D,也可以輸入x=23],sum]Y=56,line]z=78L<Enter>即是否輸入最后的L都不影響前面三個變量的賦值。在格式化輸出函數(shù)中,格式控制串中除了合法的格式說明外,可以包含任意的合法字符。

64.D數(shù)據(jù)流圖的四種基本符號分別是數(shù)據(jù)的源點或終點、數(shù)據(jù)流、數(shù)據(jù)存儲和加工,其中帶有說明的箭頭表示數(shù)據(jù)流,即數(shù)據(jù)的流向。

數(shù)據(jù)流是一組確定的數(shù)據(jù)在系統(tǒng)內(nèi)傳播的路徑。數(shù)據(jù)流的流向由箭頭方向指出,可從加工流向加工,也可以從加工流向數(shù)據(jù)存儲或從數(shù)據(jù)存儲流向加工,還可以從源點流向加工或從加工流向終點。在數(shù)據(jù)流圖中,除了與數(shù)據(jù)存儲之間的數(shù)據(jù)流不用命名外,數(shù)據(jù)流應(yīng)該對應(yīng)一個唯一的名字。

65.C

66.Ddouble*p,a定義了一個指向雙精度型的指針變量P和雙精度型變量a,p=&a表示將變量a的地址賦給指針變量p;scanf("%If",p)表示用鍵盤輸入的數(shù)賦給指針變量P所指向的地址單元中,scanf函數(shù)要求在輸入double型數(shù)據(jù),格式控制符必須用%1f。否則,數(shù)據(jù)不能正確輸入。所以選項D正確。

67.D自然連接是一種特殊的等值連接,它要求兩個關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉,因此根據(jù)關(guān)系T中的有序組可知關(guān)系R與s進(jìn)行的是自然連接操作,故本題答案為D)。

68.C用數(shù)組名作為函數(shù)實參時,不是把數(shù)組的值傳遞給形參,而是把實參數(shù)組的起始地址傳遞給形參數(shù)組,這樣兩個數(shù)組就共同占用同一段內(nèi)存單元。本題通過“prt(a,5);”將數(shù)組a的首地址傳遞給了指針變量m,使指針變量m指向數(shù)組a的首地址,那么,對指針變量所指向的存儲單元的內(nèi)容的改變就是對數(shù)組a中的元素的改變。題中函數(shù)prt的作用是將指針變量m所指向的存儲單元中的元素值各加上1,故數(shù)組a中的值也隨之變化,所以。輸出的數(shù)組元素的值為2,3,4,5,6,。

69.B字符串連接函數(shù)strcat的調(diào)用形式如下:strcat(sl,s2)。此函數(shù)將s2所指字符串的內(nèi)容連接到sl所指的字符串后面,并自動覆蓋sl串末尾的尾標(biāo),函數(shù)返回sl的地址值。本題中首先將二維數(shù)組中各行的字符串都復(fù)制到了指針P所指向的一維數(shù)組k的地址空間,然后用strlen函數(shù)求得k數(shù)組的長度i,即l9。

70.A本題考查刪除鏈表中的結(jié)點操作,其方法是將要刪除結(jié)點的上個結(jié)點的下個結(jié)點指向要刪除結(jié)點的下個結(jié)點,然后釋放該要刪除結(jié)點,所以選項A正確。

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

72.D函數(shù)的功能是將數(shù)組的元素交換,首先s1=p,即s1指向1,s2=p+7-1,即s2指向7,t=*s1++,將1賦給t,然后s1指向2,*s1=*s2++,將7賦給s1,即原來2的位置,s2指向6,然后*s2=t,將1賦給*s2即原來6的位置,…….

73.A

74.B

\n本題中,變量i的初始值等于0,執(zhí)行循環(huán)體中的語句后,輸出i的值為0。while后面括號中表達(dá)式i++的值為0,循環(huán)結(jié)束。此時變量i自加1,所以再次“1”。

\n

75.BM<=N和N<=P是邏輯與的關(guān)系,應(yīng)使用運(yùn)算符&&。

76.C解析:選項A中兩個變量的定義應(yīng)當(dāng)以逗號隔開;選項B中a和b應(yīng)當(dāng)分開賦值;選項D中變量類型不相匹配,b應(yīng)當(dāng)是指針型變量。

77.C本題主要考查棧和隊列的基本特性。棧是限定僅在表尾進(jìn)行插入和刪除操作的線性表,而隊列則只允許在隊尾進(jìn)行插入操作,在隊頭進(jìn)行刪除操作。棧對數(shù)據(jù)元素的操作具有先進(jìn)后出的特點,而隊列對數(shù)據(jù)元素的操作具有先進(jìn)先出的特點。

本題要求對棧和隊列一起操作,將出棧S的元素進(jìn)入隊列Q,元素出隊的順序是a2,a3,a4,a6,a5,a1,根據(jù)隊列的特性,那么元素入隊的順序也應(yīng)該為a2,a3,a4,a6,a5,a1,這也就說明元素出棧的順序為a2,a3,a4,a6,a5,a1,但元素入棧的順序是a1,a2,a3,a4,a5,a6,根據(jù)這兩個序列,我們可以推斷出元素入棧出棧的過程為:首先a1入棧,它不馬上出棧,而是讓a2入棧,然后a2出棧,a3、a4分別入棧后又出棧,接著a5入棧,而不接著出棧,而是讓a6入棧,這時,棧S中元素的個數(shù)為3個,分別是a1,a5,a6。因此,棧的容量至少為3。

78.B

79.D

80.A

81.(1)錯誤:voidfun(inta[],intm)

正確:intfun(inta[],intm)或fun(inta[],intm)

(2)錯誤:elseIf(m>a[mid])

正確:elseif(m>a[mid])

【解析】本題考查的是折半查找算法、函數(shù)的定義和if...else語句。首先,函數(shù)的定義需要考慮返回值的類型,返回值為int類型。本題需求值,所以函數(shù)的返回值不能是void類型。因為如果去函數(shù)類型標(biāo)識符,系統(tǒng)默認(rèn)為int類型,所以函數(shù)定義應(yīng)為“intfun(inta[],intm)”或“fun(inta[],intm)”;關(guān)鍵詞if要區(qū)分大小寫,寫錯系統(tǒng)將無法識別。

82.voidproc(chararr[M][N],char*b){inti,j,k=0;for(i=0;i<M;i++)//i表示其行下標(biāo)for(j=0;arr[i][j]!=\0;j++)//由于每行的個數(shù)不等,因此用a[i][j]!=\0來作為循環(huán)結(jié)束的條件b[k++]=arr[i][j];//把二維數(shù)組中的元素放到b的一維數(shù)組中,b[k]=\0;//最后把b賦\0作為字符串結(jié)束的標(biāo)志)【解析】字符串?dāng)?shù)組中每一行都是一個一個完整的字符串,其結(jié)束標(biāo)志為\0。因此通過字符串的結(jié)束標(biāo)志來判斷每一個字符串是否結(jié)束,將字符串?dāng)?shù)組中的所有字符串均賦值新的一維數(shù)組b來完成字符串的合并。2022-2023年黑龍江省七臺河市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.s1和s2已正確定義并分別指向兩個字符串。若要求:當(dāng)s1所指串大于s2所指串時,執(zhí)行語句s;則以下選項中正確的是()。

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,sl)>O)S;

D.if(stremp(s1,s2)>O)S;

2.寫出a*(b-c*d)+e-f/g*(h+i*j-k)的逆波蘭表達(dá)式()。

A.a(b-c*d)*+e-(f/g(h+i*j-k)*)

B.a(b-(cd*))*+e-(fg/(h+ij*-k)*)

C.a(bcd*-)*+e-(fg/hij*+k-*)

D.abcd*-*e+fg/hij*+k-*-

3.數(shù)據(jù)結(jié)構(gòu)在計算機(jī)內(nèi)存中的表示是指()。A.數(shù)據(jù)的存儲結(jié)構(gòu)B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)的邏輯結(jié)構(gòu)D.數(shù)據(jù)元素之間的關(guān)系

4.已知字母A的ASCII碼為十進(jìn)制的65,下面程序main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}的輸出是_________。

A.67,DB.B,CC.C,DD.不確定的值

5.有如下形式的函數(shù):intfun(inta[4][5],int*p[10],intn){…}調(diào)用函數(shù)之前需要對函數(shù)進(jìn)行說明,即所謂的函數(shù)向前引用說明,以下對fun函數(shù)說明正確的是()。A.intfun(intb[][5],int*r[],intm);

B.intfun(inta[4][],int*p[10],intn);

C.intfun(inta[][],int*p[],intn);

D.intfun(inta[],int*p[],intn);

6.已知有結(jié)構(gòu)體:structsk{inta;floatb;}data,*p;若有p=&data,則對data的成員a的正確引用是()。

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

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

C.x、y、z都是結(jié)構(gòu)體成員名

D.structstr是結(jié)構(gòu)體類型名

7.下面軟件中,屬中應(yīng)用軟件的是()

A.UnixB.人事管理系統(tǒng)C.數(shù)據(jù)庫管理理系統(tǒng)D.DOS

8.若f(n)=3n2+2n+1,則f(n)=()。

A.O(n2)B.O(n)C.O(2n)D.O(3n2)

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

10.

11.已知字符A的ASCII值是65,字符變量c1的值是‘A’,c2的值是‘D’,則執(zhí)行語句“printf(“%d,%d”,c1,c2-2);”的輸出結(jié)果是()。

A.65,68B.A,68C.A,BD.65,66

12.設(shè)有定義:intx[2][3];,則以下關(guān)于二維數(shù)組X的敘述錯誤的是()。

A.x[0]可看做是由3個整型元素組成的一維數(shù)組

B.x[0]和x[l]是數(shù)組名,分別代表不同的地址常量

C.數(shù)組X包含6個元素

D.可以用語句x[o]=0;為數(shù)組所有元素賦初值0

13.某二叉樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是A.10B.8C.6D.4

14.軟件工程的出現(xiàn)是由于()。A.A.程序設(shè)計方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機(jī)的出現(xiàn)D.計算機(jī)的發(fā)展

15.以下敘述中正確的是_____。A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

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

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

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

16.若有如下形式的函數(shù):intfun(inta[],int*p,intn){…}調(diào)用函數(shù)之前需要對函數(shù)進(jìn)行聲明,則以下選項中錯誤的是()。

A.intfun(int,int,int);

B.intfun(inta[],int*p,intn);

C.intfun(inta[],int*,int);

D.intfun(int[],int*,int);

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

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

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

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

19.

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

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

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

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

22.數(shù)據(jù)庫保護(hù)分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。

23.順序存儲方法是把邏輯上相鄰的結(jié)點存儲在物理位置______的存儲單元中。

24.有以下程序:

#include<stdio.h>

main()

{charc;

while((c=getchar())!='?')putchar(--c);

}

程序運(yùn)行時,如果從鍵盤輸入Y?N?<回車>,則輸出結(jié)果為【】。

25.有以下程序

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

執(zhí)行后輸出結(jié)果是______。

26.在ER圖中,矩形表示【】。

27.函數(shù)YangHui的功能是把楊輝三角形的數(shù)據(jù)賦給二維數(shù)組的下半三角,形式如下

1

11

121

1331

14641

其構(gòu)成規(guī)律是:

(1)第0列元素和主對角線元素均為1

(2)其余元素為其左上方和正上方元素之和

(3)數(shù)據(jù)的個數(shù)每行遞增1

請將程序補(bǔ)充完整。

#defineN6

voidYangHui(intx[N][N])

{inti,j;

x[0][0]=1;

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

{x[i][0]=【】=1;

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

x[i][j]=【】;

}

}

28.一棵二叉樹第6層(根結(jié)點為第一層)的結(jié)點最多為______個。

29.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。

30.若給fun函數(shù)的形參s傳送字符串“∪∪6354'abc"(其中∪表示空格字符),則函數(shù)的返回值是【】。

longfun(chars[])

{longn;intsign;

for(;isspace(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*s-'0');

returnsign*n;

}

31.設(shè)x、y、z為整型變量,且x=2,y=3,z=4,當(dāng)執(zhí)行以下語句后,x的值是______。

x*=(y++)+(--z);

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

33.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

34.當(dāng)調(diào)用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳遞的是【】。

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

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main0

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

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

voidreverse(inta[],intn)

{inti,t;

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

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

}

37.若按功能劃分,軟件測試的方法通常分為______測試方法和黑盒測試方法。

38.設(shè)有定義語句:inta[][3]={{0},{1},{2}};,則數(shù)組元素a[1][2]的值為()。

39.與十進(jìn)制數(shù)101等值的二進(jìn)制數(shù)為【】。

40.設(shè)一棵二叉樹的中序遍歷結(jié)果為DBEAFC,前序遍歷結(jié)果為ABDECF,則后序遍歷結(jié)果為【】。

三、1.選擇題(20題)41.有以下程序#include<stringh>main(intargc,char*argv[]){inti,len=0;fot(i=1;i<argc;i+=2)len+=strlen(argv[i]);printf("%d\n",len);}經(jīng)編譯連接后生成的可執(zhí)行文件是ex.exe,若運(yùn)行時輸入以下帶參數(shù)的命令行exabcdefgh3k44執(zhí)行后輸出結(jié)果是

A.14B.12C.8D.6

42.若二維數(shù)組a有m列,且設(shè)a[0][0]位于數(shù)組的第一個位置上,則計算任意元素a[i][j]在數(shù)組中位置的公式為______。

A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+1

43.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),

A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定

44.以下語句的輸出結(jié)果是()printf("%d,%d,%u\n",016,16,-16);

A.16,16,65420B.14,16,6542C.16,16,-16D.14,16,-16

45.下列說法正確的是

A.int(**def)[10];----def指向一個指針,該指針指向10個整型變量構(gòu)成的數(shù)組

B.int*(*gh[10]);---gh指向一個指針,該指針指向10個整型變量構(gòu)成的數(shù)組

C.int*(*gh[10]);---gh是一個指針,指向由10個指向整型變量的指針構(gòu)成的數(shù)組

D.A,C均正確

46.對象實現(xiàn)了數(shù)據(jù)和操作的結(jié)合,是指對數(shù)據(jù)和數(shù)據(jù)的操作進(jìn)行______。A.A.結(jié)合B.隱藏C.封裝D.抽象

47.讀程序:#include<stdio.h>f(intb[],intn){inti,r;r=1;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intx,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}上面程序的輸出結(jié)果是()。

A.720B.120C.24D.6

48.有如下程序#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=1;i<=NUM;i++)printf("%d\n"i)}該程序中的for循環(huán)執(zhí)行的次數(shù)是______。

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

49.下列程序的輸出結(jié)果是()。#include<stdio.h>#include<string.h>main(){chara[]="\n123\\";printf("%d,%d\n",strlen(a),sizeof(a));}

A.5,6B.5,5C.6,6D.6,5

50.下列各數(shù)據(jù)類型不屬于構(gòu)造類型的是()。

A.枚舉型B.共用型C.結(jié)構(gòu)型D.數(shù)組型

51.有以下程序:main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是______。

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

52.當(dāng)前在數(shù)據(jù)庫管理系統(tǒng)的研究方面,較活躍的是()

A.關(guān)系數(shù)據(jù)庫B.網(wǎng)狀數(shù)據(jù)庫C.空間數(shù)據(jù)庫D.層次數(shù)據(jù)庫

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

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

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

C.不能得到確定的初值

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

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

55.可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是

A.andB.DateC.HiD.case_2007y-m-dDr.TomBigl

56.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}

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

57.已知函數(shù)的調(diào)用形式:fread(buffer,size,count,fp);其中buffer代表的是()。

A.一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)

B.一個文件指針,指向要讀的文件

C.一個指針,是指向的輸入數(shù)據(jù)放在內(nèi)存中的起始位置

D.一個存儲區(qū),存放要讀的數(shù)據(jù)項

58.數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,()沒有專門的軟件對數(shù)據(jù)進(jìn)行管理。Ⅰ.人工管理階段Ⅱ.文件系統(tǒng)階段Ⅲ.數(shù)據(jù)庫階段()

A.僅ⅠB.僅ⅢC.Ⅰ和ⅡD.Ⅱ和Ⅲ

59.已有定義:charc;,程序前面已在命令行中包含ctype.h文件。不能用于判斷c中的字符是否為大寫字母的表達(dá)式是()。

A.isupper(c)

B.'A'<=c<='Z'

C.'A'<=c&&c<='Z'

D.c<=('z'-32)&&('a'-32)<=c

60.閱讀以下程序#include<stdio.h>main(){IntCase;floatprintF;printf("請輸入2個數(shù):");scanf("%d%f",&Case,&printF);printf("%d%f\n",Case,printF);}以下說法正確的是()。

A.定義浯句出錯,Case是關(guān)鍵字,不能用作用戶自定義標(biāo)識符,printF不能用作用戶自定義標(biāo)識符

B.定義語句出錯,Int無法被識別

C.定義語句無錯,scanf不能作為輸入函數(shù)使用

D.定義語句無錯,printf不能輸出Case的值

四、選擇題(20題)61.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進(jìn)行查找的是()。

A.順序存儲的有序線性表B.結(jié)性鏈表C.二叉鏈表D.有序線性鏈表

62.以下選項中不能作為C語言合法常量的是

A.’Fab’B.0.7e+9C."\b"D.’\01211’

63.現(xiàn)有格式化輸入語句,

已知在輸入數(shù)據(jù)后,

x,Y,z的值分別是23,56,78,則下列選項中正確的輸入格式是()。

A.23,56,78<Enter>

B.x=23,y=56,z=78<Enter>

C.x=23C,sumy=56,z=78<Enter>

D.x=23],sum]y=56,line]z=78<Enter>

64.在數(shù)據(jù)流圖(DFD)中,帶有說明的箭頭表示

A.模塊之間的調(diào)用關(guān)系B.程序的組成成分C.控制程序的執(zhí)行順序D.?dāng)?shù)據(jù)的流向

65.

66.若有說明語句:double*p,a;則通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是()。A.A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

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

D.p=&a;scanf("%1f",p);

67.有三個關(guān)系R、S和t如下:由關(guān)系R和s通過運(yùn)算得到關(guān)系T,則所使用的運(yùn)算為()。

A.笛卡兒積B.交C.并D.自然連接

68.有以下程序

prt(int*m,intn)

{

inti;

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

m[i]++;

}

main()

{

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

prt(a,5);

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

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

}

程序運(yùn)行后的輸出結(jié)果是A.A.1,2,3,4,5,

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

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

D.2,3,4,5,1,

69.有下面程序段:

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

A.18B.19C.20D.21

70.假定已建立以下鏈表結(jié)構(gòu),且指針P和q已指向如圖所示的結(jié)點:

則以下選項中可將q所指結(jié)點從鏈表中刪除并釋放該結(jié)點的語句組是()。

A.p一>next=q一>next;flee(q);

B.p=q一>next;free(q);

C.p=q;free(q);

D.(*p).next=(幸q).next;ffee(p);

71.以下選項中非法的字符常量是()。

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

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

#include"string.h"

fun(char*w,intn)

{chart,*s1,*s2;

s1=w;s2=w+n-1;

while(s1<s2)

{t=*s1++;

*s1=*s2--;

*s2=t;

}

}

main()

{staticcharp[]="1234567";

fun(p,strlen(p));

printf("%s",p);

}

A.7654321B.1717171

C.7171717D.1711717

73.

74.

若變量已正確定義,有以下程序段

i—o;

doprintf("%d,",i);while(i++);

printf("%d",i)

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

A.0,0B.0,1C.1,1D.程序進(jìn)入無限循環(huán)

75.表示關(guān)系M<=N<=P的C語言表達(dá)式為()。

A.(M<=N.AND(N<=P.

B.(M<=N.&&(N<=P.

C.(M<=N<=P.

D.(M<=N.&(N<=P.

溫馨提示

  • 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

提交評論