2021-2022年內(nèi)蒙古自治區(qū)烏蘭察布市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)_第1頁
2021-2022年內(nèi)蒙古自治區(qū)烏蘭察布市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)_第2頁
2021-2022年內(nèi)蒙古自治區(qū)烏蘭察布市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)_第3頁
2021-2022年內(nèi)蒙古自治區(qū)烏蘭察布市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)_第4頁
2021-2022年內(nèi)蒙古自治區(qū)烏蘭察布市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021-2022年內(nèi)蒙古自治區(qū)烏蘭察布市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.樹的度為3,且有9個度為3的節(jié)點(diǎn),5個度為1的節(jié)點(diǎn),但沒有度為2的節(jié)點(diǎn)。則該樹中的葉子節(jié)點(diǎn)數(shù)為()。

A.18B.33C.19D.32

2.若有定義語句:doublea,*p=&a;,以下敘述中錯誤的是()。

A.定義語句中的*號是一個間址運(yùn)算符

B.定義語句中的*號只是一個說明符

C.定義語句中的P只能存放double類型變量的地址

D.定義語句中,*p=&n把變量a的地址作為初值賦給指針變量P

3.判斷一個單向鏈表中是否存在環(huán)的最佳方法是()

A.兩重遍歷B.快慢指針C.路徑記錄D.哈希表輔助

4.在如下結(jié)構(gòu)定義中,不正確的是()。A.

B.

C.

D.

5.

6.設(shè)變量已正確定義并賦值,下列表達(dá)式中正確的是()。

A.x=y+z+5,++yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.0

7.不帶頭結(jié)點(diǎn)的單鏈表head為空的判定條件是()。

A.head=NULLB.head->next=NULLC.head->next=headD.head!=NULL

8.

9.

10.有以下程序:#include<stdio.h>point(char*p){p+=3;}main()charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);

A.aB.bC.cD.d

11.有種數(shù)據(jù)結(jié)構(gòu)叫跳躍列表(SkipList),它是一種基于并聯(lián)的鏈表的隨機(jī)化數(shù)據(jù)結(jié)構(gòu),其效率可比擬于二叉查找樹(對于大于數(shù)操作需要O(logn)平均時間)。它是按層建造的。底層是一個普通的有序鏈表。每個更高層都充當(dāng)下面列表的“快速跑道”,這里在層i中的元素按概率l/p出現(xiàn)在層i+1中。平均起來,每個元素都在p/(p-1)個列表中出現(xiàn),而最高層的元素(通常是在跳躍列表前段的一個特殊的頭元素)在O(logpn)個列表中出現(xiàn)。調(diào)節(jié)p的大小可以在內(nèi)存消耗和時間消耗上進(jìn)行折中。試分析在該數(shù)據(jù)結(jié)構(gòu)中查找一個元素的平均時間復(fù)雜度。

A.O(logn)B.O(n)C.O(n*logn)D.以上都不正確

12.下列敘述中錯誤的是()。A.在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致,

B.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題

C.數(shù)據(jù)庫設(shè)計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫

D.數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持

13.

14.若有函數(shù)voidfun(doublea[]。int*n){…}以下敘述中正確的是()。A.調(diào)用fun函數(shù)時只有數(shù)組執(zhí)行按值傳送,其他實(shí)參和形參之間執(zhí)行按地址傳送

B.形參a和n都是指針變量

C.形參a是一個數(shù)組名,n是指針變量

D.調(diào)用fun函數(shù)時將把double型參數(shù)組元素一一對應(yīng)地傳送給形參a數(shù)組

15.設(shè)有關(guān)鍵碼初始化序列{Q,H,C,Y,P,A,M,S,R,D,F,X},新序列{F,H,C,D,P,A,M,Q,R,S,Y,X}是采用()方法對初始序列精細(xì)第一堂排序的結(jié)果。

A.直接插入排序B.二路歸并排序C.快速排序D.基數(shù)排序

16.算法分析的目的是()。

A.找出數(shù)據(jù)結(jié)構(gòu)的合理性B.研究算法中的輸入和輸出的關(guān)系C.分析算法的效率以求改進(jìn)D.分析算法的易讀性和文檔性

17.有以下程序:#include<stdio.h>#deflneS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf(“%d,”,S1(a+b));printf(“%d,”,S2(a,b)+S1(3));printf(“%d”,S2(3+a,b+3));}程序運(yùn)行后的輸出結(jié)果是()。

A.18,34,100B.24,34,92C.24,34,100D.18,34,92

18.設(shè)變量已正確定義,則以下能正確計算n!的程序段是______。

A.f=0;for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

19.若一個棧以向量V[1..n]存儲,初始棧頂指針top為n+1,則下面x進(jìn)棧的正確操作是()。

A.top=top+1;V[top]=x

B.V[top]=x;top=top+1

C.top=top-1;V[top]=x

D.V[top]=x;top=top-1

20.下面程序的運(yùn)行結(jié)果是()#include<stdio.h>#include<string.h>main(){char*a="AbcdEf",*b="aBcD"a++;b++;printf("%d\n",strcmp(a,b));}

A.0B.負(fù)數(shù)C.正數(shù)D.無確定值

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

main()

{

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

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

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

}

22.對于長度為n的順序存儲的線性表,當(dāng)隨機(jī)插入和刪除一個元素時,需平均移動元素的個數(shù)為【】。

23.以下程序輸出的最后個值是【】

intff(intn)

{staticintf=1;

f=f*n

returnf;

}

main()

{inti;

for(i=1;i<=5:i++)printf("%d、n",ff(i));}

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

#include<string.h>

typedefstructstudent{

charname[10];

longsno);

floatscore

}STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90}

c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%1d%s\n",d.sno,p->name);

}

25.\13'在內(nèi)存中占1個字節(jié),"\12"在內(nèi)存中占______個字節(jié)。

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

#include<stdio.h>

#deftneJFT(x)x*x

main()

{inta,k=3;

a=++JFT(k+1);

printf("%d",a);

}

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

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

#include<conio.h>

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

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

if(i%7==0‖i%11==0)

a[j++]=i;

*n=j;}

main()

{intaa[M],n,k;

clrscr();

fun(10,aa,&n);

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

if((k+1)%20==0)printf("\n");

elseprintf("%4d",aa[k]);

printf("\n");}

29.下面的程序可列指定字符串中的字符串進(jìn)行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

30.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

31.關(guān)系數(shù)據(jù)庫的關(guān)系演算語言是以【】為基礎(chǔ)的DML語言。

32.設(shè)一棵完全二叉樹共有700個結(jié)點(diǎn),則在該二叉樹中有【】個葉子結(jié)點(diǎn)。

33.下面程序的功能是輸出數(shù)組中最大的數(shù),由a指針指向該元素。請?zhí)羁铡?/p>

main()

{ints[]={6,7,2,13,9,1,12,10,5,8,4,3,11),*a,*b;

for(【】)

if(*a<*b)a=b;

printf("%d",*a);

}

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

#include<stdio.h>

int(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

35.定義inta=5,b;,則執(zhí)行表達(dá)式b=++a*--a之后,變量b的值為【】。

36.可以把具有相同屬性的一些不同對象歸類,稱為【】。

37.在面向?qū)ο蟪绦蛟O(shè)計中,從外面看只能看到對象有外部特征,而不知道也無須知道數(shù)據(jù)的具體結(jié)構(gòu)以及實(shí)現(xiàn)操作的算法,這稱為對象的______。

38.下面程序的輸出是【】

main()

{enumem{eml=3,em2=1,em3};

char*aa[]={"AA',"BB","CC","DD"}

printf("%s%s%\n",aa[em1],aa[em2],aa[em3]);

}

39.函數(shù)voidfun(float*sn,intn)的功能是:根據(jù)以下公式計算S,計算結(jié)果通過形參指針sn傳回;n通過形參傳入,n的值大于等于0。請補(bǔ)全程序。

S=1-1/3+1/5-1/7+…+1/(2n+1)

voidfun(float*sn,intn)

{floats=0.0,w,f=-1.0;

inti=0;

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

{f=【】*f;

w=f/(2*i+1);

s+=w;

}

【】=s;

}

40.實(shí)現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為算法的【】。

三、1.選擇題(20題)41.下列敘述中正確的是()。

A.在賦值表達(dá)式中,賦值號的左邊既可以是變量,也可以是任意表達(dá)式

B.實(shí)型變量中允許存放整型數(shù)

C.若a和b類型相同,在執(zhí)行了賦值a=b后,b中的值將放入a中,但b中的值不變

D.在C程序中,求余運(yùn)算符“%”兩邊的類型相同時才能進(jìn)行運(yùn)算

42.以下敘述中錯誤的是______。A.用戶所定義的標(biāo)識符允許使用關(guān)鍵字

B.用戶所定義的標(biāo)識符應(yīng)盡量做到“見名知意”

C.用戶所定義的標(biāo)識符必須以字母或下劃線開頭

D.用戶定義的標(biāo)識符中,大、小寫字母代表不同標(biāo)識

43.下列程序段的輸出結(jié)果為()。#include<stdio.h>main(){staticchara[]="language";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);}

A.languageB.lnugC.有語法錯誤D.lang

44.設(shè)有下列二叉樹:

對此二叉樹中序遍歷的結(jié)果為______。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

45.以下四個程序中,完全正確的是()。

A.#include<stdio.h>

B.#include<stdio.h>main();main(){/*programming*/{/*/programming/*/printf("programming!\n");}printf("programming!\n");}

C.#include<stdio.h>

D.include<stdio.h>main()main(){/*/*programming*/*/{/*programming*/printf("programming!\n");}printf("programming!\n");}

46.以下程序的輸出結(jié)果是______。fun(int*s,int*p){staticintt=3;*p=s[t];t--;}main(){intstr[]={1,2,3,4},i,m=0;for(i=0;i<4;i++){fun(str,&m);printf("%d",m);}printf("\n");}

A.0B.444412C.1234D.4321

47.以下對結(jié)構(gòu)體類型變量的定義中,不正確的是_______。

A.typedefstructaa{intn;floatm;}aa;aatd1;

B.#defineaastructaaaa{intn;floatm;}td1;

C.struct{intn;floatm;}aa;structaatd1;

D.struct{intn;floatm;}td1;

48.執(zhí)行下面程序的結(jié)果是______。main(){intx=2;printf("%d\n",(x--,x<<1,x&&5));}

A.0B.1C.2D.編譯時有語法錯誤,不能執(zhí)行

49.有以下程序#include<stdio.h>main(){printf("%d\n",NULL);}

A.0B.1C.-1D.NULL沒定義,出錯

50.有以下程序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é)果是

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

51.下列條件語句中,功能與其他語句不同的是()。

A.if(a)printf("%d\n",x);elseprintf("%d\n",y);

B.if(a==O)printf("%d\n",y);elseprintf("%d\n",x);

C.if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);

D.if(a==0)printf("%d\n",x);elseprintf("%d\n",y);

52.若a為int類型,且其值為3,則執(zhí)行完表達(dá)式a+=a-=a*a后,a的值是()。

A.-3B.9C.-12D.6

53.算法的時間復(fù)雜度是指()A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法程序中的指令條數(shù)D.算法執(zhí)行過程中所需要的基本運(yùn)算次數(shù)

54.下列不合法的main函數(shù)命令行參數(shù)的表示形式是______。

A.main(inta,char*c[]);

B.main(ac,av)intarc;char**av;

C.main(c,v)intc;char*v[];

D.main(argc,argv)intargc;charargv[];

55.設(shè)有以下語句:charstr1[]="string"mstr2[8],*str3,*str4=="string";則______不是對庫函數(shù)的正確調(diào)用。

A.strcpy(str1,"HELLO1");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLO3");

D.strcpy(str4,"HELLO4");

56.在具有n個結(jié)點(diǎn)的二叉排序樹上插入一個新結(jié)點(diǎn)時,根據(jù)n個數(shù)據(jù)元素生成一棵二叉排序樹時,其時間復(fù)雜性大致為______。

A.O(n)

B.O(n2)

C.O(log2n)

D.O(nlog2n)

57.若有下列定義和語句:intu=011,v=Ox11,w=11;printf("%o,%x,%d\n”,u,v,w);則輸出結(jié)果是()。

A.9,17,11B.9,11,11C.11,11,11D.11,17,11

58.不能與do…while(exp)語句中的(exp)等價的表達(dá)式是()。

A.(!exp==0)B.(exp>0‖exp<0)C.(exp==0)D.(exp!=0)

59.現(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

60.對以下說明語句的正確理解是inta[10]={6,7,8,9,10};

A.將5個初值依次賦給a[1]至a[5]

B.將5個初值依次賦給a[0]至a[4]

C.將5個初值依次賦給a[6]至a[10]

D.因?yàn)閿?shù)組長度與初值的個數(shù)不相同,所以此語句不正確

四、選擇題(20題)61.有以下程序:

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

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

62.以下敘述正確的是()。A.C語言函數(shù)可以嵌套調(diào)用,例如:fun(fun(x))

B.C語言程序是由過程和函數(shù)組成的

C.c語言函數(shù)不可以單獨(dú)編譯

D.c語言中除了main函數(shù),其他函數(shù)不可作為單獨(dú)文件形式存在

63.

64.有以下程序段:

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

A.以上的說明形式非法

B.NODE是一個結(jié)構(gòu)體類型

C.OLD是一個結(jié)構(gòu)體類型

D.OLD是一個結(jié)構(gòu)體變量

65.

66.一個關(guān)系中屬性個數(shù)為1時,稱此關(guān)系為()。

A.對應(yīng)關(guān)系B.單一關(guān)系C.一元關(guān)系D.二元關(guān)系

67.

68.

69.設(shè)有以下程序段:

intX=0,s=0;

while(!X!=0.s+=++X;

prinff(”%d”,S.;

則()。

A.運(yùn)行程序段后輸出0B.運(yùn)行程序段后輸出lC.程序段中的控制表達(dá)式是非法的D.程序段執(zhí)行無限次

70.有三個關(guān)系R,S和T如下:

其中關(guān)系T由關(guān)系R和s通過某種操作得到,該操作為()。

A.選擇B.交C.投影D.并

71.若有定義語句:“inta=10;doubleb=3.14;”,則表達(dá)式A+a+b值的類型是()。

A.charB.intC.doubleD.float

72.有以下程序:

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

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

73.

定義下列結(jié)構(gòu)體(聯(lián)合)數(shù)組:

structst

{charname[15];

intage;

}a[10]={"ZHA0",14,"WANG",15,"LIU",16,"ZHANG",17);

執(zhí)行語句printf("%d,%C",a[2].a(chǎn)ge,*(a[3].name+2))的輸出結(jié)果為()。

A.15,AB.16,HC.16,AD.17,H

74.在“文件包含,預(yù)處理語句的使用形式中,當(dāng)#include后面的文件名用(雙引號)括時,尋找被包含文件的方式是()。

A.直接按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索目錄

B.先在源程序所在的目錄搜索,如沒找到,再按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索

C.僅僅搜索源程序所在目錄

D.僅僅搜索當(dāng)前目錄

75.已定義以下函數(shù)

76.若有定義:“inta,b;”,通過語句“scan[("%d;%d".,&a,&b);”,能把整數(shù)3賦給變量a,5賦給變量b的輸入數(shù)據(jù)是()。

A.35B.3,5C.3;5D.35

77.

78.

79.設(shè)變量x為float型且已賦值,則以下語句能將x中的數(shù)值保留到小數(shù)點(diǎn)后兩位,并將第3位四舍五入的是()。

A.

B.

C.

D.

80.

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun的功能是:用遞歸算法計算斐波拉契數(shù)列中第n項(xiàng)的值。從第l項(xiàng)起,斐波拉契數(shù)列為:1,1,2,3,5,8,13,21,…例如,若給n輸入7,則該項(xiàng)的斐波拉契數(shù)值為l3。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>longfun(intg){//****found****switch(g);{case0:return0;//****found****casel:case2:return1;}return(fun(g-1)+fun(g-2));}voidmain{longfib;intn;printf("Inputn:");scanf("%d",&n);printf("n=%d\n",n);fib=fun(n);printf("fib=%d\n\n",fib);}

六、程序設(shè)計題(1題)82.編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素數(shù)存人xx所指數(shù)組中,非素數(shù)的個數(shù)通過k返回。

例如,若輸入l7,則應(yīng)輸出:46891012141516。

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

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

參考答案

1.C設(shè)葉子結(jié)點(diǎn)數(shù)為〃,則該樹的結(jié)點(diǎn)數(shù)為n+9+5=n+\n14,根據(jù)樹中的結(jié)點(diǎn)數(shù)=樹中所有結(jié)點(diǎn)的度之和+1,得9×3+0×2+5×1+n×0+1=n+14,則n=19。本題選擇C選項(xiàng)。

2.Cdoublea,*p=&a語句的意思是將a的值存放到指針變量P中,P是指針可以隨意指向任何地址,所以答案C錯誤。

3.B

4.B

5.D

6.A運(yùn)算符“%”的左右兩個操作數(shù)均應(yīng)為整數(shù),所以B選項(xiàng)與D選項(xiàng)錯誤。C選項(xiàng)中不能將“x+z”的值賦給表達(dá)式“y*5”,所以C選項(xiàng)錯誤。故本題答案為A選項(xiàng)。

7.A

8.A

9.D

10.A解析:C函數(shù)的參數(shù)傳遞方式采用按值傳遞,不能通過調(diào)用函數(shù)改變形參指針本身的值,只能改變指針?biāo)缸兞康闹?。調(diào)用point函數(shù)時,將實(shí)參指針p的值(b數(shù)組的首地址)傳給了形參指針P,P+=3運(yùn)算使形參指針指向字符d,但并不能改變main函數(shù)中p的值,所以本題正確答案應(yīng)該是選項(xiàng)A)。

11.A

12.A解析:本題考查數(shù)據(jù)庫系統(tǒng)的基本概念和知識。數(shù)據(jù)的邏輯結(jié)構(gòu),是數(shù)據(jù)間關(guān)系的描述,它只抽象地反映數(shù)據(jù)元素之間的邏輯關(guān)系,而不管其在計算機(jī)中的存儲方式。數(shù)據(jù)的存儲結(jié)構(gòu),又叫物理結(jié)構(gòu),是邏輯結(jié)構(gòu)在計算機(jī)存儲器里的實(shí)現(xiàn)。這兩者之間沒有必然的聯(lián)系。因此,選項(xiàng)A的說法是錯誤的。

數(shù)據(jù)庫可以看成是長期存儲在計算機(jī)內(nèi)的、大量的、有結(jié)構(gòu)的和可共享的數(shù)據(jù)集合。因此,數(shù)據(jù)庫具有為各種用戶所共享的特點(diǎn)。不同的用戶可以使用同一個數(shù)據(jù)庫,可以取出它們所需要的子集,而且容許子集任意重疊。數(shù)據(jù)庫的根本目標(biāo)是要解決數(shù)據(jù)的共享問題。因此,選項(xiàng)B的說法是正確的。

數(shù)據(jù)庫設(shè)計是在數(shù)據(jù)庫管理系統(tǒng)的支持下,按照應(yīng)用的要求,設(shè)計一個結(jié)構(gòu)合理、使用方便、效率較高的數(shù)據(jù)庫及其應(yīng)用系統(tǒng)。數(shù)據(jù)庫設(shè)計包含兩方面的內(nèi)容:一是結(jié)構(gòu)設(shè)計,也就是設(shè)計數(shù)據(jù)庫框架或數(shù)據(jù)庫結(jié)構(gòu);二是行為設(shè)計,即設(shè)計基于數(shù)據(jù)庫的各類應(yīng)用程序、事務(wù)等。因此,選項(xiàng)C的說法是錯誤的。

數(shù)據(jù)庫系統(tǒng)除了數(shù)據(jù)庫管理軟件之外,還必須有其他相關(guān)軟件的支持。這些軟件包括操作系統(tǒng)、編譯系統(tǒng)、應(yīng)用軟件開發(fā)工具等。對于大型的多用戶數(shù)據(jù)庫系統(tǒng)和網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng),還需要多用戶系統(tǒng)軟件和網(wǎng)絡(luò)系統(tǒng)軟件的支持。因此,選項(xiàng)D的說法是正確的。因此,本題的正確答案是選項(xiàng)A。

13.C

14.B\n本題考查函數(shù)中數(shù)組和指針的傳值,數(shù)組a[]在參數(shù)傳遞時,是傳遞的數(shù)組a的首地址,所以形參a和n都是指針變量。。

\n

15.C

16.C

17.D程序中S1和S2都是宏定義。S1(a+b)宏展開后的表達(dá)式為4*a+b+4*(a+b),即4*1+2+4*(1+2),結(jié)果為18;S2(a,b)宏展開后的表達(dá)式為4*(a)*(b)+b*a,即4*(1)*(2)+2*1,結(jié)果為10;S1(3)宏展開后的表達(dá)式為4*3+4*(3),結(jié)果為24;32(3+a,b+3)宏展開后的表達(dá)式為4*(3+a)*(b+3)+b+3*3+a,即4*(3+1)*(2+3)+2+3*3+1,結(jié)果為92。最終輸出:18,34,92。故本題答案為D選項(xiàng)。

18.D解析:A選項(xiàng),將f賦值為0,結(jié)果得到0,因?yàn)?乘任何數(shù)都為0;B選項(xiàng),i<n,計算的是(n-1)!,C選項(xiàng)將陷入死循環(huán)。

19.C

20.C

21.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

22.n/2n/2解析:刪除一個元素,平均移動的元素個數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個元素,平均移動元素個數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2;所以總體平均移動元素個數(shù)為n/2。

23.120120解析:靜態(tài)變量的類型說明符是static,靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點(diǎn):

靜態(tài)變量的類型說明符是static,靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點(diǎn):

①靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運(yùn)行期間都不釋放。

②對靜態(tài)局部變量是在編譯時賦初值的,即只賦初值—次,在程序運(yùn)行時它已有初值。以后每次調(diào)用函數(shù)時不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值。

③如在定義局部變量時不賦初值的話,則對靜態(tài)局部變量來說,編譯時自動賦初值0(對數(shù)值型變量)或空字符(對字符變量)。(注意:C語言中非靜態(tài)變量在定義時,系統(tǒng)并不會自動給它賦初值)

④雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其他函數(shù)是不能引用它的。本題中函數(shù)的功能是:與for語句一起求一個整數(shù)的階乘。

24.2002shangxian2002shangxian解析:\'B\'的ASCII值是66。本題中指針變量p指向d,執(zhí)行第一個if語句時,條件成立,d=b;執(zhí)行第二個if語句時,條件不成立,故d=b,所以d.sno=2002,p->name'Shangxian'。

25.22解析:'\\13':表示八進(jìn)制數(shù)13表示的ASCII字符,是一個字符,占一個字節(jié);而”\\12”是個字符串,除了八進(jìn)制數(shù)12表示的ASCII字符占一個字節(jié)外,還有在字符串的末尾加上串結(jié)束標(biāo)志“'\\0'”,所以共有2個字節(jié)。

26.99解析:宏替換的原則是按原樣替換,本題中遇到形參x則以實(shí)參k+1替換,其他字符不變,所以JFT(k+1)經(jīng)替換后為k+1,k+1,則a=++k+1*k+1。若k的值為3,則經(jīng)過運(yùn)算為a=4+1*4+1=9。

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

28.77解析:解答本題的關(guān)鍵是要讀懂程序,要找出能被7或11整除的所有整數(shù),注意數(shù)學(xué)中的“或”和C語言中的“或”的區(qū)別,但在此處,if條件語句中用了“‖”運(yùn)算符,若要找能同時被7和11整除的所有整數(shù)則在if的條件中應(yīng)使用“&&”運(yùn)算符。

當(dāng)然,如果m的值輸入50,即表達(dá)式fun(10,aa,&n);為fun(50,aa,&n);時輸入結(jié)果為:711142122283335424449。

29.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實(shí)現(xiàn)過程是將相鄰兩個字符進(jìn)行比較,如果當(dāng)前字符小于下一個字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+l]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。

30.10410\r\n4解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個成員分別占有其自己的內(nèi)存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內(nèi)存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

31.謂詞演算謂詞演算

32.350350解析:在任意一棵二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個。在根據(jù)完全二叉樹的定義,在一棵完全二叉樹中,最多有1個度為1的結(jié)點(diǎn)。因此,設(shè)一棵完全二叉樹具有n個結(jié)點(diǎn),若n為偶數(shù),則在該二叉樹中有n/2個葉子結(jié)點(diǎn)以及n/2-1個度為2的結(jié)點(diǎn),還有1個是度為1的結(jié)點(diǎn):若n為奇數(shù),則在該二叉樹中有[n/2]+1個葉子結(jié)點(diǎn)以及[n/2]個度為2的結(jié)點(diǎn),沒有度為1的結(jié)點(diǎn)。本題中,完全二叉樹共有700個結(jié)點(diǎn),700是偶數(shù),所以,在該二叉樹中有350個葉子結(jié)點(diǎn)以及349個度為2的結(jié)點(diǎn),還有1個是度為1的結(jié)點(diǎn)。所以,本題的正確答案為350。

33.a=sb=s+1;b-s<sizeof(s)/sizeof(s[0]);b++a=s,b=s+1;b-s<sizeof(s)/sizeof(s[0]);b++解析:題目要求輸出數(shù)組中最大的數(shù),所以要遍歷整個數(shù)組,而指針a用來指向最大數(shù),所以循環(huán)變量只有使用指針b。for初始化時,應(yīng)該先讓a指向第1個數(shù),然后讓b指向第2個數(shù),故循環(huán)初始化語句應(yīng)該為a=s,b=s+1或其他等價表達(dá)式。因?yàn)橐筨遍歷整個數(shù)組,故循環(huán)條件應(yīng)該為b-s<sizeof(s)/sizeof(s[0])或其他等價表達(dá)式。最后每次循環(huán)應(yīng)該讓b往后移動一位,故for的第3條語句應(yīng)該是++b、b++或其他等價形勢。所以本題應(yīng)填a=s,b=s+1;b-s<sizeof(s)/sizeof(s[0]);b++或其他等價語句。

34.7979解析:因?yàn)樵谡{(diào)用子函數(shù)時進(jìn)行的是數(shù)值傳遞,調(diào)用于函數(shù)并不能改變實(shí)參的值,所以經(jīng)過調(diào)用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。

35.2525解析:#NAME?

36.對象類

37.封裝性封裝性解析:對象具有下列5個基本特點(diǎn):①標(biāo)識惟一性;②分類性:③多態(tài)性;④封裝性;⑤模塊獨(dú)立性好。其中,封裝性是指從外面看只能看到對象的外部特征,對象的內(nèi)部特征即處理能力的實(shí)行和內(nèi)部狀態(tài),對外是不可見的,對象的內(nèi)部狀態(tài)只能由其自身改變。

38.DDBBCCDDBBCC解析:C語言對枚舉的定義規(guī)定:在枚舉中聲明的各個枚舉元素,如果沒有明確指出某個枚舉元素的值,它的上—個元素存在并有明確值的情況下,這個牧舉元素的值為其上一個元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=cm2+1=1+1=2,進(jìn)而可知,在printf()打印函數(shù)中,要打印的數(shù)組元素是aa[3]、aa[1]、aa[2],因此最后的打印結(jié)果應(yīng)當(dāng)為'DDBBCC'。

39.-1或-1.0*sn-1或-1.0\r\n*sn解析:由于在對S求和時,相鄰兩項(xiàng)的符號剛好相反,而在函數(shù)fun中沒有對數(shù)據(jù)進(jìn)行取反的操作,故第—空的目的是對數(shù)據(jù)進(jìn)行取反,以保證序列中相鄰兩項(xiàng)的符號不同。故第—個應(yīng)填-1或-1.0。在執(zhí)行完循環(huán)體后,要將求和結(jié)果通過指針參數(shù)的形式傳遞紿調(diào)用fun的函數(shù),故第二空應(yīng)填*sn。

40.空間復(fù)雜度和時間復(fù)雜度算法的復(fù)雜性是指對一個在有限步驟內(nèi)終止算法和所需存儲空間大小的估計。算法所需存儲空間大小是算法的空間復(fù)雜性,算法的計算量是算法的時間復(fù)雜性。

41.B解析:選項(xiàng)A),在賦值表達(dá)式中,賦值號的左邊只能是變量或者是代表某個存儲單元的表達(dá)式,不能是任意表達(dá)式。

在判斷選項(xiàng)B)時首先應(yīng)該建立這桿的概念,整型變量中只能存放整型數(shù),實(shí)型變量中能存放實(shí)型數(shù),也能存放整型數(shù)。

選項(xiàng)C),執(zhí)行表達(dá)式a=b后,將把變量b存儲單元中的值賦給變量a,從而覆蓋a中原有的值,但b中原有的值并不改變。

選項(xiàng)D),在C程序中,求余運(yùn)算符“%”兩邊的類型均為整型數(shù)據(jù)。

42.A解析:C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。大寫字母和小寫字母被認(rèn)為是兩個不同的字符,用戶在定義標(biāo)識符時應(yīng)盡量做到“見名知意”,且不允許使用關(guān)鍵字作標(biāo)識符。

43.B解析:本程序首先定義了靜態(tài)字符數(shù)組a,然后將指針p指向數(shù)組a的首地址。

第1次for循環(huán),p=a,p指向數(shù)組的第1個元素,*p是取指針p所指地址的內(nèi)容,輸出1;第2次for循環(huán),p=p+2,則p指向數(shù)組的第3個元素,*p是取指針p所指地址的內(nèi)容,輸出n;第3次for循環(huán),p=p+2,則p指向數(shù)組的第5個元素,*p是取指針p所指地址的內(nèi)容,輸出u;第4次for循環(huán),p=p+2,則p指向數(shù)組的第7個元素,*p是取指針p所指地址的內(nèi)容,輸出g,結(jié)束循環(huán)。

44.B解析:所謂中序遍歷是指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;并且在遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。

45.B解析:選項(xiàng)A中的main()后面不能直接用分號。選項(xiàng)C中的注釋符使用不正確,編譯器會把從第一個“/*到第一個*/”之間的當(dāng)作注釋,最后一個“*/”會被作為程序代碼去編譯。選項(xiàng)D中的include前要加上#表示是預(yù)定義語句。

46.D解析:程序的功能是將字符數(shù)組str中的內(nèi)容以反序輸出。函數(shù)fun中t為靜態(tài)變量,每一次調(diào)用函數(shù)fun時,t的值為上一次調(diào)用函數(shù)結(jié)束時的值。

47.C解析:本題的考查點(diǎn)是結(jié)構(gòu)體類型變量的定義。在選項(xiàng)C中,aa是—個結(jié)構(gòu)體變量,而不是結(jié)構(gòu)體名,所以structaatd1;是非法的。

48.B解析:逗號表達(dá)式x--,x<<1,x&&5先執(zhí)行x--,x的值為1,再執(zhí)行x<<1,表達(dá)式的值為2,但x的值仍是1(不是移位賦值表達(dá)式),最后執(zhí)行x&&5,二者均不為0,邏輯與的結(jié)果是1。

49.A解析:在C語言中NULL的ASCII碼值為0,而輸出函數(shù)要求以整形格式輸出,故最后的輸出數(shù)為0。所以,4個選項(xiàng)中選項(xiàng)A符合題意。

50.B解析:主函數(shù)中for循環(huán)執(zhí)行兩次,i=1和i=2。調(diào)用函數(shù)f(1),返回值為1,j=1;調(diào)用函數(shù)f(2),計算表達(dá)式f(n-1)+1的值時遞歸調(diào)用f(1),返回值為2,j=3。所以B為所選。

51.D解析:選項(xiàng)A、選項(xiàng)B和選項(xiàng)C都是在a的值為0的時候輸出y,a不為0的時候輸出x,而選項(xiàng)D是在a為0的時候輸出x,a不為0的時候輸出y。所以,4個選項(xiàng)中選項(xiàng)D符合題意。

52.C解析:本題中首先定義一個整型變量a并給它賦初值為3,在表達(dá)式中,從右開始執(zhí)行,即先執(zhí)行“a-=a*a;”等價于a=a-a*a即a=3-3*3=-6,此時a的值為-6,接著執(zhí)行“a+=a-;”相當(dāng)于執(zhí)行a=a+a即a=-6+(-6)=-12,此時a的值為-12。所以,4個選項(xiàng)中選項(xiàng)C符合題意。

53.D解析:算法的時間復(fù)雜度實(shí)際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算工具以及程序員的水平無關(guān)。

選項(xiàng)A錯誤,因?yàn)橥凰惴ǔ绦蛟谶\(yùn)行速度不同的計算機(jī)上運(yùn)行時,其計算時間是不同的。選項(xiàng)B錯誤。因?yàn)樗惴ㄋ帉懙某绦蜷L度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。

選項(xiàng)C錯誤,因?yàn)楦鶕?jù)一個算法所編制出的程序程序中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。

所以,本題的正確答案為D。

54.D解析:main函數(shù)的參數(shù)通常有兩個,前者為整型,后者為字符型指針數(shù)組。參數(shù)的名字可以是任意合法的標(biāo)識符。而且,形如**av與*av[]等價,所以選項(xiàng)A、B、C均正確,選項(xiàng)D是錯誤的。

55.C解析:C語言中:strcpy(st1,st2);,其兩個參數(shù)均為字符指針或字符數(shù)組,選項(xiàng)C中的目的串指針str3沒有指向具體有效的存儲單元,故是錯誤的調(diào)用。

56.D

57.C解析:在C語言中,“%d”表示輸出帶符號的十進(jìn)制整型數(shù);“%x”表示以十六進(jìn)制無符號型輸出整型數(shù)據(jù)(即不帶前導(dǎo)0x或0X);“%o”表示以八進(jìn)制無符號型輸出整型數(shù)據(jù)(即不帶前導(dǎo)0)。

58.C解析:本題考查.do…while循環(huán)。在do…while循環(huán)中,當(dāng)表達(dá)式的值為非零(真)時,執(zhí)行循環(huán),不能與其等價的是為零的表達(dá)式,即(exp==0)。

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

溫馨提示

  • 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

提交評論