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

下載本文檔

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

文檔簡介

2021年黑龍江省雙鴨山市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若二維數(shù)組a有m列,則在a[i][j]剛前的元素個數(shù)為()。

A.i*m+j-1B.i*m+jC.j*m+iD.i*m+j+1

2.軟件生命周期中的活動不包括()

A.軟件維護(hù)B.市場調(diào)研C.軟件測試D.需求分析

3.設(shè)有定義intn=0,*p=&n,**q=&p;,則下列選項(xiàng)中正確的賦值語句是

A.p=1;B.*q=2;C.q=p;D.*p=5;

4.對n個元素的有序表A[1..n]進(jìn)行順序查找,其成功查找的平均查找長度(即在查找表中找到指定關(guān)鍵碼的元素時,所進(jìn)行比較的表中元素個數(shù)的期望值)為()

A.nB.(n+1)/2C.log2nD.n^2

5.能正確表示“當(dāng)x的取值在[1,10]和[100,110]范圍內(nèi)為真,否則為假”的表達(dá)式是()。

A.(x>=1)&&(x<=10)&&(x>=100)&&(x<=110)

B.(x>=1)‖(x<=10)‖(x>=100)‖(x<=110)

C.(x>=1)&&(x<=10)‖(x>=100)&&(x<=110)

D.(x>=1)‖(x<=10)&&(x>=100)‖(x<=110)

6.在長度為n的有序線性表中進(jìn)行二分查找,最壞情況下需要比較的次數(shù)是A.O(n)

B.O(n2)

C.O(log2n)

D.O(nlog2n)

7.

8.以下說法錯誤的是()。

A.C語言標(biāo)識符中可以有多個字母、數(shù)字和下劃線字符

B.C語言標(biāo)識符中下劃線字符可以出現(xiàn)在任意位置

C.C語言標(biāo)識符不能全部由數(shù)字組成

D.C語言標(biāo)識符必須以字母開頭

9.有以下函數(shù):intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下關(guān)于aaa函數(shù)功能敘述正確的是()。

A.將串s復(fù)制到串tB.比較兩個串的大小C.求字符串s的長度D.求字符串s所占字節(jié)數(shù)

10.有以下程序:

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

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

11.有以下程序:

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

A.4321098765B.5678901234C.0987654321D.0987651234

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

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

13.

14.若有定義“inta,b,c;”以下程序段的輸出結(jié)果是()。a=11;b=3;c=0;printf(“%d\n”,c=(a/b,a%b));

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

15.在下面棧的基本運(yùn)算中,不是加工型運(yùn)算的是______。

A.初始化B.進(jìn)棧C.退棧D.判???/p>

16.有以下程序:

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

A.45B.50C.60D.55

17.若要說明一個類型名STP,使得定義語句STPs;等價于Char*s;,以下選項(xiàng)中正確的是()。

A.typedefChar*s;

B.typedefChar*STP;

C.typedefSTP*Char;

D.typedef*CharSTP;

18.以下程序的輸出結(jié)果是()。main(){inta[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}A.18B.19C.20D.21

19.軟件設(shè)計(jì)包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過程設(shè)計(jì),其中軟件的過程設(shè)計(jì)是指()

A.模塊間的關(guān)系B.系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述C.軟件層次結(jié)構(gòu)D.軟件開發(fā)過程

20.有以下程序:#include<stdio.h>main(){intx=8;for(;x>0;x--){ if(x%3) { printf(“%”d,x--); continue; }printf(“%d,”,--x);}}程序的運(yùn)行結(jié)果是()。

A.7,4,2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,

二、2.填空題(20題)21.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為______。

22.設(shè)函數(shù)findbig已定義為求3個數(shù)中的最大值,以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=【】。

scanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,z);

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

}

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

24.以下說明語句中,【】是結(jié)構(gòu)體類型名。

typedefstruct

{intn;

charch[8];

}PER;

25.若有下列定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,則值為3的表達(dá)式為:______。

26.在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。

27.若有如下程序:

main()

{intx=4;y=3,Z=2,t;

t=x<y<z;

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

}

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

28.以下程序通過函數(shù)指針p調(diào)用函數(shù)fun,請?jiān)谔羁諜趦?nèi)寫出定義變量p的語句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

29.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及列數(shù)據(jù)的操作運(yùn)算。

30.以下程序的功能是調(diào)用函數(shù)fun計(jì)算:m=1-2+3-4+…+9-10,并輸出結(jié)果。請?zhí)羁铡?/p>

intfun(intn)

{intm=0,f=1,i;

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

{m+=i*f;

f=【】;

}

returnm;

}

main()

{printf("m=%d\n",【】)};

31.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)式【】。

32.指針變量p和數(shù)組a的說明如下:

int*a[3]={"aa","bb","cc"},**p;

執(zhí)行語句p=&a[2];后,*p指向的字符串是______。

33.若有以下程序:

main()

{chara;

a='H'-'A'+'0';

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

}

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

34.計(jì)算圓的周長、面積和球體積。

#definePI3.1415926

#define【】L=2*PI*R;【】;V=4.0/3.0*PI*R*R*R

main()

{floatr,l,s,v;

printf("inputaradus:");

scanf("%f",&r);

CIRCLE(r,l,s,v);

printf("r=%.2f\nl=%.2f\ns=%.2f\nv=%.2f\n",【】);

}

35.調(diào)用C語言標(biāo)準(zhǔn)庫函數(shù)時要求用【】命令。

36.在面向?qū)ο蟮姆椒ㄖ校琠_____描述的是具有相似屬性與操作的一組對象。

37.數(shù)據(jù)庫理論中,數(shù)據(jù)的獨(dú)立性一般可分為物理獨(dú)立性和______。

38.設(shè)有chara,b;,若要通過a&b運(yùn)算屏蔽掉a中的其他位,只保留第2位和笫8位(右起為第1位),則b的二進(jìn)制是【】。

39.執(zhí)行以下程序后,輸出#號的個數(shù)是【】。

#include<stdio.h>

main()

{inti,j;

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

for(j=2;j<=i;j++)putchar('#');

}

40.有以下程序:

intf(intn)

{if(n=1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

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

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

}

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

三、1.選擇題(20題)41.下列關(guān)于C語言數(shù)據(jù)文件的敘述中正確的是A.文件由ASCII碼字符序列組成,C語言只能讀寫文本文件

B.文件由二進(jìn)制數(shù)據(jù)序列組成,C語言只能讀寫二進(jìn)制文件

C.文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件

D.文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件

42.數(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)系

43.有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序運(yùn)行后,若從鍵盤輸入(從第1列開始)123<CR>45678<CR>則輸出結(jié)果是()。

A.1267B.1256C.1278D.1245

44.以下合法的十六進(jìn)制數(shù)是()。

A.0xB.0x4deC.0x1hD.oX77

45.以下選項(xiàng)中不屬于字符常量的是

A.'C'B.CC.'\xCC'D.'\072'

46.C語言中while循環(huán)和do-while循環(huán)的主要區(qū)別是______。

A.do-while的循環(huán)體至少無條件執(zhí)行一次

B.while的循環(huán)控制條件比do-while的循環(huán)控制條件嚴(yán)格

C.do-while允許從外部轉(zhuǎn)到循環(huán)體內(nèi)

D.do-while的循環(huán)體不能是復(fù)合語句

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

A.15

B.14

C.不確定

D.0main(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d\n",sum);}

48.若變量已正確說明為float類型,要通過語句scanf("%f%f%f",&a,&b,&c),給a賦予10.0,b賦予22.0,b賦予33.0,不正確的輸入形式是()

A.10<回車>22<回車>33<回車>

B.10.0,22.0,33.0<回車>

C.10.0<回車>22.O33.00<回車>

D.10.22<回車>33<回車>

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

A.acbedB.decabC.deabcD.cedba

50.以下程序的輸出結(jié)果是______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;printf("%d%d%d",a[a],a[5],a[8]);}

A.258B.741C.852D.369

51.在一棵二叉樹上第5層的結(jié)點(diǎn)數(shù)最多是______。

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

52.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=1,b=3;if((++a<0)&&!(b--<=0))printf("%d,%d\n",a,B;elseprintf("%d,%d\n",b,A);}

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

53.下列描述中,不是線性表順序存儲結(jié)構(gòu)特征的是

A.不便于插入和刪除B.需要連續(xù)的存儲空間C.可隨機(jī)訪問D.需另外開辟空間來保存元素之間的關(guān)系

54.以下符合C語言語法的實(shí)型常量是()。

A.1.2E0.5B.3.14159EC.5E-3D.E15

55.有以下程序

#include<stdio.h>

main()

{FILE*fp;inti,a[6]={l,2,3,4,5,6};

fp=fopen("d3.dat","w+b");

fwrite(a,sizeof(int),6,fp);

fseek(fp,sizeof(int)*3,SEEK_SET);/*該語句使讀文件的位置指針從文件頭向后移動3個int型數(shù)據(jù)*/

fread(a,sizeof(int),3,fp);fclose(fp);

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

}

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

A.4,5,6,4,5,6,B.1,2,3,4,5,6,C.4,5,6,1,2,3,D.6,5,4,3,2,1,

56.請選出正確的程序段______。

A.int*pscanf(""%d"",p);……

B.int*s,k;*s=100;……

C.int*s,k;char*p,c;s=&k;p=&c;*p='a';……

D.int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;……

57.現(xiàn)有如下程序段#include"stdio.h"#include"string.h"main(){chara[]="acfijk";/*這里是有序的字符序列*/charb[]="befijklqswz";/*這里是有序的字符序列*/charc[80],*p;inti=0,j=0,k=0;while(a[i]!='\0'&&b[j]!='\0'){if(a[i]<b[j])c[k++]=a[i++];elseif(a[i]>b[j])c[k++]=b[j++];else{c[k++]=b[j++];i++;}}while(a[i]=='\0'&&b[j]!='\0')c[k++]=b[j++];while(a[i]!=,'\0'&&b[j]=='\0')c[k++]=a[i++];c[k]='\0';puts(c);}則輸出結(jié)果是

A.acfijkbefijklqswz

B.abceffiijjkklqswz

C.befijklqswzacfijk

D.abcefijklqswz

58.下列描述中正確的是()。

A.程序就是軟件

B.軟件開發(fā)不受計(jì)算機(jī)系統(tǒng)的限制

C.軟件既是邏輯實(shí)體,又是物理實(shí)體

D.軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合

59.假定所有變量均已正確說明,下列程序段運(yùn)行后x的值是a=d=c=0;x=35;if(!a)x=-1,elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

60.對于下述程序,在方式串分別采用“wt”和“wb”運(yùn)行時,兩次生成的文件TEST的長度分別是#include<stdio.h>voidmain(){FILE*fp=fopen("TEST",);fputc('A',fp);fputc('\n',fp);fputc('b',fp);fputc('\n',fp);fputc('C',fp);fclose(fp);}

A.7字節(jié)、7字節(jié)B.7字節(jié)、5字節(jié)C.5字節(jié)、7字節(jié)D.5字節(jié)、5字節(jié)

四、選擇題(20題)61.數(shù)據(jù)庫概念設(shè)計(jì)的過程中,以下各項(xiàng)中不屬于視圖設(shè)計(jì)設(shè)計(jì)次序的是()。

A.自頂向下

B.由整體到個體

C.由內(nèi)向外

D.由底向上

62.有以下程序:#include<stdio.h>main(){charc1,c2;c1=’A’+’8’-’4’;c2=’A’+’8’-’5’;printf(“c,%d\n”,c1,c2);}已知字母A的ASCⅡ碼為65,程序運(yùn)行后的輸出結(jié)果是()。A.E,68B.B,69C.E,DD.輸出無定值

63.下列關(guān)于指針變量賦空值的說法錯誤的是

A.當(dāng)賦空值的時候,變量指向地址為0的存儲單元B.賦值語句可以表達(dá)為變量名=’\0’;

C.賦值語句可以表達(dá)為變量名=0;D.一個指針變量可以被賦空值

64.有以下函數(shù)intfun(char*X,char*y){intn=0;while((*x===*y)*x!=\O){x++;y++;n++;}returnn;}函數(shù)的功能是()。A.查找X和y所指字符串中是否有\(zhòng)o

B.統(tǒng)計(jì)x和Y所指字符串中最前面連續(xù)相同的字符個數(shù)

C.將Y所指字符串賦給X所指定存儲空間

D.統(tǒng)計(jì)X和Y所指字符串中相同的字符個數(shù)

65.交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運(yùn)算符。

A.&B.^C.D.E.F.~

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

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

67.

68.下列關(guān)于線性鏈表的敘述中,正確的是()。

A.各數(shù)據(jù)結(jié)點(diǎn)的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致

B.各數(shù)據(jù)結(jié)點(diǎn)的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)

C.進(jìn)行插入與刪除時,不需要移動表中的元素

D.各數(shù)據(jù)結(jié)點(diǎn)的存儲順序與邏輯順序可以不一致,它們的存儲空間也可以不一致

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

A.a=2,b=lB.a=2,b=2C.a=1,b=lD.a=1.b=0

70.視圖設(shè)計(jì)一般有3種設(shè)計(jì)次序,下列不屬于視圖設(shè)計(jì)次序的是()。

A.自頂而下B.由內(nèi)向外C.由外向內(nèi)D.自底向上

71.

72.

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

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

74.

75.有如下嵌套的if語句:

if(a<b)

if(a<c)k=a;

elsek=C:

else

if(b<c)k=b;

elsek=C;

以下選項(xiàng)中與上述if語句等價的語句是()。

A.k=(a<b)?a:b;k=(b<c)?b:C;

B.k=(a<b)?((b<c)?a:b):((b>c)?b:c);

C.k=(a<b)?((a<c)?a:c):((b<c)?b:c);

D.k=(a<b)?a:b;k=(a<c)?a:c;

76.

77.軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件),下面屬于系統(tǒng)軟件的是()。A.學(xué)生管理系統(tǒng)B.C語言編譯程序C.UNIX操作系統(tǒng)D.數(shù)據(jù)庫管理系統(tǒng)

78.有以下程序

#include"stdio.h"

voidfun(int*a,int*b,intc)

{c=*a+*b;}

main()

{inta[2]={6,9},c=0;

fun(a,a+1,&c);

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

}

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

A.6B.9

C.0D.15

79.以下程序段中的變量已正確定義:

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

A.********B.****C.**D.*

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:依次取出字符串中所有的數(shù)字字符,形成新的字符串,并取代原字符串。例如原始字符串是“ab45c6djfd789”,則輸出后的字符是“456789”。請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計(jì)題(1題)82.請編寫函數(shù)fun,其功能是:找出一維整型數(shù)組元素中最大的值所在的下標(biāo),并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值。index存放最大值所在元素的下標(biāo)。

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

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

試題程序:

參考答案

1.B解析:二維數(shù)組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數(shù)組第一維的下標(biāo)是i,說明它前面還有i行,有i*m個元素,數(shù)組第二維的下標(biāo)是j,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。

2.B【答案】:B

【知識點(diǎn)】:軟件生命周期

【解析】:一個軟件產(chǎn)品或軟件系統(tǒng)要經(jīng)歷孕育、誕生、成長、成熟、衰亡等階段,一般稱為軟件生命周期。它把整個軟件生存周期劃分為若干階段,使得每個階段有明確的任務(wù),使規(guī)模大,結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開發(fā)變的容易控制和管理。通常,軟件生存周期包括可行性分析與開發(fā)項(xiàng)計(jì)劃、需求分析、設(shè)計(jì)(概要設(shè)計(jì)和詳細(xì)設(shè)計(jì))、編碼、測試、維護(hù)等活動,可以將這些活動以適當(dāng)?shù)姆绞椒峙涞讲煌碾A段去完成。故選B。

3.D解析:選項(xiàng)A),B),C)的指針賦值表達(dá)方式都不正確,*p=5表達(dá)整數(shù)5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。

4.B

5.C本題考查邏輯與(&&)和邏輯或(||)運(yùn)算符的使用。x值在[1,10]之間,C語言中可以寫成x值在[100,11O]之間,C語言表達(dá)式應(yīng)寫成“(x>=100)&&(x>=110)”;[1,1O]和[100,110]滿足任意條件就可以,所以是邏輯或的關(guān)系,因此只要將前兩個表達(dá)式用邏輯或運(yùn)算符連接起來即可,所以最后的表達(dá)式:(x>=1)&&(x<=10)&&(x<=110)。

6.C解析:二分查找法也稱為折半查找法。它的基本思想是:將n個元素分成個數(shù)大致相同的兩半,取a[n/2]與欲查找的x作比較,如果x=a[n/2],則找到x,算法終止;如果x<a[n/2],則只要在數(shù)組a的左半部繼續(xù)搜索x(這里假設(shè)數(shù)組元素呈升序排列);如果x>a[n/2],則只要在數(shù)組a的右半部繼續(xù)搜索x。每次余下n/(2i)個元素待比較,當(dāng)最后剩下一個時,即n/(2i)=1。故n=2i;所以i=log2n。

7.B

8.DC語言的合法的標(biāo)識符的命名規(guī)則是:標(biāo)識符可以由字母、數(shù)字和下劃線組成,并且第1個字符必須是字母或下劃線。選項(xiàng)D錯誤。本題答案為D選項(xiàng)。

9.Caaa函數(shù)中,首先定義了一個字符指針t指向形參s,然后通過一個while循環(huán)讓指針t不斷遞增,直到t指向字符串結(jié)束標(biāo)識處。當(dāng)t指向結(jié)束標(biāo)識處時,由于后綴“運(yùn)算符,它還會被再遞增1,因此“t--”語句讓它回到結(jié)束標(biāo)識處。最后返回t-s,s還是指向字符串第1個字符處,而t指向了字符串結(jié)尾,故返回值為字符串的長度。故本題答案為C選項(xiàng)。

10.A在函數(shù)point函數(shù)調(diào)用時,系統(tǒng)自動為函數(shù)的形參P分配內(nèi)存空間,并賦值為實(shí)參P的值。當(dāng)執(zhí)行語句P+=3;時,系統(tǒng)操作的是形參P的內(nèi)存空間,更改形參P的內(nèi)容,而實(shí)參指針變量P的值未受影響,即指針變量作為函數(shù)參

11.B該程序首先給一維數(shù)組賦值,然后三次調(diào)用fun函數(shù),其中fun(a,0,3);功能是將一維數(shù)組中第1個元素和第4個元素互換,第2個元素和第3個元素互換;其中fun(a,4,9);功能是將一維數(shù)組中第5個元素和第10個元素互換,第6個和第9個元素互換,第7個元素和第8個元素互換;其中fun(a.O,9);功能是將將一維數(shù)組中第l個元素和第10個元素互換,第2個元素和第9個元素互換……依此類推。因此B選項(xiàng)正確。

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

13.A

14.AC語言中,逗號運(yùn)算符可以把兩個以上(包含兩個)的表達(dá)式連接成一個表達(dá)式。逗號運(yùn)算符的優(yōu)先級是所有運(yùn)算符中級別最低的,逗號運(yùn)算符保證左邊的子表達(dá)式運(yùn)算結(jié)束后才進(jìn)行右邊的子表達(dá)式的運(yùn)算。也就是說,逗號運(yùn)算符是一個序列點(diǎn),其左邊所有子表達(dá)式運(yùn)算都結(jié)束后,才對其右邊的子表達(dá)式進(jìn)行運(yùn)算,并以最右邊表達(dá)式的值作為整個逗號表達(dá)式的值。因此c的值為“a%b”,即“11%3=2”。故本題答案為A選項(xiàng)。

15.D

16.C內(nèi)部靜態(tài)變量是始終存在的,當(dāng)函數(shù)被調(diào)用退出后,內(nèi)部靜態(tài)變量會保存數(shù)據(jù),再次調(diào)用該函數(shù)時,以前調(diào)用時的數(shù)值仍然保留著。Fun(a,5)的值是l5,再次調(diào)用后slim=15,所以Fun(b,4)=45,s=45+15=60。

17.B用關(guān)鍵字typedef聲明一種新的類型的形式為typedef類型名標(biāo)識符。本題中的類型為char*。

18.A循環(huán)的作用是求行下標(biāo)從l到2列下標(biāo)從0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][o]+a[2][1]+a[2][2]=3+4+5+6+0一18。

19.B軟件設(shè)計(jì)包括軟件的結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)接口設(shè)計(jì)和過程設(shè)計(jì)。其中軟件結(jié)構(gòu)設(shè)計(jì)主要包括系統(tǒng)由哪些子系統(tǒng)構(gòu)成,以及這些子系統(tǒng)之間的關(guān)系是怎樣的,并將這些內(nèi)容編寫成文檔;數(shù)據(jù)接口設(shè)計(jì)的任務(wù)是為每個子系統(tǒng)設(shè)計(jì)其與其他子系統(tǒng)間的接口,并編寫成文檔,這個接口要是一個無二義的接口,不需要子系統(tǒng)的操作知識就可以使用;過程設(shè)計(jì)是指系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述。

20.Dcoutimie語句的作用是跳出循環(huán)體中剩余的語句而進(jìn)行下一次循環(huán)。第1次循環(huán),x的值為8,循環(huán)體中if條件成立,輸出X的值8后將x減1,再執(zhí)行continue語句,跳出本次循環(huán)。第2次循環(huán),x的值為6,不滿足循環(huán)體內(nèi)的if條件,執(zhí)行輸出“--x”的操作,即輸出5后跳出循環(huán)。第3次循環(huán),x的值為4,滿足循環(huán)體內(nèi)的if條件,執(zhí)行輸出“x--”的操作,即輸出4后將x值減一,執(zhí)行continue語句,跳出本次循環(huán)。第4次循環(huán),x的值為2,滿足循環(huán)體內(nèi)的if條件,執(zhí)行輸出“x--”的操作,輸出2后將x減1,執(zhí)行continue語句,跳出本次循環(huán)。在進(jìn)行for條件表達(dá)式中第3個表達(dá)式“x--”的操作后,x的值為0,不滿足條件,結(jié)束循環(huán)。所以運(yùn)行結(jié)果為8,5,4,2,。故本題答案為D選項(xiàng)。

21.1616解析:函數(shù)運(yùn)算不改變數(shù)據(jù)類型,所以結(jié)果也是double型,fabs(x)是對x取絕對值,pow(y,fabs(x))是y的labs(x)次冪,即2.04。0=16.000000(注意;結(jié)果為double型)。

22.findbigfindbig解析:f是指向函數(shù)的指針變量,根據(jù)題意要求,空格處應(yīng)填入findbig。

本題目考查:C語言中指向函數(shù)的指針變量定義的一般形式為;

數(shù)據(jù)類型標(biāo)識符(*指針變量名)();

“數(shù)據(jù)類型標(biāo)識符”表示函數(shù)返回值的類型。

函數(shù)的調(diào)用可以通過函數(shù)名調(diào)用,也可以通過函數(shù)指針調(diào)用。在給函數(shù)指針變量賦值時,只需給出函數(shù)名而不必給出參數(shù)。(*p)()表示定義一個指向函數(shù)的指針變量,專門用來存放函數(shù)的入口地址,可以先后指向不同的指針變量。用函數(shù)指針調(diào)用函數(shù)時,只需要將(*p)代替函數(shù)名即可,在(*p)之后的括號中,根據(jù)需要寫上參數(shù)。

23.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個。

24.PERPER解析:本題中,typedef聲明新的類型名PER來代替已有的類型名,PER代表上面指定的一個結(jié)構(gòu)體類型,此時,也可以用PER來定義變量。

25.p+=2*(p++)p+=2,*(p++)解析:由題可知a[2]=3,因此只要使指針p指向a[3],然后再引用指針的值就可以了。

26.前后件關(guān)系前后件關(guān)系解析:在數(shù)據(jù)存儲結(jié)構(gòu)中,除了要存儲數(shù)據(jù),還要存儲數(shù)據(jù)的前后件關(guān)系,對于順序存儲的數(shù)據(jù)結(jié)構(gòu),前后件之間的關(guān)系,是通過存儲空間的位置來實(shí)現(xiàn)的,而對于鏈?zhǔn)酱鎯碚f,數(shù)據(jù)元素之間的前后件關(guān)系是通過指針來實(shí)現(xiàn)的。

27.11解析:因?yàn)閤=4,y=3,所以表達(dá)式x<y的值為假(0),又因?yàn)閦=2,所以0<z的值為真(1),故最終輸出的結(jié)果為1。

28.void(*p)();void(*p)();解析:要定義p為指向函數(shù)的指針變量,需寫成void(*p)();,注意*p兩側(cè)的括弧不可以省略,表示P先與*結(jié)合,是指針變量,再與后面的()結(jié)合,表示此指針變量指向函數(shù),這個函數(shù)無返回值(同fun()函數(shù))。

29.存儲結(jié)構(gòu)存儲結(jié)構(gòu)解析:數(shù)據(jù)結(jié)構(gòu)包括3個方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)及對數(shù)據(jù)的操作運(yùn)算。

30.=-ffun(10)=-f\r\nfun(10)解析:本題要求調(diào)用fun()函數(shù)計(jì)算m的值,故在主函數(shù)中的空白處應(yīng)該填調(diào)用fun()函數(shù)的語句。fun()函數(shù)有一個形參n,為每次參加計(jì)算的值個數(shù),故在主函數(shù)中的空白處應(yīng)該填fun(10),在fun()函數(shù)中用到了一個for循環(huán),共循環(huán)n次,當(dāng)循環(huán)第i次的時候,m的值等于m=1-2+…+[(-1)的i-1次方]*i,所以在fun()函數(shù)的空白處應(yīng)該填使f改變符號的語句,故應(yīng)填-f或其他等價形式。

31.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或下為0。本題具體做法如下:Y%2=1或Y%2!=0。

32.cc。cc。解析:a是指針數(shù)組,每個數(shù)組元素存放的是字符數(shù)據(jù)的地址,數(shù)組a的3個元素分別指向字符串常量'aa'、'bb'和'cc',指針p賦予數(shù)組元素a[2]的值,即指向第3個字符串。

33.77解析:本題考查英文字母ASCII碼值的概念。字符參與運(yùn)算的值是其對應(yīng)的ASCII碼,字符H的ASCII碼為72,A的ASCII碼為65,0的ASCII碼為48,所以a=72-65+48=55,ASCII碼值為55的字符是7。

34.CIRCLE(RLSV)S=PI*R*Rr1sv

35.includeinclude解析:include命令可調(diào)用標(biāo)準(zhǔn)的C語言庫函數(shù),可以用一對尖括號或一對雙引號將“.h”文件括起來,在include前面要加“#”。

36.類類解析:在面向?qū)ο蟮姆椒ㄖ?,把具有相同屬性和方法的對象稱為類,類是對象的抽象,對象是類的實(shí)例。

37.邏輯獨(dú)立性邏輯獨(dú)立性解析:數(shù)據(jù)的獨(dú)立性一般可分為物理獨(dú)立性和邏輯獨(dú)立性。

38.1000001010000010解析:運(yùn)算“&”的,的規(guī)則是只有當(dāng)兩個相應(yīng)的二進(jìn)制位都為1時,該位的結(jié)果才為1。要保留第2、8位,只要將其與二進(jìn)制數(shù)10000010相與。

39.66解析:本題中i循環(huán)執(zhí)行4次,當(dāng)i=1時,j循環(huán)執(zhí)行0次;當(dāng)i=2時,j循環(huán)執(zhí)行1次;當(dāng)i=3時,j循環(huán)執(zhí)行2次;當(dāng)i=4時,j循環(huán)執(zhí)行3次,所以輸出#號的個數(shù)是0+1+2+3=6。

40.33解析:i=1時,f(1)=1,j=j+f(1)=0+1=1;i=2時,f(2)=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此時循環(huán)結(jié)束,程序運(yùn)行后的輸出結(jié)果是3。

41.D解析:C語言把文件看成是一個字符(字節(jié))的序列,即由一個一個字符(字節(jié))的數(shù)據(jù)順序組成。根據(jù)數(shù)據(jù)的組織形式,可分為ASCII文件和二進(jìn)制文件。ASCII文件又稱文本文件,它的每一個字節(jié)放一個ASCII代碼,代表一個字符。二進(jìn)制文件是把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到磁盤上存放。

42.CC?!窘馕觥繑?shù)據(jù)庫系統(tǒng)(DBS)由數(shù)據(jù)庫(DBS)、數(shù)據(jù)庫管理系統(tǒng)(DBMS)、數(shù)據(jù)庫管理員、硬件平臺和軟件平臺五個部分組成,可見DB和DBMS都是DBS的組成部分。

43.D解析:當(dāng)用scanf函數(shù)從鍵盤輸入數(shù)據(jù)時,每行數(shù)據(jù)的末尾按下回車鍵(Enter鍵)之前,可以任意修改。但按下回車鍵putchar(c1)(Enter鍵)之后,scanf函數(shù)即接受了這一行數(shù)據(jù),不能再回去修改。所以本題中,當(dāng)輸入123<CR>時,變量c1、c2、c3的值分別為1、2、3,當(dāng)輸入45678<CR>時,變量c5、c6的值4和5。所以用輸出函數(shù)putchar(c1)輸出1,putchar(c2)輸出2,printf('%c%c\\n',c5,c6)輸出45。所以選項(xiàng)D)為正確答案。

44.B解析:考查十六進(jìn)制數(shù)的表示方法。十六進(jìn)制數(shù)以0x開頭,后面跟著若干位1f的數(shù),所以正確答案為B)。整形常量、實(shí)型常量和字符型常量的合法性判斷。

45.B解析:在C語言程序中,用單引號把一個字符或反斜線后跟一個特定的字符括起來表示一個字符常量。選項(xiàng)A)、C)和D)為正確的字符常量,而選項(xiàng)B)是用雙引號括起來的字符,表示一個字符串常量。

46.A解析:本題考核C++語言中while循環(huán)和do-while循環(huán)之間的區(qū)別。do-while語句與while語句不同的是,do-while循環(huán)中的<語句>至少會執(zhí)行一次,而while語句中當(dāng)條件在第一次循環(huán)就不滿足時,語句一次也不會執(zhí)行。

47.C解析:C語言中,如果對定義的變量沒有賦初值,那么在后面使用時,變量的值是不確定的。所以,本程序中,沒有對sum賦初值,它的值不確定。在執(zhí)行了for循環(huán)語句后,sum的值也不確定的,所以,4個選項(xiàng)中選項(xiàng)C符合題意。

48.B

49.D解析:中序遍歷的遞歸算法如下:①遍歷左子樹;②訪問根結(jié)點(diǎn);③遍歷右子樹。前序遍歷的遞歸算法如下:①訪問根結(jié)點(diǎn);②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法如下:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點(diǎn)。由后序遍歷結(jié)果dabec可知c是根結(jié)點(diǎn),且無右子樹。再由左子樹的后序遍歷結(jié)果dabe可知,e是左子樹的根結(jié)點(diǎn),且由左子樹的中序遍歷結(jié)果deba可知,d是左子樹的左子樹結(jié)點(diǎn),b和a是左子樹的右子樹結(jié)點(diǎn)。再次由后序遍歷結(jié)果ab可知,a是左子樹結(jié)點(diǎn)。b是根結(jié)點(diǎn)。至此,各結(jié)點(diǎn)在樹中的位置已完全確定。

50.C解析:在本題運(yùn)行時主要注意的是當(dāng)i=9時,a[i]=10-9=1;i=8時,a[i]=10-8=2;i=7時,a[i]=10-7=3;……依此類推,直到i=0時,a[i]=10-0=10;此時,i的值已變?yōu)?1,判斷for的循環(huán)條件,不成立,然后輸出a[2],a[5],a[8]分別為8,5,2。

51.B[答案]B

[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法

[評析]依次從上到下,可得出:

第1層結(jié)點(diǎn)數(shù)為1;

第2層結(jié)點(diǎn)數(shù)為2*1=2;

第3層結(jié)點(diǎn)數(shù)為2*2=4;

第n層結(jié)點(diǎn)數(shù)為2的n-1次冪

52.C

53.D解析:線性表的順序存儲是用一片連續(xù)的空間來存放數(shù)據(jù)元素,其特點(diǎn)是邏輯上相鄰的元素在物理位置上也相鄰。數(shù)據(jù)元素之間邏輯上的先后關(guān)系自動隱含在物理位置的相鄰元素之中,因此,不需要另外開辟空間來保存元素之間的關(guān)系。

54.C解析:實(shí)數(shù)在C語言中又稱浮點(diǎn)數(shù),它有兩種表示形式:

①十進(jìn)制數(shù)形式。它由數(shù)字和小數(shù)點(diǎn)組成(注意必須有小數(shù)點(diǎn))。0.123,.123,123.0,123.,0.0都是十進(jìn)制數(shù)形式。

②指數(shù)形式。如123e3或123E3都代表123*103。要注意字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù),如e3,2.1e3.5,.e3,e等都不是合法的指數(shù)形式。

55.A解析:首先利用fwrite函數(shù)將數(shù)組a中的數(shù)據(jù)寫到文件中,接著fseek函數(shù)的功能是讀文件的位置,指針從文件頭向后移動3個int型數(shù)據(jù),這時文件位置指針指向的是文件中的第4個int數(shù)據(jù)'4',然后fread函數(shù)將文件fp中的后3個數(shù)據(jù)4,5,6讀到數(shù)組a中,這樣就覆蓋了數(shù)組中原來的前3項(xiàng)數(shù)據(jù)。最后數(shù)組中的數(shù)據(jù)就成了{(lán)4,5,6,4,5,6}。

56.C解析:本題的選項(xiàng)A)和B)犯了同樣的錯誤,即指針變量在定義后并沒有指向具體的變量。也就是說,指針變量中沒有確定的地址值,它的值是不可預(yù)見的,所指的單元也是不可預(yù)見的,因此不能進(jìn)行賦值操作。另外,在選項(xiàng)D)中,s是int型指針變量,p是char型指針變量,所指向的內(nèi)存單元所占用的字節(jié)數(shù)是不同的,因而不能將字符指針變量p的值賦給整型指針變量s。

57.D解析:這個題目的功能是實(shí)現(xiàn)兩個有序字符串的合并,合并成一個新的有序的字符串。

58.D\r\n軟件是與計(jì)算機(jī)操作相關(guān)的計(jì)算機(jī)程序、規(guī)程、規(guī)則,以及可能有的文件、文檔及數(shù)據(jù);軟件開發(fā)要受到計(jì)算機(jī)系統(tǒng)的限制;軟件是一個邏輯實(shí)體,不是物理實(shí)體,軟件具有抽象性。因此選項(xiàng)D正確。

59.B

60.B解析:以“wt”方式寫入的是字符文件,轉(zhuǎn)義字符'\\n'被看做兩個字符來處理。而“wb”方式寫入的是二進(jìn)制文件,轉(zhuǎn)義字符'\\n'是一個字符。

61.B\n數(shù)據(jù)庫概念設(shè)計(jì)的過程中,視圖設(shè)計(jì)一般有三種設(shè)計(jì)次序,它們是:

\n自頂向下。這種方法是先從抽象級別高且普遍性強(qiáng)的對象開始逐步細(xì)化、具體化與特殊化。

\n由底向上。這種設(shè)計(jì)方法是先從具體的對象開始,逐步抽象,普遍化與一般化,最后形成一個完整的視圖設(shè)計(jì)。由內(nèi)向外。這種設(shè)計(jì)方法是先從最基本與最明顯的對象著手逐步擴(kuò)充至非基本、不明顯的其他對象。本題答案為B)。

\n

62.A本題目中字符變量cl是字符‘A’的ASCIl碼加上4,即69所對應(yīng)的字符‘E’。字符變量c2是字符‘A’的ASCIl碼加上3,即68所對應(yīng)的字符‘D’。但是打印輸出時,cl以%C的格式輸出,所以是E,c2以%d的格式輸出,所以是68。

63.A本題考查的是對指針變量賦空值。在C語言中用NULL給指針賦空值,如p=NULL。當(dāng)指針值為NULL時,指針不指向任何有效數(shù)據(jù)。由于NULL與整數(shù)0相對應(yīng),所以有下面三條語句等價:

p=NULL;p=0;p=’\\0’。

64.B由題中while(*x==*y*x!=\\n)可知此函數(shù)是統(tǒng)計(jì)x和y所指向的字符串中最前面的聯(lián)系相同的字符的個數(shù)。

65.B按邏輯位運(yùn)算特點(diǎn):①用按位與運(yùn)算將特定位清為0或保留特定位;②用按位或運(yùn)算將特定的位置為1;③用按位異或運(yùn)算將某個變量的特定位翻轉(zhuǎn)或交換兩個變量的值。

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

67.C

68.C一般來說,在線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)中,各數(shù)據(jù)結(jié)點(diǎn)的存儲序號是不連續(xù)的,并且各結(jié)點(diǎn)在存儲空間中的位置:廷系與邏輯關(guān)系也不一致。線性鏈表中數(shù)據(jù)的插入和刪除都不需要移動表中的元素,只需改變結(jié)點(diǎn)的指針域即可。因此,本題答案為C)。

69.Acase常量表達(dá)式只是起語句標(biāo)號作用,并不是該處進(jìn)行條件判斷。在執(zhí)行switch語句時,根據(jù)switch的表達(dá)式,找到與之匹配的case語句,就從該case-子句執(zhí)行下去,不再進(jìn)行判斷。直到碰到break競語句結(jié)束為止。因此執(zhí)行內(nèi)層switch(y)時只執(zhí)行了a++,此時a的值為l。然后執(zhí)行外層case2語句的a++;b++.a(chǎn)為2,b為l。所以結(jié)果為A)。

70.C視圖設(shè)計(jì)的設(shè)計(jì)次序分3種:自頂向下、自底向上和由內(nèi)向外。它們?yōu)橐晥D設(shè)計(jì)提供了具體的操作方法,設(shè)計(jì)者可根據(jù)實(shí)際情況靈活掌握。

71.B

72.B

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

74.B

75.C\n條件運(yùn)算符(?:)是C語言中唯一的一個三目運(yùn)算符,它是對第一個表達(dá)式做真/假檢測,然后根據(jù)結(jié)果返回兩個表達(dá)式中的一個作為運(yùn)算的結(jié)果。<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>。在運(yùn)算中,首先對第一個表達(dá)式進(jìn)行檢驗(yàn),如果為真,則返回表達(dá)式2的值;如果為假,則返回表達(dá)式3的值。

\n

76.D

77.A

78.C函數(shù)的參數(shù)通常分為兩種:數(shù)值變量和指針變量。數(shù)值變量被函數(shù)調(diào)用后,函數(shù)內(nèi)的參數(shù)為該數(shù)值變量的副本。對副本的一切操作都不會影響到調(diào)用函數(shù)外原來的參數(shù)。指針變量在函數(shù)中傳遞的是對其存放地址的一份副本,該副本存放的地址與原來的指針?biāo)娴牡刂芬恢?。在函?shù)體內(nèi)修改指針存放的地址對應(yīng)的值與在函數(shù)體外對原參數(shù)的修改同樣有效,因?yàn)樵瓍?shù)也指向該地址。

題目中的程序包括主函數(shù)main和fun函數(shù),其中fun函數(shù)為void型,不需要fun函數(shù)返回值。fun函數(shù)的形參為2個整型指針變量和1個整型變量。在main函數(shù)中調(diào)用fun函數(shù),a為指向數(shù)組第一個數(shù)的地址,a+1指向數(shù)組第二個數(shù)的地址,變量c的初始值為0。雖然在fun函數(shù)中也有整型變量c,但是該變量的使用范圍為fun函數(shù),與main中的變量c沒有關(guān)系,有c=*a+*b,即c=15,但是main函數(shù)對fun函數(shù)的參數(shù)傳遞為數(shù)值變量,fun函數(shù)中變量c數(shù)值的改變不會影響main函數(shù)中變量c的數(shù)值改變,即主函數(shù)中變量c的值依然為0。

79.D本題考察for循環(huán)語句,注意第二個for語句的后面有一個分號,即printf函數(shù)不屬于循環(huán)體,無論循環(huán)執(zhí)行多少次,printf(”*”)語句只執(zhí)行一次。因此,本題正確答案為D)。

80.B

81.

82.

【解析】本題考查的是for循環(huán)和指針變量。通過for循環(huán)實(shí)現(xiàn)對數(shù)組的遍歷,形參iilax和d都是指針型變量,所以引用它們指向的變量時要進(jìn)行指針運(yùn)算。先有*max=a[0],在遍歷中如果遇到比max大的元素,則將a[i]賦值給max,下標(biāo)i賦值給*d。循環(huán)語句用來遍歷數(shù)組元素,然后通過條件語句比較數(shù)組元素找到最大值。

2021年黑龍江省雙鴨山市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若二維數(shù)組a有m列,則在a[i][j]剛前的元素個數(shù)為()。

A.i*m+j-1B.i*m+jC.j*m+iD.i*m+j+1

2.軟件生命周期中的活動不包括()

A.軟件維護(hù)B.市場調(diào)研C.軟件測試D.需求分析

3.設(shè)有定義intn=0,*p=&n,**q=&p;,則下列選項(xiàng)中正確的賦值語句是

A.p=1;B.*q=2;C.q=p;D.*p=5;

4.對n個元素的有序表A[1..n]進(jìn)行順序查找,其成功查找的平均查找長度(即在查找表中找到指定關(guān)鍵碼的元素時,所進(jìn)行比較的表中元素個數(shù)的期望值)為()

A.nB.(n+1)/2C.log2nD.n^2

5.能正確表示“當(dāng)x的取值在[1,10]和[100,110]范圍內(nèi)為真,否則為假”的表達(dá)式是()。

A.(x>=1)&&(x<=10)&&(x>=100)&&(x<=110)

B.(x>=1)‖(x<=10)‖(x>=100)‖(x<=110)

C.(x>=1)&&(x<=10)‖(x>=100)&&(x<=110)

D.(x>=1)‖(x<=10)&&(x>=100)‖(x<=110)

6.在長度為n的有序線性表中進(jìn)行二分查找,最壞情況下需要比較的次數(shù)是A.O(n)

B.O(n2)

C.O(log2n)

D.O(nlog2n)

7.

8.以下說法錯誤的是()。

A.C語言標(biāo)識符中可以有多個字母、數(shù)字和下劃線字符

B.C語言標(biāo)識符中下劃線字符可以出現(xiàn)在任意位置

C.C語言標(biāo)識符不能全部由數(shù)字組成

D.C語言標(biāo)識符必須以字母開頭

9.有以下函數(shù):intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下關(guān)于aaa函數(shù)功能敘述正確的是()。

A.將串s復(fù)制到串tB.比較兩個串的大小C.求字符串s的長度D.求字符串s所占字節(jié)數(shù)

10.有以下程序:

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

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

11.有以下程序:

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

A.4321098765B.5678901234C.0987654321D.0987651234

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

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

13.

14.若有定義“inta,b,c;”以下程序段的輸出結(jié)果是()。a=11;b=3;c=0;printf(“%d\n”,c=(a/b,a%b));

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

15.在下面棧的基本運(yùn)算中,不是加工型運(yùn)算的是______。

A.初始化B.進(jìn)棧C.退棧D.判???/p>

16.有以下程序:

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

A.45B.50C.60D.55

17.若要說明一個類型名STP,使得定義語句STPs;等價于Char*s;,以下選項(xiàng)中正確的是()。

A.typedefChar*s;

B.typedefChar*STP;

C.typedefSTP*Char;

D.typedef*CharSTP;

18.以下程序的輸出結(jié)果是()。main(){inta[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}A.18B.19C.20D.21

19.軟件設(shè)計(jì)包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過程設(shè)計(jì),其中軟件的過程設(shè)計(jì)是指()

A.模塊間的關(guān)系B.系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述C.軟件層次結(jié)構(gòu)D.軟件開發(fā)過程

20.有以下程序:#include<stdio.h>main(){intx=8;for(;x>0;x--){ if(x%3) { printf(“%”d,x--); continue; }printf(“%d,”,--x);}}程序的運(yùn)行結(jié)果是()。

A.7,4,2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,

二、2.填空題(20題)21.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為______。

22.設(shè)函數(shù)findbig已定義為求3個數(shù)中的最大值,以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=【】。

scanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,z);

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

}

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

24.以下說明語句中,【】是結(jié)構(gòu)體類型名。

typedefstruct

{intn;

charch[8];

}PER;

25.若有下列定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,則值為3的表達(dá)式為:______。

26.在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。

27.若有如下程序:

main()

{intx=4;y=3,Z=2,t;

t=x<y<z;

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

}

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

28.以下程序通過函數(shù)指針p調(diào)用函數(shù)fun,請?jiān)谔羁諜趦?nèi)寫出定義變量p的語句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

29.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及列數(shù)據(jù)的操作運(yùn)算。

30.以下程序的功能是調(diào)用函數(shù)fun計(jì)算:m=1-2+3-4+…+9-10,并輸出結(jié)果。請?zhí)羁铡?/p>

intfun(intn)

{intm=0,f=1,i;

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

{m+=i*f;

f=【】;

}

returnm;

}

main()

{printf("m=%d\n",【】)};

31.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)式【】。

32.指針變量p和數(shù)組a的說明如下:

int*a[3]={"aa","bb","cc"},**p;

執(zhí)行語句p=&a[2];后,*p指向的字符串是______。

33.若有以下程序:

main()

{chara;

a='H'-'A'+'0';

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

}

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

34.計(jì)算圓的周長、面積和球體積。

#definePI3.1415926

#define【】L=2*PI*R;【】;V=4.0/3.0*PI*R*R*R

main()

{floatr,l,s,v;

printf("inputaradus:");

scanf("%f",&r);

CIRCLE(r,l,s,v);

printf("r=%.2f\nl=%.2f\ns=%.2f\nv=%.2f\n",【】);

}

35.調(diào)用C語言標(biāo)準(zhǔn)庫函數(shù)時要求用【】命令。

36.在面向?qū)ο蟮姆椒ㄖ?,______描述的是具有相似屬性與操作的一組對象。

37.數(shù)據(jù)庫理論中,數(shù)據(jù)的獨(dú)立性一般可分為物理獨(dú)立性和______。

38.設(shè)有chara,b;,若要通過a&b運(yùn)算屏蔽掉a中的其他位,只保留第2位和笫8位(右起為第1位),則b的二進(jìn)制是【】。

39.執(zhí)行以下程序后,輸出#號的個數(shù)是【】。

#include<stdio.h>

main()

{inti,j;

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

for(j=2;j<=i;j++)putchar('#');

}

40.有以下程序:

intf(intn)

{if(n=1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

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

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

}

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

三、1.選擇題(20題)41.下列關(guān)于C語言數(shù)據(jù)文件的敘述中正確的是A.文件由ASCII碼字符序列組成,C語言只能讀寫文本文件

B.文件由二進(jìn)制數(shù)據(jù)序列組成,C語言只能讀寫二進(jìn)制文件

C.文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件

D.文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件

42.數(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)系

43.有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序運(yùn)行后,若從鍵盤輸入(從第1列開始)123<CR>45678<CR>則輸出結(jié)果是()。

A.1267B.1256C.1278D.1245

44.以下合法的十六進(jìn)制數(shù)是()。

A.0xB.0x4deC.0x1hD.oX77

45.以下選項(xiàng)中不屬于字符常量的是

A.'C'B.CC.'\xCC'D.'\072'

46.C語言中while循環(huán)和do-while循環(huán)的主要區(qū)別是______。

A.do-while的循環(huán)體至少無條件執(zhí)行一次

B.while的循環(huán)控制條件比do-while的循環(huán)控制條件嚴(yán)格

C.do-while允許從外部轉(zhuǎn)到循環(huán)體內(nèi)

D.do-while的循環(huán)體不能是復(fù)合語句

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

A.15

B.14

C.不確定

D.0main(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d\n",sum);}

48.若變量已正確說明為float類型,要通過語句scanf("%f%f%f",&a,&b,&c),給a賦予10.0,b賦予22.0,b賦予33.0,不正確的輸入形式是()

A.10<回車>22<回車>33<回車>

B.10.0,22.0,33.0<回車>

C.10.0<回車>22.O33.00<回車>

D.10.22<回車>33<回車>

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

A.acbedB.decabC.deabcD.cedba

50.以下程序的輸出結(jié)果是______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;printf("%d%d%d",a[a],a[5],a[8]);}

A.258B.741C.852D.369

51.在一棵二叉樹上第5層的結(jié)點(diǎn)數(shù)最多是______。

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

52.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=1,b=3;if((++a<0)&&!(b--<=0))printf("%d,%d\n",a,B;elseprintf("%d,%d\n",b,A);}

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

53.下列描述中,不是線性表順序存儲結(jié)構(gòu)特征的是

A.不便于插入和刪除B.需要連續(xù)的存儲空間C.可隨機(jī)訪問D.需另外開辟空間來保存元素之間的關(guān)系

54.以下符合C語言語法的實(shí)型常量是()。

A.1.2E0.5B.3.14159EC.5E-3D.E15

55.有以下程序

#include<stdio.h>

main()

{FILE*fp;inti,a[6]={l,2,3,4,5,6};

fp=fopen("d3.dat","w+b");

fwrite(a,sizeof(int),6,fp);

fseek(fp,sizeof(int)*3,SEEK_SET);/*該語句使讀文件的位置指針從文件頭向后移動3個int型數(shù)據(jù)*/

fread(a,sizeof(int),3,fp);fclose(fp);

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

}

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

A.4,5,6,4,5,6,B.1,2,3,4,5,6,C.4,5,6,1,2,3,D.6,5,4,3,2,1,

56.請選出正確的程序段______。

A.int*pscanf(""%d"",p);……

B.int*s,k;*s=100;……

C.int*s,k;char*p,c;s=&k;p=&c;*p='a';……

D.int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;……

57.現(xiàn)有如下程序段#include"stdio.h"#include"string.h"main(){chara[]="acfijk";/*這里是有序的字符序列*/charb[]="befijklqswz";/*這里是有序的字符序列*/charc[80],*p;inti=0,j=0,k=0;while(a[i]!='\0'&&b[j]!='\0'){if(a[i]<b[j])c[k++]=a[i++];elseif(a[i]>b[j])c[k++]=b[j++];else{c[k++]=b[j++];i++;}}while(a[i]=='\0'&&b[j]!='\0')c[k++]=b[j++];while(a[i]!=,'\0'&&b[j]=='\0')c[k++]=a[i++];c[k]='\0';puts(c);}則輸出結(jié)果是

A.acfijkbefijklqswz

B.abceffiijjkklqswz

C.befijklqswzacfijk

D.abcefijklqswz

58.下列描述中正確的是()。

A.程序就是軟件

B.軟件開發(fā)不受計(jì)算機(jī)系統(tǒng)的限制

C.軟件既是邏輯實(shí)體,又是物理實(shí)體

D.軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合

59.假定所有變量均已正確說明,下列程序段運(yùn)行后x的值是a=d=c=0;x=35;if(!a)x=-1,elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

60.對于下述程序,在方式串分別采用“wt”和“wb”運(yùn)行時,兩次生成的文件TEST的長度分別是#include<stdio.h>voidmain(){FILE*fp=fopen("TEST",);fputc('A',fp);fputc('\n',fp);fputc('b',fp);fputc('\n',fp);fputc('C',fp);fclose(fp);}

A.7字節(jié)、7字節(jié)B.7字節(jié)、5字節(jié)C.5字節(jié)、7字節(jié)D.5字節(jié)、5字節(jié)

四、選擇題(20題)61.數(shù)據(jù)庫概念設(shè)計(jì)的過程中,以下各項(xiàng)中不屬于視圖設(shè)計(jì)設(shè)計(jì)次序的是()。

A.自頂向下

B.由整體到個體

C.由內(nèi)向外

D.由底向上

62.有以下程序:#include<stdio.h>main(){charc1,c2;c1=’A’+’8’-’4’;c2=’A’+’8’-’5’;printf(“c,%d\n”,c1,c2);}已知字母A的ASCⅡ碼為65,程序運(yùn)行后的輸出結(jié)果是()。A.E,68B.B,69C.E,DD.輸出無定值

63.下列關(guān)于指針變量賦空值的說法錯誤的是

A.當(dāng)賦空值的時候,變量指向地址為0的存儲單元B.賦值語句可以表達(dá)為變量名=’\0’;

C.賦值語句可以表達(dá)為變量名=0;D.一個指針變量可以被賦空值

64.有以下函數(shù)intfun(char*X,char*y){intn=0;while((*x===*y)*x!=\O){x++;y++;n++;}returnn;}函數(shù)的功能是()。A.查找X和y所指字符串中是否有\(zhòng)o

B.統(tǒng)計(jì)x和Y所指字符串中最前面連續(xù)相同的字符個數(shù)

C.將Y所指字符串賦給X所指定存儲空間

D.統(tǒng)計(jì)X和Y所指字符串中相同的字符個數(shù)

65.交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運(yùn)算符。

A.&B.^C.D.E.F.~

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

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

67.

68.下列關(guān)于線性鏈表的敘述中,正確的是()。

A.各數(shù)據(jù)結(jié)點(diǎn)的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致

B.各數(shù)據(jù)結(jié)點(diǎn)的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)

C.進(jìn)行插入與刪除時,不需要移動表中的元素

D.各數(shù)據(jù)結(jié)點(diǎn)的存儲順序與邏輯順序可以不一致,它們的存儲空間也可以不一致

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

A.a=2,b=lB.a=2,b=2C.a=1,b=lD.a=1.b=0

70.視圖設(shè)計(jì)一般有3種設(shè)計(jì)次序,下列不屬于視圖設(shè)計(jì)次序的是()。

A.自頂而下B.由內(nèi)向外C.由外向內(nèi)D.自底向上

71.

72.

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

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

74.

75.有如下嵌套的if語句:

if(a<b)

if(a<c)k=a;

elsek=C:

else

if(b<c)k=b;

elsek=C;

以下選項(xiàng)中與上述if語句等價的語句是()。

A.k=(a<b)?a:b;k=(b<c)?b:C;

B.k=(a<b)?((b<c)?a:b):((b>c)?b:c);

C.k=(a<b)?((a<c)?a:c):((b<c)?b:c);

D.k=(a<b)?a:b;k=(a<c)?a:c;

76.

77.軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件),下面屬于系統(tǒng)軟件的是()。A.學(xué)生管理系統(tǒng)B.C語言編譯程序C.UNIX操作系統(tǒng)D.數(shù)據(jù)庫管理系統(tǒng)

78.有以下程序

#include"stdio.h"

voidfun(int*a,int*b,intc)

{c=*a+*b;}

main()

{inta[2]={6,9},c=0;

fun(a,a+1,&c);

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

}

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

A.6B.9

C.0D.15

79.以下程序段中的變量已正確定義:

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

A.********B.****C.**D.*

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:依次取出字符串中所有的數(shù)字字符,形成新的字符串,并取代原字符串。例如原始字符串是“ab45c6djfd789”,則輸出后的字符是“456789”。請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計(jì)題(1題)82.請編寫函數(shù)fun,其功能是:找出一維整型數(shù)組元素中最大的值所在的下標(biāo),并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值。index存放最大值所在元素的下標(biāo)。

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

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

試題程序:

參考答案

1.B解析:二維數(shù)組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數(shù)組第一維的下標(biāo)是i,說明它前面還有i行,有i*m個元素,數(shù)組第二維的下標(biāo)是j,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。

2.B【答案】:B

【知識點(diǎn)】:軟件生命周期

【解析】:一個軟件產(chǎn)品或軟件系統(tǒng)要經(jīng)歷孕育、誕生、成長、成熟、衰亡等階段,一般稱為軟件生命周期。它把整個軟件生存周期劃分為若干階段,使得每個階段有明確的任務(wù),使規(guī)模大,結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開發(fā)變的容易控制和管理。通常,軟件生存周期包括可行性分析與開發(fā)項(xiàng)計(jì)劃、需求分析、設(shè)計(jì)(概要設(shè)計(jì)和詳細(xì)設(shè)計(jì))、編碼、測試、維護(hù)等活動,可以將這些活動以適當(dāng)?shù)姆绞椒峙涞讲煌碾A段去完成。故選B。

3.D解析:選項(xiàng)A),B),C)的指針賦值表達(dá)方式都不正確,*p=5表達(dá)整數(shù)5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。

4.B

5.C本題考查邏輯與(&&)和邏輯或(||)運(yùn)算符的使用。x值在[1,10]之間,C語言中可以寫成x值在[100,11O]之間,C語言表達(dá)式應(yīng)寫成“(x>=100)&&(x>=110)”;[1,1O]和[100,110]滿足任意條件就可以,所以是邏輯或的關(guān)系,因此只要將前兩個表達(dá)式用邏輯或運(yùn)算符連接起來即可,所以最后的表達(dá)式:(x>=1)&&(x<=10)&&(x<=110)。

6.C解析:二分查找法也稱為折半查找法。它的基本思想是:將n個元素分成個數(shù)大致相同的兩半,取a[n/2]與欲查找的x作比較,如果x=a[n/2],則找到x,算法終止;如果x<a[n/2],則只要在數(shù)組a的左

溫馨提示

  • 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

提交評論