2021-2022年山西省呂梁市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第1頁
2021-2022年山西省呂梁市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第2頁
2021-2022年山西省呂梁市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第3頁
2021-2022年山西省呂梁市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第4頁
2021-2022年山西省呂梁市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年山西省呂梁市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.相對于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

2.

3.以下程序運行后的輸出結(jié)果是()。

A.1,2,3,1,5,9,

B.1,3,5,1,3,5,

C.1,3,5,0,d,8,

D.1,3,5,-1,3,7,

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

A.inta=b=0;

B.charA=65+1,b=‘b’;

C.floata=1,*b=&a,*c=&b;

D.doublea=0.0;b=1.1;

5.有以下函數(shù):intfun(char*x,char*y)intn=0;while((*x==*y)&&*x!=‘\0’)∣x++;y++;n++;∣returnn;函數(shù)的功能是()。A.將y所指字符串賦給x所指存儲空間

B.查找和y所指字符串中是否有‘\0’

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

D.統(tǒng)計x和y所指字符串中相同的字符個數(shù)

6.有以下程序:

程序運行后的輸出結(jié)果是()。A.AaB.AbC.abD.Ba

7.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

8.以下程序的輸出結(jié)果是main(){intc=35;printf("%d\n",c&c);}

A.0B.70C.35D.1

9.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inti,S=0;for(i=1;i<10;i++)if(!(i%2)&&!(i%3))s+=i;printf("%d\n",s);}A.4B.39C.45D.6

10.

11.有以下程序:#include<stdio.h>main(){charch=‘1’;while(ch<‘9’){printf(“%d”,ch-‘0’);ch++;}}程序運行后的輸出結(jié)果是()。

A.12345678B.01234567C.0D.1

12.為了使模塊盡可能獨立,要求_____。A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強

B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強

13.在一個單鏈表HL中,若要在指針q所指結(jié)點的后面插入一個由指針p所指向的結(jié)點,則執(zhí)行____。

A.q一>next=p一>next;p一>next=q;

B.q一>next=p一>next;p一>next=q;

C.p一>next=q一>next;q=p;

D.p一>next=q一>next;q一>next=p;

14.

15.

16.下列變量聲明合法的是()。A.shorta=1.4e-1;

B.doubleb=1+3e2.8;

C.longdo=0xfdaL;

D.float2aaa=1e-3;

17.

18.有如下程序段

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

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

}

程序運行后輸出的結(jié)果是A.A.63

B.36

C.編譯出錯

D.00

19.有以下程序intfun(intx,inty){return(x+y);}main{inta=1,b=2,C=3,sum;sum=fun((a++,b++,a+b),c++printf("%d\n",sum);)執(zhí)行后的輸出結(jié)果是()。A.6B.7C.8D.9

20.下列敘述中正確的是()。

A.在C語言中,預(yù)處理命令行都以“#”開頭

B.預(yù)處理命令行必須位于C語言源程序的起始位置

C.“include<stdio.h>”必須放在C語言程序的開頭

D.C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能

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

inti=9;

prinff("%o\n",i);

22.若有定義:inta=4,b=5,c=6;然后順序執(zhí)行下列語句后,變量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);

23.在數(shù)據(jù)結(jié)構(gòu)中,順序存儲結(jié)構(gòu)的數(shù)據(jù)元素所占的存儲空間是______的。

24.下列程序段的運行結(jié)果是______。

charstr[]="ABCD",*p=str;

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

25.數(shù)據(jù)庫技術(shù)的主要特點為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)一管理與控制。

26.下列程序的運行結(jié)果是______。

#definePOWER(x)((x)*(x))

main()

{inti=1;

primtf("%d,%d",POWER(i++),i);

}

27.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

printf("%d\n"k);}

28.以下定義的結(jié)構(gòu)體類型擬包含兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

29.語句“int(*ptr)();”的含義是______是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)。

30.若已知a=10,b=20,則表達式!a<b的值為【】。

31.若有如下程序:

#include"stdio.h"

main()

{chars[30];

strcpy(&s[0],"abc");strcpy(&s[1],"de");strcpy(&s[2],"f");

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

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

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

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

33.以下程序運行后的輸出結(jié)果是______。

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

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

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}

35.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語句,且fun函數(shù)為void類型;請寫出fun函數(shù)的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}

36.下面的程序是將從終端讀入的20個字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;

chars[21],*p;

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

s[i]=getehar();

s[i]=【】;

p=【】;

while(*p)putchar(【】);

}

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

38.以下程序運行后的輸出結(jié)果是______。

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

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

main()

{

charstrl[]]="Howdoyoudo",*p1=strl;

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

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

}

40.在最壞情況下,冒泡排序的時間復(fù)雜度為【】。

三、1.選擇題(20題)41.在C語言中,要求運算數(shù)必須是整型的運算符是()

A.%B./C.<D.!

42.在設(shè)計程序時,應(yīng)采納的原則之一是()。

A.不限制goto語句的使用B.減少或取消注解行C.程序越短越好D.程序結(jié)構(gòu)應(yīng)有助于讀者理解

43.下列敘述中正確的是()。

A.break語句只能用于switch語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

44.有定義語句:intb;charc[10];則正確的輸入語句是()。

A.seanf("%d%s",&b,&c);

B.scanf("%d%s",&b,c);

C.seanf("%d%s",b,c);

D.scanf("%d%s",b,&c);

45.下列敘述中正確的是()。

A.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象之間具有密切的聯(lián)系

B.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象都是公用的

C.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象之間相對獨立,相互依賴性小

D.上述三種說法都不對

46.在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關(guān)鍵碼值11,所需的關(guān)鍵碼比較次數(shù)為______。

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

47.數(shù)據(jù)庫設(shè)計的4個階段是:需求分析、概念設(shè)計、邏輯設(shè)計和()。

A.編碼設(shè)計B.測試階段C.運行階段D.物理設(shè)計

48.有下列程序:main(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}執(zhí)行后的輸出結(jié)果是()。

A.1B.2C.4D.死循環(huán)

49.以下程序的功能是:建立一個帶布頭結(jié)點的單向鏈表,并將存儲在數(shù)組中的字符依次存儲到鏈表的各個結(jié)點中,請從與下劃線處號碼對應(yīng)的一組選項中選擇出正確的選項

#include<stdlib.h>

structnode

{chardata;structnode*next;};

(48)CreatList(char*s),

{structnode*h,*p,*q;

h=(structnode*)malloc(sizeof(structnode));

p=q=h;

while(*s!="\0")

{p=(structnode*)malloc(sizeof(structnode));

p->data=(49);

q->next=p;

q=(50);

s++;

}

p->next="\0";

returnh;

}

main()

{charstr[]="linklist";

structnode*head;

head=CreatList(str);

}

(1)

A.char*B.structnodeC.structnode*D.char

50.軟件設(shè)計中模塊劃分應(yīng)遵循的準(zhǔn)則是()。A.低內(nèi)聚低耦合

B.高內(nèi)聚低耦合

C.低內(nèi)聚高耦合

D.高內(nèi)聚高耦合

51.下述函數(shù)功能是______。intfunr(char*x){char*y=x;while(*y++);returny-x-1;}

A.求字符串的長度B.求字符串存放的位置C.比較兩個字符串的大小D.將字符串x連接字符串y后面

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

A.typedefstructaa{intn;floatm;}AA;AAtdl;

B.#defineAAstructaaAA{intn;floatm;}tdl;

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

D.struct{intn;floatm,}tdl;

53.請選出正確的程序段

A.int*p;scanf("%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;…

54.希爾排序法屬于______類型的排序法。

A.交換類排序法B.插入類排序法C.選擇類排序法D.建堆排序法

55.以下函數(shù)調(diào)用語句中含有_______個實參。func((exp1,exp2),(exp3,exp4,exp5));

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

56.有以下程序:#include<stdio.h>main(){intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13;14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<=i;j++)printf("%4c",");for(j=______;j<4;j++)printf("%4d",hum[i][j]);printf("\n");}}若要按以下形式輸出數(shù)組右上半三角;1234678111216則在程序下劃線處應(yīng)填入的是()。

A.i-1B.iC.i+1D.4-i

57.若已包括頭文件<stdio.h>和<string.h>,運行下列程序段時輸出結(jié)果是()。inti=0;chars1[10]="ABCD",s2[10]="EFG";strcat(s1,s2);while(s2[i++]!='\0')s2[i]=s1[i];puts(s2);

A.ABCB.ABCDEFC.EBCDEFGD.CBD

58.下列程序的輸出結(jié)果是()。#include<stdio.h>f(intA){intb=0;staticintc=4;a=c++;b++;return(A);}main(){inta=2,i,c;for(i=0;i<2;i++)c=f(a++);printf("%d\n",C);}

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

59.若有定義inta[10],*p=a,則p+6表示()。

A.數(shù)組元素a[5]的值B.數(shù)組元素a[5]的地址C.數(shù)組元素a[6]的地址D.數(shù)組元素a[0]的值加上5

60.設(shè)有如下程序段:intx=2002,y=2003;printf("%d\n",(x,y));則以下敘述中正確的是()。

A.輸出語句中格式說明符的個數(shù)少于輸出項的個數(shù),不能正確輸出

B.運行時產(chǎn)生出錯信息

C.輸出值為2002

D.輸出值為2003

四、選擇題(20題)61.有以下程序,程序中庫函數(shù)islower(ch)用以判斷ch中的字母是否為小寫字母:

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

A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!

62.下列選項中,能夠滿足“若字符串sl等于字符串s2,則執(zhí)行sT”要求的是()。

A.

B.

C.

63.若有以下程序段:

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

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

64.(62)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是()

A.ABCED

B.DBCEA

C.CDABE

D.DCBEA

65.下列敘述中正確的是()。

A.循環(huán)隊列是隊列的一種鏈?zhǔn)酱鎯Y(jié)構(gòu)

B.循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)

C.循環(huán)隊列是非線性結(jié)構(gòu)

D.循環(huán)隊列是一種邏輯結(jié)構(gòu)

66.

67.有如下程序段:inta=14,b=15,x;charc=A;x=(a&&b)&&(c<B):執(zhí)行該程序后,x的值為()。A.trueB.falseC.0D.1

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

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

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

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

69.設(shè)有定義:intk=0;以下選項的四個表達式中與其他三個表達式的值不相同的是()。

A.++kB.k+=1C.k++D.k+1

70.有以下程序:

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

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

71.

72.

73.Internet使用的網(wǎng)絡(luò)協(xié)議是()。

A.3CP協(xié)議B.TCP/IP協(xié)議C.UDP協(xié)議D.IP協(xié)議

74.

75.

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

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

77.

78.有以下程序程序運行后的輸出結(jié)果是()

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

79.

80.在一個C源程序文件中所定義的全局變量。其作用域為()。A.由具體定義位置和extern說明來決定范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.所在文件的全部范圍

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:為一個偶數(shù)尋找兩個素數(shù),這兩個素數(shù)之和等于該偶數(shù),并將這兩個素數(shù)通過形參指針傳回主函數(shù)。

請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

六、程序設(shè)計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。例如,若字符串中的內(nèi)容為****a*bc*def*g。***,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是****a*bc*def*g。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D解析:文件系統(tǒng)所管理的數(shù)據(jù)文件基本上是分散的、相互獨立的,因此相對于數(shù)據(jù)庫系統(tǒng),以此為基礎(chǔ)的數(shù)據(jù)處理存在3個缺點,數(shù)據(jù)冗余大、數(shù)據(jù)的不一致性、程序與數(shù)據(jù)的相互依賴(簡稱為數(shù)據(jù)依賴)。注意:文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)各自的特點,人工管理階段及數(shù)據(jù)庫系統(tǒng)三代的特點。

2.D

3.Dmain函數(shù)中,fun(fun(t))嵌套調(diào)用fun函數(shù)。第一次調(diào)用為fun(1),調(diào)用后,a[3]={1,3,5},輸出1,3,5,返回a[1]=3。第二次調(diào)用為fun(3),調(diào)用后,a[3]={一1,3,7},輸出一l,3,7。

4.BA選項中的變量b沒有定義,不能直接給變量a賦值。C選項中,*b、*c表示的是一個實型變量的地址,不能將指針型變量b的地址賦值給指針型變量c。D選項中,“a=0.0”后面應(yīng)該為逗號,不能是分號。故本題答案為B選項。

5.C本題中由循環(huán)條件可知遇到‘\\0’或x與y所指的字符的值不等中的一個條件時就結(jié)束,所以功能是統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)。

6.B函數(shù)fun將形參b賦給形參a,使得a和b都指向原b所指向的地址,然后對該地址的值執(zhí)行自增1;main函數(shù)中p1指向ch1,p2指向ch2。通過fun函數(shù)的調(diào)用,將ch2的值完成自增1,字符’a’自增1后變成字符’b’,所以程序輸出:Ab。本題答案為B選項。

7.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。

8.C解析:本題考查按位與“&”。因為1&1=1,0&0=0,所以任何數(shù)與自身按位與,結(jié)果仍為此數(shù),不發(fā)生變化。

9.Dif語句的條件是當(dāng)i既是3的倍數(shù)又是2的倍數(shù)時成立,所以此程序?qū)崿F(xiàn)的功能是將10以內(nèi)既是3的倍數(shù)又是2的倍數(shù)的數(shù)相加。

10.B

11.A表達式“ch-‘0’’將數(shù)字字符轉(zhuǎn)為數(shù)字。輸出的格式為%d。while循環(huán)從‘1’~‘8’,因此輸出的結(jié)果是12345678。故本題答案為A選項。

12.B解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。耦合性與內(nèi)聚性是模塊獨立性的兩個定性標(biāo)準(zhǔn),耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強,則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。本題答案為B。

13.D

14.A

15.B

16.A本題需了解3個知識點:①標(biāo)識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線;②do是C語言的一個關(guān)鍵字,不能再用做變量名和函數(shù)名;③c語言規(guī)定指數(shù)形式的實型數(shù)量e或E后面的指數(shù)必須是整數(shù)。

17.A

18.B在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個整型的指針形參變量,在函數(shù)體中,首先定義一個整型指針變量k,然后試圖利用k來交換a和b的結(jié)果。但處理語句k=a;很明顯是對地址進行賦值操作。在C語言中,指針變量作為函數(shù)參數(shù)時,可以改變被指向的變量的值,但不能改變指針變量本身的值,即我們可以改變實參指向的變量的值,不能使實參指向其他的變量。因此,本函數(shù)并不能交換形參所指向變量的結(jié)果。

在主函數(shù)中,首先定義了兩個整型變量a和b,并分別被初始化為3和6,然后定義兩個指針變量x和y,分別指向a和b,接著調(diào)用fun函數(shù),傳遞的實參為指針變量x和y,根據(jù)前面對fun函數(shù)的分析可知,調(diào)用該函數(shù)后并不能實現(xiàn)a和b數(shù)組的交換,因此,執(zhí)行輸出語句后,輸出的結(jié)果是36。本題正確答案選B。

19.Csum=fun((a++,b++,a+b),c++)中a++,b++,a+b為逗號表達式,運算后取a+b的值為5,c++為3,故函數(shù)調(diào)用后輸出結(jié)果為8。

20.A預(yù)處理命令以“#”開頭,一般在源文件的最前面書寫,但不是必須在起始位置書寫,所以B、C選項錯誤。C語言的預(yù)處理能夠?qū)崿F(xiàn)宏定義和條件編譯的功能,所以D選項錯誤。故本題答案為A選項。

21.1111解析:格式字符。是以八進制無符號形式輸出整數(shù)(不輸出前導(dǎo)符0),因為整數(shù)9的八進制為11,所以輸出結(jié)果為11。

22.11解析:本題考查的是基本賦值運算符和賦值表達式。a-=(b-5)等價于a=a-(b-5)=4,c=a=4;a%3=1,c=(a%3)+(b=1)=2,其中b的值被b=1確定為1。

23.連續(xù)連續(xù)解析:順序存儲結(jié)構(gòu)具有兩個特點:1)數(shù)據(jù)元素所占空間是連續(xù)的;2)數(shù)據(jù)元素在存儲空間中是按邏輯順序依次存放的。

24.6868解析:本題考查如何用指針引用數(shù)組元素。本題先定義了一個指向字符型數(shù)組str的指針p,指針p指向數(shù)組str的首地址,p+3將指針指向str[3],*(p+3)指的是字符“D”,輸出時是以“%d”格式輸出的,即輸出其相應(yīng)ASCII碼值68。

25.共享性共享性解析:數(shù)據(jù)庫技術(shù)的主要特點有以下幾個方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨立性,數(shù)據(jù)統(tǒng)一管理與控制。

26.111,1解析:POWER(i++)中先引用i的值1,再將i的值加1,POWER(i++)=1*1=1。

27.1212解析:本題通過第一個for循坪將數(shù)組arr[0]-arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結(jié)果為12,具體分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

28.structnode*structnode*解析:本題中的結(jié)構(gòu)類型名為structnode,所以空白處應(yīng)填:structnode*。即定義一個指向自身的結(jié)構(gòu)體指針。

29.ptrptr解析:本題考查函數(shù)指針的概念。函數(shù)指針的定義格式是:類型標(biāo)識符(*指針變量名)()。注:“類型標(biāo)識符”為函數(shù)返回值的類型。

30.11解析:計算表達式!a<b,先計算!a,因a的值為10,!a的值為0,而關(guān)系表達式0<20為真,所以表達式!a<b的值為1。

31.adf

32.111,1解析:POWER(i++)中先引用i的值1,再將i的值加1,POWER(i++)=1*1=1。

33.136136解析:本題考核的知識點是函數(shù)遞歸。主函數(shù)調(diào)用函數(shù)fun(6),由于6/2>0為真遞歸調(diào)用fun(3),接著遞歸調(diào)用fun(1),輸出1,返回上一層輸出3,在返回上一層輸出6。故空格處應(yīng)該填136。

34.99解析:本題考查函數(shù)的綜合知識。首先,我們可以利用強制轉(zhuǎn)換類型轉(zhuǎn)換運算符,將一個表達式轉(zhuǎn)換成所需類型。如:(double)a是將a轉(zhuǎn)換成double類型;(int)(x+y)是將x+y的值轉(zhuǎn)換成整型。

本題可按部就班地逐步運算:

fun((int)fun(a+c,b),a-c)

fun((int)fun(10,5),2-8)

fun((int)15.000000,-6)

fun(15,-6)

9

35.

36.\0s*p++\\0\r\ns\r\n*p++解析:本題先通過for循環(huán)從鍵盤讀入20個字符,然后賦值'\\0'作為字符串結(jié)束標(biāo)志,再使指針p指向字符串的首地址,最后通過while循環(huán)對字符串進行掃描并輸出。

37.線性結(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)有樹、二叉樹等。

38.30253025解析:本題考核的知識點是變量的存儲屬性和算術(shù)運算的應(yīng)用。本題涉及了自動變量、靜態(tài)變量和外部變量。外部變量是定義在所有函數(shù)之外的變量,本題中inta=5定義了一個外部變量a,它是一個全局變量,即作用域是從定義的位置開始到本文件的結(jié)束;靜態(tài)變量的存儲空間在程序的整個運行期間是固定的(static),本題函數(shù)fun()中staticinta=10定義個一個靜態(tài)變量a,此靜態(tài)變量a是個靜態(tài)的局部變量,即它的值只能在本函數(shù)中使用;自動變量是C程序中使用最多的一種變量,它的建立和撤消都是由系統(tǒng)在程序執(zhí)行過程中自動進行的,auto是自動變量的存儲類別標(biāo)識符,如果省略auto,系統(tǒng)隱含認(rèn)為此變量為auto,本題中main()中intc=20定義了一個自動變量c,此自動變量c是個靜態(tài)的局部變量.算術(shù)運算中a+=b++相當(dāng)于a=a+b,b=b+1.所以,在第一個ptine('%d',a)中a=a+b=10+20=30,第二個printf('%d',a)中a=a+c=5+20=25,即輸出3025。

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

40.

解析:冒泡排序法是通過相鄰數(shù)據(jù)元素的交換逐步將線性表變成有序。假設(shè)線性表的長度為n,則在最壞的情況下,冒泡排序需要經(jīng)過遍的從前往后的掃描和遍的從后往前的掃描,需要的比較次數(shù)為。

41.A解析:題目的四個選項中,B、C、D都不要求運算數(shù)必須為整數(shù),參與模運算(%)的運算數(shù)必須是整型數(shù)據(jù)。

42.D解析:濫用goto語句將使程序流程無規(guī)律,可讀性差,因此選項A)不選;注解行有利于對程序的理解,不應(yīng)減少或取消,選項B)也不選;程序的長短要依照實際情況而論,而不是越短越好,選項C)也不選。

43.C解析:只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句。當(dāng)break出現(xiàn)在循環(huán)體的switch語句體內(nèi)時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設(shè)置break語句,滿足某種條件,則跳出本層循環(huán)體。

44.B解析:scanf函數(shù)中格式控制后面是地址表列,不能用變量名。數(shù)組名c代表數(shù)組在內(nèi)存的首地址,&b代表變量b的首地址,選項B)正確。

45.C解析:在面向?qū)ο蟮某绦蛟O(shè)計中,對象是面向?qū)ο蟮能浖幕灸K,它是由數(shù)據(jù)及可以對這些數(shù)據(jù)施加的操作所組成的統(tǒng)一體,而且對象是以數(shù)據(jù)為中心的,操作圍繞對其數(shù)據(jù)所需做的處理來設(shè)置,沒有無關(guān)的操作。從模塊的獨立性考慮,對象內(nèi)部各種元素彼此結(jié)合得很緊密,內(nèi)聚性強。由于完成對象功能所需要的元素(數(shù)據(jù)和方法)基本上都被封裝在對象內(nèi)部,它與外界的聯(lián)系自然就比較少,所以,對象之間的耦合通常比較松。所以,選項A與B錯誤,選項C正確。

46.C解析:二分法查找是一種線性查找方法,其基本方法是:首先要用要查找的關(guān)鍵碼與線性表中間位置結(jié)點的關(guān)鍵碼值進行比較,這個中間結(jié)點把線性表分為兩個子表,比較相等則查找完畢,不等則根據(jù)查找結(jié)果確定下一步的查找應(yīng)該在哪一個子表中進行,如此下去,直到找到滿足條件的結(jié)點:或者確定表中沒有這樣的結(jié)點。用二分法查找關(guān)鍵碼值11的順序如下所示,其中[]內(nèi)為本次栓索的子表,()內(nèi)為該子表的中間結(jié)果。從圖中可以看出,經(jīng)四次查找后,確定表中沒有這樣的結(jié)點。因此本題正確答案為選項C(4)。

第一次:[3,6,8,10,12,(15),16,18,21,25,30]

第二次:[3,6,(8),10,12],15,16,18,21,25,30

第三次:[3,6,8,[(10),(12)],15,16,18,21,25,30]

第四次:[3,6,8,10,[(12)],(15),16,18,21,25,30]查找失敗。

47.D解析:數(shù)據(jù)庫的生命周期可以分為兩個階段:一是數(shù)據(jù)庫設(shè)計階段,二是數(shù)據(jù)庫實現(xiàn)階段。數(shù)據(jù)庫的設(shè)計階段又分為4個子階段,即需求分析、概念設(shè)計、邏輯設(shè)計和物理設(shè)計。因此,本題的正確答案是D。

48.A解析:在程序語句中,k的初始值為5,進行第1次while循環(huán)后,k自減1為4,非0,執(zhí)行循環(huán)體里的printf語句,輸出1,此時k的值變?yōu)?。程序執(zhí)行第2次循環(huán)時,k自減1變?yōu)?,為假,退出while循環(huán)語句。所以程序的最后結(jié)果為1。

49.C

50.B解析:耦合性和內(nèi)聚性足模塊獨立性的兩個定性標(biāo)準(zhǔn)。內(nèi)聚性是一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度量,作為軟件結(jié)構(gòu)設(shè)計的設(shè)計原則,要求每個模塊的內(nèi)部都具有很強的內(nèi)聚性;耦合性是指模塊間相互連接的緊密程度的度量,一個模塊與其他模塊的耦合性越強則該模塊的獨立性越弱。一般優(yōu)秀的軟件設(shè)計應(yīng)盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。

51.A解析:在函數(shù)體內(nèi)定義一字符型指針并指向形參,然后遍歷其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的長度。

52.C解析:定義結(jié)構(gòu)體類型的變量有幾種的方法如下:

①定義結(jié)構(gòu)體類型的同時,定義結(jié)構(gòu)體類型的變量,如下面的定義中在定義結(jié)構(gòu)體類型aa的同時定義了該類型的變量tdl。上述B)項中將宏名AA用宏體structaa替換進去后,與該定義形式一樣,因此是正確的。這一定義形式中,結(jié)構(gòu)體類型名明是可以省略的,因此,D)項也是正確的。

structaa

{...

}tdl;

②先定義結(jié)構(gòu)體類型,然后再定義結(jié)構(gòu)體類型的變量,形式如下:

structaa

{

};

structaatdl;

這種定義形式也可演變?yōu)?,先用類型定義語句typedef將該結(jié)構(gòu)體類型定義成一個類型名AA,然后直接用該類型名AA去定義一個變量(這時不再需要使用關(guān)鍵字struct了)。這就是A)項的形式。

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

54.B解析:希爾排序法的基本思想是:將整個無序序列分割成若干小的子序列分別進行插入排序。所以希爾排序法屬于插入類排序,但它對簡單插入排序做了很大的改進。

55.B解析:實參可以是常量、變量或表達式,(exp1,exp2)是逗號表達式,它的值是exp2的值;(exp3,exp4,exp5)是逗號表達式,它的值是exp5的值。所以該函數(shù)調(diào)用語句含有的實參個數(shù)是2,即:(exp1,exp2)和(exp3,exp4,exp5)。

56.B解析:本程序為二重循環(huán),外循環(huán)控制輸出數(shù)據(jù)的行數(shù),內(nèi)循環(huán)控制輸出數(shù)據(jù)的列數(shù)。本題需要輸出4行4列,外層循環(huán)語句for(i=0;i<4;i++)控制輸出4行,內(nèi)層的第一條for循環(huán)控制每行輸出的空格數(shù),第二條for循環(huán)用于控制每行的數(shù)字輸出,由于每一行的數(shù)字個數(shù)比前一行少1個,所以內(nèi)層的第二條for循環(huán)每次循環(huán)的次數(shù)需要遞減1,那么j的初始值應(yīng)該遞增,因為第一行輸出的是4個數(shù),所以空格中應(yīng)填i。

57.C解析:strcat(s1,s2)把s2連接到s1的后面

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論