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頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年江蘇省蘇州市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下程序段中的變量已正確定義:for(i=0;i<4;i++,i++) for(k=1;k<3;k++); printf(“*”);程序段的運行結(jié)果是()。

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

2.有以下程序段:charname[20】;intnum;scanf("name=%Snum=%d",name,&num);當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Lilimum=1001<回車>后,name的值為()。A.LiliB.name=LiliC.Lilinum=D.name=Lilinum=1001

3.下列程序的運行結(jié)果為()。

#deflneMAX(x,y)(x)>(y)(x):(y)

main()

{inta=2,b=3,c=1,d=3,t;

printf("%d\n",(MAX(a+b,c+D))*100);

}A.A.500B.5C.4D.400

4.在有向圖G的拓?fù)湫蛄兄?,若頂點Vi在頂點Vj之前,則下列情形不可能出現(xiàn)的是()。

A.G中有弧

B.G中有一條從Vi到Vj的路徑

C.G中沒有弧

D.G中有一條從Vj到Vi的路徑

5.有以下程序:#include<string.h>inta=4;intf(intn){intt=0;staticinta=5;if(n%2){inta=6;t++=a++;}else{inta=7;t+=a++;}returnt+a++;}main(){ints=a,i=0;for(;i<2;i++)s+=f(i);printf("%d\n",s);}程序運行后的輸出結(jié)果是()。

A.24B.28C.32D.36

6.

7.

8.兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度稱為()。

A.耦合度

B.內(nèi)聚度

C.復(fù)雜度

D.數(shù)據(jù)傳輸特性

9.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。

A.654321

B.65432

C.65453452

D.654534521

10.

11.軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。

A.概要設(shè)計B.軟件設(shè)計C.可行性研究和計劃制定D.需求分析

12.設(shè)二維數(shù)組A[1...m,1...n]按行存儲在數(shù)組B中,則二維數(shù)組元素A[i,j]在一維數(shù)組B中的下標(biāo)為()。A.A.n*(i-1)+jB.n*(i-1)+j-1C.i*(j-1)D.j*m+i-1

13.若用一個大小為6的數(shù)組來實現(xiàn)循環(huán)隊列,且當(dāng)前rear和front的值分別為0和3,當(dāng)從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為()

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

14.在Internet中,域名服務(wù)器的主要功能是實現(xiàn)()的轉(zhuǎn)換。

A.IP地址到域名(主機名字)B.域名到IP地址C.主機IP地址和路由器IP地址之間D.路由器IP地址之問

15.if語句的基本形式是:if(表達(dá)式)語句,以下關(guān)于“表達(dá)式”值的敘述中正確的是A.A.必須是邏輯值

B.必須是整數(shù)值

C.必須是正數(shù)

D.可以是任意合法的數(shù)值

16.下列選項中不是字符常量的是()。

A.'\v'B.'\x2a'C.'a'D."\0"

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

A.順序存儲結(jié)構(gòu)的存儲一定是連續(xù)的,鏈?zhǔn)酱鎯Y(jié)構(gòu)的存儲空間不一定是連續(xù)的

B.順序存儲結(jié)構(gòu)只針對線性結(jié)構(gòu),鏈?zhǔn)酱鎯Y(jié)構(gòu)只針對非線性結(jié)構(gòu)

C.順序存儲結(jié)構(gòu)能存儲有序表,鏈?zhǔn)酱鎯Y(jié)構(gòu)不能存儲有序表

D.鏈?zhǔn)酱鎯Y(jié)構(gòu)比順序存儲結(jié)構(gòu)節(jié)省存儲空間

18.

19.設(shè)變量P是指針變量,語句P=NULL;是給指針變量賦NULL值,它等價于()。A.A.p="";

B.p="0";

C.p=0;

D.p="";

20.采用開放定址法處理散列表的沖突時,其平均查找長度()

A.高于二分查找B.高于鏈接法處理沖突C.低于二分查找D.低于鏈接法處理沖突

二、2.填空題(20題)21.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。

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

23.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。

24.下列程序的功能是將字符串s中所有的字符c刪除。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')______;

s[j]='\O';

puts(s);

}

25.算法執(zhí)行過程中所需要的存儲空間稱為算法的______。

26.在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

27.執(zhí)行以下“for(i=1;i++<=4;i++);”語句后,變量i的值是()。

28.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{inti;

for(i=1;i<K;i++){......}

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

intf(inta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

}

main()

{intaa[5]=(1,2,3,4,5),s;

s=f(aa,5);printf("%d\n",s);

}

30.有以下程序:

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);

}

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

31.在面向?qū)ο蠓椒ㄖ校畔㈦[蔽是通過對象的______性來實現(xiàn)的。

32.數(shù)據(jù)庫系統(tǒng)其內(nèi)部分為三級模式,即概念模式、內(nèi)模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

33.下列循環(huán)的循環(huán)次數(shù)是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

34.語句:x++;、++x;、x=x+1;、x=1+x;,執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句(不得與列舉的相同)【】。

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

36.設(shè)有定義:

struct{inta;floatb;charc;}abc;*p_abc=&abc;

則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc【】a。

37.對于軟件測試,從是否需要執(zhí)行被測軟件的角度,可以分為靜態(tài)測試和動態(tài)測試。代碼檢查屬于______測試。

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

#include<stdio.h>

intt(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);

primf("%d,%d%d\n",c,D);

}

39.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

40.在進行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。

三、1.選擇題(20題)41.如果一個算法顯式地調(diào)用自己則稱為()

A.直接遞歸B.自用遞歸C.間接遞歸D.外用遞歸

42.下面程序的輸出結(jié)果是main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}

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

43.若要求從鍵盤讀人含有空格字符的字符串,應(yīng)該使用函數(shù)()。

A.getc()B.gets()C.getchar()D.scanf()

44.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'3'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n");}從第一列開始輸入數(shù)據(jù)(<CR>代表…個回車符):3845<CR>,則狴序輸出結(jié)果為()。

A.77889B.77868C.776810D.7.78866e+007

45.有下列函數(shù)定義:

fun(floath)

{printf("%f,%f\n”,h,h*h);}

該函數(shù)的類型是()。

A.int類型B.float類型C.void類型D.函數(shù)無類型說明,定義有錯

46.以下程序的輸出結(jié)果是main(){intb[3][3]={0,1,2,O,l,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t=t+b[i][b[j][j]];printf("%d\n",t);}

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

47.已有定義:chara[]="xyz",b[]={'x','y','z'};,以下敘述中正確的是()。

A.數(shù)組a和b的長度相同B.a數(shù)組長度小于b數(shù)組長度C.a數(shù)組長度大于b數(shù)組長度D.以述說法都不對

48.下列敘述中,不屬于測試的特征的是

A.測試的挑剔性B.完全測試的不可能性C.測試的可靠性D.測試的經(jīng)濟性

49.有以下程序:voidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(A);for(i=0;i<5;i++)printf("%d,",a[i]);}程序運行后的輸出結(jié)果是()。

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

50.對關(guān)系S和只進行集合運算,結(jié)果中既包含S中的所有元組也包含只中的所有元組,這樣的集合運算稱為()。

A.并運算B.交運算C.差運算D.積運算

51.下列選項中,不能用作標(biāo)識符的是A._1234_B._1_2C.int_2_D.2_int_

52.在一棵二叉樹上第8層的結(jié)點數(shù)最多是_______。

A.8B.16C.128D.256

53.下列選項中不屬于結(jié)構(gòu)化程序設(shè)計方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復(fù)用

54.軟件生命周期中花費費用最多的階段是

A.詳細(xì)設(shè)計B.軟件編碼C.軟件測試D.軟件維護

55.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()

A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭

56.結(jié)構(gòu)化程序設(shè)計的主要特點是______。

A.模塊化B.每個控制結(jié)構(gòu)具有封裝性C.每個控制結(jié)構(gòu)具有獨立性D.每個控制結(jié)構(gòu)只有一個入口和一個出口

57.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf("%d\n",m);}程序的運行結(jié)果是

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

58.有以下程序main(){ints=0,a=1,n;seanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的輸出值為2,則應(yīng)該從鍵盤給n輸入的值是

A.-1B.-3C.-5D.0

59.設(shè)fp為指向某二進制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為______。A.EOFB.非0值C.0D.NULL

60.下列程序的輸出結(jié)果是()。main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%d\n",j);}

A.42B.45C.56D.60

四、選擇題(20題)61.

62.

63.為了提高軟件的獨立性,模塊之間最好是()。

A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合

64.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是

A.sets(&s[0]);

B.scarf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

65.(68)下列有關(guān)數(shù)據(jù)庫的描述,正確的是______。

A.數(shù)據(jù)庫是一個DBF文件

B.數(shù)據(jù)庫是一個關(guān)系

C.數(shù)據(jù)庫是一組文件

D.數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合

66.

67.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。

A.EOFB.-lC.非零值D.0

68.以下不構(gòu)成無限循環(huán)的語句或語句組是()。

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

A.++mB.m+=1C.m++D.m+1

70.有以下程序:main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;printf("%d\n",*p+*q);}

A.16B.10C.8D.6

71.有下列程序

main()

{

inta[5]={2,4,6,8,10},*p,**k;

p=a;

k=&p;

printf("%d",*(p++));

printf("%d\n",**k);

}

運行該程序,其輸出結(jié)果是

A.4B.22

C.24D.46

72.有以下程序:

#include<stdio.h>

#defineS(x)4*(x)*x+1

main()

{intk=5,j=2;

printf("%d\n",S(k+j));

}

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

A.197B.143C.33D.28

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

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

74.下述程序的輸出結(jié)果是()。

#include<stdio.h>

main

{charch[2][5]-{”1234”,”5678”},*p[2];

inti,j,s=0;

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

p[i]=ch[i];

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

{s=p[i][j]一'0';

printf("%d",s);}

}A.A.6357B.6135C.1357D.691357

75.數(shù)據(jù)庫系統(tǒng)的核心是()。

A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員

76.有以下程序

#include<string.h>

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{1047,530},{1048,531}};

p.num=s[1].num;p.TotalScore=s[1].TotalScore;

}

main()

{structSTUs[2]={{2041,730},{2042,731}};

f(s[0]);

printf("%d,%3.0f\n",s[0].num,s[0].TotalScore);

}

程序的運行結(jié)果是

A.1047,530

B.1048,531

C.2041,730

D.2042,731

77.以下選項中,能用做用戶標(biāo)識符的是()。

A.voidB.8_8C._0_D.unsigned

78.下列程序的運行結(jié)果是()。main{intx=1,y=3,a=0;while(x++!=(y-=l)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}A.2,3,2B.2,3,1C.1,3,3D.3,1,2

79.設(shè)變量n為float類型,m為int類型,則以下能實現(xiàn)將n中的數(shù)值保留小數(shù)點后兩位,第三位進行四舍五入運算的表達(dá)式是()。

A.n=(n*100+0.5)/100.0

B.m=n*100+0.5,n=m/100.0

C.n=n*100+0.5/100.0

D.n=(n/100+0.5)*100.0

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:用遞歸算法計算斐波拉契級數(shù)列中第n項的值。從第一項起,斐波拉契級數(shù)序列為1,1,2,3,5,8,13,21,…例如,若給n輸入8,該項的斐波拉契級數(shù)值為21。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc,它的功能是:將字符串中的前導(dǎo)*號全部刪除,中間和后面的*號不刪除。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是a*bc*def*g****。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h=:{>#include<conio.h>woidproc(char*str){}voidmaincharstr[81];printf("Enterastring:\n");gets(str);proc(str):printf("Thestringafterdeleted:\n");puts(str);}

參考答案

1.C因為內(nèi)層循環(huán)“for(k=1;k<3;k++)”后面直接跟了空語句“;”,所以在循環(huán)內(nèi)部什么操作也不做,跳出外層循環(huán)后執(zhí)行printf語句,輸出一個“*”。故本題答案為C選項。

2.A考查簡單的C程序。由題可知,程序中輸入name的值為Lili,所以輸出的必定是Lili,答案選擇A。

3.A解析:本題考查帶參數(shù)的宏的定義及相關(guān)運算:(x)>(y)(x):(y)是x>y時輸出x,否則輸出y,調(diào)用(MAX(a+b,c+d))*100時,(a+b=5)>(c+d=4),所以輸出a+b=5,所以x=5*100。

4.D若G中有一條從Vj到Vi的路徑,則圖的拓?fù)湫蛄兄许旤cVj在頂點Vi之前。設(shè)G(V,E)是一個具有n個頂點的有向圖,V中頂點的序列v1,v2,…,vn稱為一個拓?fù)湫蛄?,?dāng)且僅當(dāng)該頂點滿足下列條件:若在有向圖G中,從頂點vi在vj有一條路徑,則在拓?fù)湫蛄兄许旤cvi必須排在頂點vj之前。

5.B解析:本題考查的是外部變量的應(yīng)用。因為程序的初始inta=4;語句定義了外部變量a,在以后的執(zhí)行過程中,當(dāng)i=0時,調(diào)用f(0)函數(shù),執(zhí)行的語句是else{inta=7;t+=a++;},此處程序中又定義了變量a,所以原來定義的外部變量在此不起作用,得到t=7,返回值語句returnt+a++;處,外部變量a起作用,返回值為7+5=12:當(dāng)i=1時,調(diào)用f(1)函數(shù),執(zhí)行的是語句else{inta=6:t+=a++;},此處程序中又定義了變量a,所以原來定義的外部變量在此不起作用,得到t=6,返回值語句

6.D

7.B

8.A解析:本題考核模塊獨立性的評價。評價模塊獨立性的主要標(biāo)準(zhǔn)有兩個;一是模塊之間的耦合,它表明兩個模塊之間互相獨立的程度,也可以說是兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度(所以,本題的正確答案為選項A);二是模塊內(nèi)部之間的關(guān)系是否緊密,稱為內(nèi)聚。一般來說,要求模塊之間的耦合盡可能地弱,即模塊盡可能獨立,而要求模塊的內(nèi)聚程度盡量地高。

9.C程序首先定義整型變量a和b,a的初值為123456。接著通過while循環(huán),判斷a的值是否為0,若不為0,則執(zhí)行循環(huán)體。每次循環(huán)將a當(dāng)前值的個位數(shù)字(a%10)賦給b,a自身除以10。再通過switch語句判斷b的值執(zhí)行對應(yīng)分支語句。所以對應(yīng)a的每個個位數(shù),b的取值為6,5,4,3,2,1。當(dāng)b取值為6時,執(zhí)行default,輸出6,接著繼續(xù)執(zhí)行case1,通過break退出switch。執(zhí)行下一次循環(huán),當(dāng)b取值為5時,執(zhí)行case5輸出5。執(zhí)行下一次循環(huán),當(dāng)b取值為4時,執(zhí)行case4輸出4,繼續(xù)執(zhí)行case5輸出5。接著執(zhí)行下一次循環(huán),當(dāng)b取值為3時,執(zhí)行case3輸出3,執(zhí)行case4輸出4,執(zhí)行case5輸出5;當(dāng)b取值為2時,執(zhí)行case2輸出2,通過break退出switch;當(dāng)b取值為1時,執(zhí)行break,此時a的取值為0,循環(huán)終止。綜上,程序輸出結(jié)果為:65453452。本題答案為C選項。

10.C

11.D\n通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用、退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。軟件生命周期的主要活動階段為:可行性研究和計劃制定。確定待開發(fā)軟件系統(tǒng)的開發(fā)目標(biāo)和總的要求,給出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成開發(fā)任務(wù)的實施計劃。

\n需求分析。對待開發(fā)軟件提出的需求進行分析并給出詳細(xì)定義,即準(zhǔn)確地確定軟件系統(tǒng)的功能。編寫軟件規(guī)格說明書及初步的用戶手冊,提交評審。

\n軟件設(shè)計。系統(tǒng)設(shè)計人員和程序設(shè)計人員應(yīng)該在反復(fù)理解軟件需求的基礎(chǔ)上,給出軟件的結(jié)構(gòu)、模塊的劃分、功能的分配以及處理流程。

\n軟件實現(xiàn)。把軟件設(shè)計轉(zhuǎn)換成計算機可以接受的程序代碼。即完成源程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。

\n軟件測試。在設(shè)計測試用例的基礎(chǔ)上,檢驗軟件的各個組成部分。編寫測試分析報告。

\n運行和維護。將已交付的軟件投入運行,并在運行使用中不斷地維護,根據(jù)新提出的需求進行必要而且可能的擴充和刪改。

\n本題答案是D)。

\n

12.A

13.A

14.B在Internet中,把域名翻譯為IP地址的軟件稱為域名系統(tǒng)DNS,運行域名系統(tǒng)的主機稱為域名服務(wù)器。域名服務(wù)器的主要功能是實現(xiàn)入網(wǎng)主機名字和IP地址的轉(zhuǎn)換。

15.D

16.Dc語言規(guī)定,一個字符常量代表ASCII碼字符集里的一個字符,在群序中用單引號括起來,以便區(qū)分。'\v'表示的是豎向跳格:'kx2a'表示的是兩位十六迸制數(shù);'a'表示的是字符a對應(yīng)的ASCII碼值。"\0"用雙引號故不正確。

17.A解析:順序存儲結(jié)構(gòu)就是用一組地址連續(xù)的存儲單元依次存儲該線性表中的各個元素,鏈?zhǔn)酱鎯Y(jié)構(gòu)中各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致,所以選項A是正確的。兩者都可以存儲線性的、有序的邏輯結(jié)構(gòu),所以選項B、C不正確。順序結(jié)構(gòu)使用的是連續(xù)物理空間,鏈?zhǔn)浇Y(jié)構(gòu)可以使用零散的物理空間存儲,鏈?zhǔn)浇Y(jié)構(gòu)更靈活,不存在誰節(jié)約空間的說法,所以選項D不正確。

18.C

19.C在C語言中null等價于數(shù)字0。

20.B

21.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。

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

23.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。

24.s[j++]=s[i]s[j++]=s[i]解析:循環(huán)開始后如果數(shù)組s中儲存值與字符c相同,則i++直接跳過當(dāng)前值;如果不相同,則將當(dāng)前值賦予數(shù)組指定位置,并通過j++將下標(biāo)加1,指向下一元素要存儲的位置。

25.空間復(fù)雜度空間復(fù)雜度解析:算法執(zhí)行時所需要的存儲空間,稱為算法的空間復(fù)雜度。

26.關(guān)系關(guān)系解析:關(guān)系模型用;維表表示,則每個;維表代表一種關(guān)系。

27.6

28.44解析:本題考查宏定義。預(yù)編譯時,首先將M的宏定義帶入K,得到N+1+1*N+1/2;再將N的宏定義帶人,得到2+1+1*2+1/2=3+2+0=5,所以循環(huán)4次。

29.1515解析:s=f(aa,5)=f(aa,4)+a[4]=f(aa,3)+a[3]+a[4]=f(aa,2)+a[2]+a[3]+a[4]

=f(aa,1)+a[1]+a[2]+a[3]|a[4]=0+a[0]+a[1]+a[2]+a[3]+a[4]=15。

30.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é)束,程序運行后的輸出結(jié)果是3。

31.封裝封裝

32.外模式外模式解析:數(shù)據(jù)庫系統(tǒng)的三級模式分別是內(nèi)模式、概念模式和外模式。其中,物理模式給出了數(shù)據(jù)庫的物理存儲結(jié)構(gòu)和存取方法;概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述;外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

33.00解析:解答本題需要注意表達(dá)式“k=0”,它是賦值表達(dá)式而不是關(guān)系表達(dá)式,不論k為何值,表達(dá)式k=0總會使k為0,所以不能進入循環(huán)。

34.x+=1;

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

36.->->解析:結(jié)構(gòu)變量abc有成員a,并有指針pabc指向結(jié)構(gòu)變量abc,則引用變量abc成員a的形式有abc.a和p_abc->a。

37.靜態(tài)靜態(tài)解析:靜態(tài)測試包括代碼檢查、靜態(tài)結(jié)構(gòu)分析,代碼質(zhì)量度量等。靜態(tài)測試不實際運行軟件。

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

39.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的管理機構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務(wù)等。

40.驅(qū)動模塊驅(qū)動模塊解析:由于模塊通常不是獨立的程序,自己不能運行,而需要其他模塊調(diào)用或驅(qū)動,同時被測試模塊還要去調(diào)用其他模塊,前者稱為驅(qū)動模塊,后者稱為承接模塊。其中驅(qū)動模塊的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果;承接模塊的作用是代替被測模塊,調(diào)用其他模塊。

41.A

42.A解析:在C語言中,數(shù)組元素是從0開始的。指針變量p指向數(shù)組的首地址,(p+2)就會指向數(shù)組中的第3個元素。題目中要求輸出的是元素的值。

43.B解析:gete()函數(shù)是從文件指針指定的文件中讀入一個字符,并把它作為函數(shù)值返回;getchar()函數(shù)是從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個字符,getc()和getehar()都不能讀字符串(可以與循環(huán)語句結(jié)合輸入一個字符串);seanf()函數(shù)不能輸入帶空格的字符串;gets()函數(shù)可以從鍵盤讀入空格字符。

44.A

45.A解析:本題考查默認(rèn)函數(shù)的函數(shù)值的類型。在函數(shù)定義時,由于函數(shù)沒有說明其類型,系統(tǒng)默認(rèn)一律自動按整型處理,因此,函數(shù)的類型為int類型。

46.B解析:本題中定義了一個二維數(shù)組b并初始化,定義了一個變量t并賦初值1。接著通過一個二重循環(huán)將若干個元素的值加到變量t中。循環(huán)的執(zhí)行步驟是:外層循環(huán)變量i=0時,內(nèi)層循環(huán)變量j=i,執(zhí)行語句“t=t+b[i][b][j][j]]”,相當(dāng)于t=t+b[0][b][0][0]],由于b[0][0]的值為0,得到t的值為1;依次類推,循環(huán)共執(zhí)行了3次,最后輸出t的值為4。所以,4個選項中B為所選。

47.C解析:對字符型一維數(shù)組在定義時初始化,既可以使用初始化列表,也可以使用字符串常量。不過由于字符串常量會自動在結(jié)尾添加\'\\0\',字符做結(jié)束標(biāo)志,所以用字符串常量的初始化列表項個數(shù)是字符串的長度加1。因此題目中的chara[]='xyz';等價于chara[]={\'x\',\'y\',\'z\',\'\\0\');,所以a數(shù)組長度大于b數(shù)組長度,應(yīng)該選C。

48.C解析:軟件測試的目標(biāo)是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯誤,給出程序可靠性的鑒定。它有3個方面的重要特征,即測試的挑剔性、完全測試的不可能性及測試的經(jīng)濟性。其中沒有測試的可靠性這一說法。注意:軟件測試與軟件調(diào)試的概念,以及相應(yīng)的方法。

49.B解析:題目中定義了一個指針變量作為函數(shù)f()的參數(shù)。主函數(shù)main()中調(diào)用f()函數(shù),當(dāng)i=0時,執(zhí)行語句“(*q)++;”,此處*q就代表數(shù)組a[0]的地址,也即將q進行加1操作;當(dāng)i=1時,q仍指向數(shù)組元素a[0]的地址,因為在函數(shù)f()中并未對指針變量q做任何變動,即*q仍代表數(shù)組元素a[0]的值,所以此次(*q)++即為2+1,a[0]的值變?yōu)?;直到i=4時,執(zhí)行(*q)++后a[0]的值變?yōu)?,最后輸出數(shù)組a的結(jié)果為6、2、3、4、5。

50.A解析:關(guān)系的并運算是指,由結(jié)構(gòu)相同的兩個關(guān)系合并,形成一個新的關(guān)系,其中包含兩個關(guān)系中的所有元組。

51.D解析:本題考核的知識點是用戶的標(biāo)識符。在C語言中,合法的標(biāo)識符由字母、數(shù)字和下劃線組成,并且第一個字符必須為字母或者下劃線,如:acd,d_ad、_adf124,_124等都是合法的標(biāo)識符號.而2asdf、_sd/=都不是合法的標(biāo)識符.在C語言中大寫字母和小寫字母被認(rèn)為是兩個不同的字符,如:ACD和acd是兩個不同的標(biāo)識符號。選項D中用下劃線作為第一個字符,這是不合法的,故選項D不正確,所以,4個選項中選項D符合題意。

52.C解析:根據(jù)二叉樹的性質(zhì)1:二叉樹第k(k>1)層上,最多有2k-1個結(jié)點。于是第8層的結(jié)點數(shù)最多是27=128。

53.D解析:20世紀(jì)70年代以來,提出了許多軟件設(shè)計方法,主要有①逐步求精:對復(fù)雜的問題,應(yīng)設(shè)計一些子目標(biāo)作過渡,逐步細(xì)化;②自頂向下:程序設(shè)計時應(yīng)先考慮總體,后考慮細(xì)節(jié);先考慮全局目標(biāo),后考慮局部目標(biāo)。不要一開始就過多追求眾多的細(xì)節(jié),先從最上層總目標(biāo)開始設(shè)計,逐步使問題具體化;⑧模塊化:一個復(fù)雜問題,肯定是由若干稍簡單的問題構(gòu)成。模塊化是把程序要解決的總目標(biāo)分解為分目標(biāo),再進一步分解為具體的小目標(biāo),把每個小目標(biāo)稱為一個模塊,而可復(fù)用是面向?qū)ο蟪绦蛟O(shè)計的一個優(yōu)點。

54.D解析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護3個階段。本題中,詳細(xì)設(shè)計、軟件編碼和軟件測試都屬于軟件開發(fā)階段;維護是軟件生命周期的最后一個階段,也是持續(xù)時間最長,花費代價最大的一個階段,軟件工程學(xué)的一個目的就是提高軟件的可維護性,降低維護的代價。

55.A解析:數(shù)據(jù)流圖包括4個方面,即加工(轉(zhuǎn)換)(輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出)、數(shù)據(jù)流(沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名)、存儲文件(數(shù)據(jù)源)(表示處理過程中存放各種數(shù)據(jù)的文件)、源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體)。不包括選項中的控制流。

56.D解析:按照結(jié)構(gòu)化設(shè)計方法設(shè)計的程序具有以下特點:(1)程序易于理解、使用和維護,程序員采用結(jié)構(gòu)化編程方法,便于控制、降低程序的復(fù)雜性,因此容易編寫程序,便于驗證程序的正確性。結(jié)構(gòu)化程序清晰易讀,可理解性好,程序員能夠進行逐步求精、程序證明和測試,以確保程序的正確性。程序容易閱讀并被人理解,便于用戶使用和維護。(2)提高了編程工作的效率,降低了軟件開發(fā)成本。由于結(jié)構(gòu)化編程方法能夠把錯誤控制到最低限度,因此能夠減少調(diào)試和查錯時間。結(jié)構(gòu)化是由一些為數(shù)不多的基本結(jié)構(gòu)模塊組成,這些模塊甚至可以由機器自動生成,從而極大地減輕了編程工作量。(3)結(jié)構(gòu)化程序設(shè)計選用的每個控制結(jié)構(gòu)只允許有一個入口和一個出口。

57.B解析:本題考查循環(huán)語句的嵌套以及條件的判斷問題。在程序中,內(nèi)層循環(huán)判斷條件為“j<=i”,而j的初值為3,故當(dāng)i的值為1和2時,內(nèi)層循環(huán)體都不會被執(zhí)行。只有當(dāng)i和j都等于3時才會執(zhí)行一次。m的值為55對3取模,計算結(jié)果為1。

58.B解析:根據(jù)題目要求,最后要使輸出的s值為2,在程序中改變。的值語句只有循環(huán)體中的s+=1;語句,而初始9的值為o,顯然要使s的值變?yōu)?,該語句必須執(zhí)行,兩次,即do-while循環(huán)中的循環(huán)體要執(zhí)行兩次,而在do-while中,首先不進行條件而執(zhí)行do后面的循環(huán)體語句,然后再判斷while循環(huán)條件。所以說不管循環(huán)判斷條件是否為真s+=1;語句至少執(zhí)行一次,根據(jù)分析,只需要while后面括號的循環(huán)判斷表達(dá)式的值為真一次且只能為真一次,將四個選項中的內(nèi)容依次代入該程序中不難得到只有n=-3剛好使循環(huán)判斷條件a!=n為真一次。

59.B(27)B)解析:函數(shù)feof的功能是:測試fp所指的文件的位置是否已達(dá)到文件尾,如果達(dá)到文件尾,則函數(shù)返回非0值,否則返回0,表示文件尚未結(jié)束。

60.B解析:在C語言中,數(shù)組的下標(biāo)默認(rèn)為0,因此數(shù)組p的下標(biāo)范圍為:0~7。程序循環(huán)過程為:第1次循環(huán)i=0,執(zhí)行循環(huán),并且i自加,得i=1,因此p[i]為p[1]=12,12%2=0,不執(zhí)行后面的語句;接著進行第2次循環(huán),此時i=1,小于7執(zhí)行循環(huán),并且i自加,得i=2,因此p[i]為p[2]=13,13%2=1,執(zhí)行后面的語句;這樣一直到退出循環(huán)。最后j的值為j=13+15+17=45。

61.D

62.B

63.D在程序設(shè)計中,各模塊間的內(nèi)聚性越強,則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,以有利于提高模塊的獨立性。耦合性與內(nèi)聚性是模塊獨立的兩個定性標(biāo)準(zhǔn),是互相關(guān)聯(lián)的。

64.D解析:在格式輸入中,要求給出的是變量的地址,而D)答案中給出的s[1]是一個值的表達(dá)式。

65.D

66.D

67.D本題考查leon(tp)函數(shù),其功能是:測試所指的文件的位置指針是否已達(dá)到文件尾,如果已達(dá)到文件尾,則函數(shù)返回非0值;否則返回0,表示文件未結(jié)束。

68.A選項A中d0后面的語句只執(zhí)行了-次匣結(jié)束了循環(huán);B選項中條件while(1)永遠(yuǎn)成立,所以是死循F;C選項中n的值為10,而循環(huán)體為空語句,所以while(n)永遠(yuǎn)為真,進入死循環(huán);D選項中for語句第二個表達(dá)式為空,所1以沒有判別條件,進入死循環(huán)。

69.C選項中的四個表達(dá)式執(zhí)行后,m的值都遞增1。選項c)中,表達(dá)式的值是m遞增前的值,為0。選項A)、B)、D)中,表達(dá)式的值都是m遞增后的值,為1。

70.B解析:本題定義了一維數(shù)組a和兩個指針變量。指針變量p的初值為第4個數(shù)組元素的地址,指針變量q的初值為,第6個數(shù)組元素的地址。*p+*q=4+6=10。

71.C在本題中,程序首先定義了一個一維數(shù)組a,賦其初值,并定義一個同類型的指針變量p和一個指向指針的指針變量k,然后讓指針變量p指向數(shù)組的首地址,接著將指針變量p的地址值賦給指向指針的指針變量k。

在第一條輸出語句中,首先我們需要弄清楚*(p++)的作用,它是先調(diào)用指針變量p的值,然后使其自加,輸出效果等價于*p,因此,最后輸出的結(jié)果是數(shù)組中的第一個元素。

在第二條輸出語句中,我們需要弄明白**k的作用,指向指針的指針變量類似于指針變量,如果用**k表示一個數(shù)值,可以確定這條輸出語句的輸出結(jié)果是一個數(shù)值,而非地址,從表達(dá)式k=&p可以看出,k的值是指針變量p的地址值,p的值改變后,k能實時得到改變,那么在第一條輸出語句對p的改變,在第二條輸出語句中得到了體現(xiàn)。因此,**k輸出的是數(shù)組中的第二個元素,即4。

綜合上面的分析,可以知道程序最終的輸出結(jié)果是24。

72.B\n此程序考查帶參數(shù)的宏定義,S(k+j)展開后即4*(k+j)*k+j+1,所以結(jié)果為l43,答案為B。

\n

73.C解析:在關(guān)系模型數(shù)據(jù)庫中,基本結(jié)構(gòu)是二維表,這種二維表稱為關(guān)系。關(guān)系的列稱為屬性,一個具有N個屬性的關(guān)系稱為N元關(guān)系。注意:各種關(guān)系查詢語言與過程性語言和非過程性語言的關(guān)系,過程性語言的特點。

74.C本題先將指針P指向二維數(shù)組ch[2][5],相當(dāng)于p[0]="1234",p[1]="5678";通過雙重for循環(huán),將P中的字符隔一個輸出一個,通過“s=p[i][j]-'0';”語句將所要輸出的字符#換成相應(yīng)的十進制數(shù)。

75.B解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,是負(fù)責(zé)數(shù)據(jù)庫的建立、使用和維護的軟件。數(shù)據(jù)庫管理系統(tǒng)建立在操作系統(tǒng)之上,實施對數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應(yīng)用程序的執(zhí)行,最終都必須通過數(shù)據(jù)庫管理系統(tǒng)。另外,數(shù)據(jù)庫管理系統(tǒng)還承擔(dān)著數(shù)據(jù)庫的安全保護工作,按照數(shù)據(jù)庫管理員所規(guī)定的要求,保證數(shù)據(jù)庫的完整性和安全性。

76.C本題中,程序首先定義了一個結(jié)構(gòu)體,該結(jié)構(gòu)體包含一個整型和一個浮點型成員變量。然后定義了一個函數(shù)f,該函數(shù)無返回類型,函數(shù)的形參是已定義的結(jié)構(gòu)體變量。在該函數(shù)中,首先定義了一個結(jié)構(gòu)體數(shù)組s,并賦了初值,然后試題用結(jié)構(gòu)體數(shù)組中各對應(yīng)成員的值替代形參結(jié)構(gòu)體變量中各成員的值,這里關(guān)鍵的問題還是參數(shù)的傳遞問題,由于結(jié)構(gòu)體成員值的傳遞方式采用的是傳值傳遞,是單向傳遞,即形參值的改變不影響實參的結(jié)果。

在主函數(shù)中,同樣定義了一個結(jié)構(gòu)體數(shù)組s,并賦了初值,然后調(diào)用函數(shù)f,將s[0]作為函數(shù)的參數(shù),輸出s[0]中兩成員的值,此時實參的值并沒有得到改變。因此,最后輸出的結(jié)果是2041,730。

\r\n\r\n\r\n

77.C標(biāo)識符由字母、數(shù)字和下劃線組成。開頭必須是字母或下劃線且區(qū)分大小寫。在C語言中,預(yù)先定義了一些標(biāo)識符,以作專門用途,稱為關(guān)鍵字,標(biāo)識符不能與關(guān)鍵字相同。選項A和D是關(guān)鍵字,選項B是數(shù)字開頭的,所以都不正確。

78.D本題考查"drhile循環(huán)。第一次循環(huán),y=y-1,y=2,循環(huán)條件成立,x=1,X++后值為1,x自加變成2,進入循環(huán),a=a+1=1,判斷if語句條件是否成立,y<x不成立,接著執(zhí)行下一次循環(huán)。第二次循環(huán),x=2,y-1=1,循環(huán)條件成立,進入循環(huán),a=a+1=2,判斷if語句的控制條件是否成立,y<X成立,執(zhí)行break語句,退出循環(huán)。結(jié)果為D。

79.B本題要求選項中的表達(dá)式能實現(xiàn)將n中的數(shù)值保留小數(shù)點后兩位,第三位進行四舍五入運算。

在選項A中,n=(n*100+0.5)/100.0表示先將n后的前兩位小數(shù)變成整數(shù),然后對其第三位小數(shù)進行加0.5操作,這個操作其實是第三位小數(shù)在進行四舍五入運算時只有入,而沒有舍運算。因此,本選項不能實現(xiàn)題目的要求。

在選項B中,m=n*100+0.5,n=m/100.0表示先將n后的前兩位小數(shù)變成整數(shù),然后對第三位小數(shù)進行加0.5操作,并將最后的運算結(jié)果賦值給一個整型變量m,這是數(shù)據(jù)的強制轉(zhuǎn)換,它對小數(shù)部分的處理是直接舍棄,而在對第三位小數(shù)進行加0.5操作時,其實就是對第三位進行四舍五入運算。因此選項能實現(xiàn)題目的要求,是正確的答案。

在選項C中,根據(jù)運算符的優(yōu)先級我們知道,先運算n*100,再運算0.5/100.0,最后將結(jié)果相加,與題目要求相差比較遠(yuǎn)。

在選項D中,n=(n/100+0.5)*100.0表示先除100,這不是對小數(shù)部分進行四舍五入運算,而是對整數(shù)部分進行四舍五入運算,與題目要求不一致。

80.C

81.(1)錯誤:switch(g);

正確:switch(g)

(2)錯誤:case1;case2:return1;

正確:case1:return1;case2:return1;

【解析】由C語言的語法規(guī)則可知,switch語句后面是沒有分號的,因此,“switch(g);”要把后面的分號去掉;在C語言中,case語句后面是冒號而不是分號,因此,“case1;case2:return1;”應(yīng)改為“case1:return1;case2:return1;”。

82.\n\tvoidproc(char*str)\n\n\n\t{\n\n\n\tchar*p=str:\n\n\n\twhile(*p==*)p++;//通過P的移動來達(dá)\n\n\n\t到使P指向第一個不是*號的字符\n\n\n\tfor(;*p!=\0

;p++,str++)//把從第一個\n\n\n\t不是*號的字符放到a中‘\n\n\n\t*str=*P:\n\n\n\t*str=\0

;//最后用\0作為字符串結(jié)束標(biāo)志\n\n\n\t}\n\n\n\t【解析】題目中要求將字符串中的前導(dǎo)*號全部刪除首先將指針p移動到第一個不是*的字符,將指針P之后的字符放入原來的字符串中,并為新的字符串添加結(jié)束符。\n2021-2022年江蘇省蘇州市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下程序段中的變量已正確定義:for(i=0;i<4;i++,i++) for(k=1;k<3;k++); printf(“*”);程序段的運行結(jié)果是()。

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

2.有以下程序段:charname[20】;intnum;scanf("name=%Snum=%d",name,&num);當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Lilimum=1001<回車>后,name的值為()。A.LiliB.name=LiliC.Lilinum=D.name=Lilinum=1001

3.下列程序的運行結(jié)果為()。

#deflneMAX(x,y)(x)>(y)(x):(y)

main()

{inta=2,b=3,c=1,d=3,t;

printf("%d\n",(MAX(a+b,c+D))*100);

}A.A.500B.5C.4D.400

4.在有向圖G的拓?fù)湫蛄兄?,若頂點Vi在頂點Vj之前,則下列情形不可能出現(xiàn)的是()。

A.G中有弧

B.G中有一條從Vi到Vj的路徑

C.G中沒有弧

D.G中有一條從Vj到Vi的路徑

5.有以下程序:#include<string.h>inta=4;intf(intn){intt=0;staticinta=5;if(n%2){inta=6;t++=a++;}else{inta=7;t+=a++;}returnt+a++;}main(){ints=a,i=0;for(;i<2;i++)s+=f(i);printf("%d\n",s);}程序運行后的輸出結(jié)果是()。

A.24B.28C.32D.36

6.

7.

8.兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度稱為()。

A.耦合度

B.內(nèi)聚度

C.復(fù)雜度

D.數(shù)據(jù)傳輸特性

9.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。

A.654321

B.65432

C.65453452

D.654534521

10.

11.軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。

A.概要設(shè)計B.軟件設(shè)計C.可行性研究和計劃制定D.需求分析

12.設(shè)二維數(shù)組A[1...m,1...n]按行存儲在數(shù)組B中,則二維數(shù)組元素A[i,j]在一維數(shù)組B中的下標(biāo)為()。A.A.n*(i-1)+jB.n*(i-1)+j-1C.i*(j-1)D.j*m+i-1

13.若用一個大小為6的數(shù)組來實現(xiàn)循環(huán)隊列,且當(dāng)前rear和front的值分別為0和3,當(dāng)從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為()

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

14.在Internet中,域名服務(wù)器的主要功能是實現(xiàn)()的轉(zhuǎn)換。

A.IP地址到域名(主機名字)B.域名到IP地址C.主機IP地址和路由器IP地址之間D.路由器IP地址之問

15.if語句的基本形式是:if(表達(dá)式)語句,以下關(guān)于“表達(dá)式”值的敘述中正確的是A.A.必須是邏輯值

B.必須是整數(shù)值

C.必須是正數(shù)

D.可以是任意合法的數(shù)值

16.下列選項中不是字符常量的是()。

A.'\v'B.'\x2a'C.'a'D."\0"

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

A.順序存儲結(jié)構(gòu)的存儲一定是連續(xù)的,鏈?zhǔn)酱鎯Y(jié)構(gòu)的存儲空間不一定是連續(xù)的

B.順序存儲結(jié)構(gòu)只針對線性結(jié)構(gòu),鏈?zhǔn)酱鎯Y(jié)構(gòu)只針對非線性結(jié)構(gòu)

C.順序存儲結(jié)構(gòu)能存儲有序表,鏈?zhǔn)酱鎯Y(jié)構(gòu)不能存儲有序表

D.鏈?zhǔn)酱鎯Y(jié)構(gòu)比順序存儲結(jié)構(gòu)節(jié)省存儲空間

18.

19.設(shè)變量P是指針變量,語句P=NULL;是給指針變量賦NULL值,它等價于()。A.A.p="";

B.p="0";

C.p=0;

D.p="";

20.采用開放定址法處理散列表的沖突時,其平均查找長度()

A.高于二分查找B.高于鏈接法處理沖突C.低于二分查找D.低于鏈接法處理沖突

二、2.填空題(20題)21.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。

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

23.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。

24.下列程序的功能是將字符串s中所有的字符c刪除。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')______;

s[j]='\O';

puts(s);

}

25.算法執(zhí)行過程中所需要的存儲空間稱為算法的______。

26.在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

27.執(zhí)行以下“for(i=1;i++<=4;i++);”語句后,變量i的值是()。

28.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{inti;

for(i=1;i<K;i++){......}

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

intf(inta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

}

main()

{intaa[5]=(1,2,3,4,5),s;

s=f(aa,5);printf("%d\n",s);

}

30.有以下程序:

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);

}

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

31.在面向?qū)ο蠓椒ㄖ?,信息隱蔽是通過對象的______性來實現(xiàn)的。

32.數(shù)據(jù)庫系統(tǒng)其內(nèi)部分為三級模式,即概念模式、內(nèi)模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

33.下列循環(huán)的循環(huán)次數(shù)是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

34.語句:x++;、++x;、x=x+1;、x=1+x;,執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句(不得與列舉的相同)【】。

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

36.設(shè)有定義:

struct{inta;floatb;charc;}abc;*p_abc=&abc;

則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc【】a。

37.對于軟件測試,從是否需要執(zhí)行被測軟件的角度,可以分為靜態(tài)測試和動態(tài)測試。代碼檢查屬于______測試。

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

#include<stdio.h>

intt(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);

primf("%d,%d%d\n",c,D);

}

39.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

40.在進行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。

三、1.選擇題(20題)41.如果一個算法顯式地調(diào)用自己則稱為()

A.直接遞歸B.自用遞歸C.間接遞歸D.外用遞歸

42.下面程序的輸出結(jié)果是main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}

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

43.若要求從鍵盤讀人含有空格字符的字符串,應(yīng)該使用函數(shù)()。

A.getc()B.gets()C.getchar()D.scanf()

44.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'3'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n");}從第一列開始輸入數(shù)據(jù)(<CR>代表…個回車符):3845<CR>,則狴序輸出結(jié)果為()。

A.77889B.77868C.776810D.7.78866e+007

45.有下列函數(shù)定義:

fun(floath)

{printf("%f,%f\n”,h,h*h);}

該函數(shù)的類型是()。

A.int類型B.float類型C.void類型D.函數(shù)無類型說明,定義有錯

46.以下程序的輸出結(jié)果是main(){intb[3][3]={0,1,2,O,l,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t=t+b[i][b[j][j]];printf("%d\n",t);}

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

47.已有定義:chara[]="xyz",b[]={'x','y','z'};,以下敘述中正確的是()。

A.數(shù)組a和b的長度相同B.a數(shù)組長度小于b數(shù)組長度C.a數(shù)組長度大于b數(shù)組長度D.以述說法都不對

48.下列敘述中,不屬于測試的特征的是

A.測試的挑剔性B.完全測試的不可能性C.測試的可靠性D.測試的經(jīng)濟性

49.有以下程序:voidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(A);for(i=0;i<5;i++)printf("%d,",a[i]);}程序運行后的輸出結(jié)果是()。

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

50.對關(guān)系S和只進行集合運算,結(jié)果中既包含S中的所有元組也包含只中的所有元組,這樣的集合運算稱為()。

A.并運算B.交運算C.差運算D.積運算

51.下列選項中,不能用作標(biāo)識符的是A._1234_B._1_2C.int_2_D.2_int_

52.在一棵二叉樹上第8層的結(jié)點數(shù)最多是_______。

A.8B.16C.128D.256

53.下列選項中不屬于結(jié)構(gòu)化程序設(shè)計方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復(fù)用

54.軟件生命周期中花費費用最多的階段是

A.詳細(xì)設(shè)計B.軟件編碼C.軟件測試D.軟件維護

55.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()

A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭

56.結(jié)構(gòu)化程序設(shè)計的主要特點是______。

A.模塊化B.每個控制結(jié)構(gòu)具有封裝性C.每個控制結(jié)構(gòu)具有獨立性D.每個控制結(jié)構(gòu)只有一個入口和一個出口

57.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf("%d\n",m);}程序的運行結(jié)果是

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

58.有以下程序main(){ints=0,a=1,n;seanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的輸出值為2,則應(yīng)該從鍵盤給n輸入的值是

A.-1B.-3C.-5D.0

59.設(shè)fp為指向某二進制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為______。A.EOFB.非0值C.0D.NULL

60.下列程序的輸出結(jié)果是()。main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%d\n",j);}

A.42B.45C.56D.60

四、選擇題(20題)61.

62.

63.為了提高軟件的獨立性,模塊之間最好是()。

A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合

64.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是

A.sets(&s[0]);

B.scarf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

65.(68)下列有關(guān)數(shù)據(jù)庫的描述,正確的是______。

A.數(shù)據(jù)庫是一個DBF文件

B.數(shù)據(jù)庫是一個關(guān)系

C.數(shù)據(jù)庫是一組文件

D.數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合

66.

67.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。

A.EOFB.-lC.非零值D.0

68.以下不構(gòu)成無限循環(huán)的語句或語句組是()。

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

A.++mB.m+=1C.m++D.m+1

70.有以下程序:main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;printf("%d\n",*p+*q);}

A.16B.10C.8D.6

71.有下列程序

main()

{

inta[5]={2,4,6,8,10},*p,**k;

p=a;

k=&p;

printf("%d",*(p++));

printf("%d\n",**k);

}

運行該程序,其輸出結(jié)果是

A.4B.22

C.24D.46

72.有以下程序:

#include<stdio.h>

#defineS(x)4*(x)*x+1

main()

{intk=5,j=2;

printf("%d\n",S(k+j));

}

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

A.197B.143C.33D.28

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

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

74.下述程序的輸出結(jié)果是()。

#include<stdio.h>

main

{charch[2][5]-{”1234”,”5678”},*p[2];

inti,j,s=0;

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

p[i]=ch[i];

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

{s=p[i][j]一'0';

printf("%d",s);}

}A.A.6357B.6135C.1357D.691357

75.數(shù)據(jù)庫系統(tǒng)的核心是()。

A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員

76.有以下程序

#include<string.h>

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{1047,530},{1048,531}};

p.num=s[1].num;p.TotalScore=s[1].TotalScore;

}

main()

{structSTUs[2]={{2041,730},{2042,731}};

f(s[0]);

printf("%d,%3.0f\n",s[0].num,s[0].TotalScore);

}

程序的運行結(jié)果是

A.1047,530

B.1048,531

C.2041,730

D.2042,731

77.以下選項中,能用做用戶標(biāo)識符的是()。

A.voidB.8_8C._0_D.unsigned

78.下列程序的運行結(jié)果是()。main{intx=1,y=3,a=0;while(x++!=(y-=l)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}A.2,3,2B.2,3,1C.1,3,3D.3,1,2

79.設(shè)變量n為float類型,m為int類型,則以下能實現(xiàn)將n中的數(shù)值保留小數(shù)點后兩位,第三位進行四舍五入運算的表達(dá)式是()。

A.n=(n*100+0.5)/100.0

B.m=n*100+0.5,n=m/100.0

C.n=n*100+0.5/100.0

D.n=(n/100+0.5)*100.0

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:用遞歸算法計算斐波拉契級數(shù)列中第n項的值。從第一項起,斐波拉契級數(shù)序列為1,1,2,3,5,8,13,21,…例如,若給n輸入8,該項的斐波拉契級數(shù)值為21。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc,它的功能是:將字符串中的前導(dǎo)*號全部刪除,中間和后面的*號不刪除。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是a*bc*def*g****。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h=:{>#include<conio.h>woidproc(char*str){}voidmaincharstr[81];printf("Enterastring:\n");gets(str);proc(str):printf("Thestringafterdeleted:\n");puts(str);}

參考答案

1.C因為內(nèi)層循環(huán)“for(k=1;k<3;k++)”后面直接跟了空語句“;”,所以在循環(huán)內(nèi)部什么操作也不做,跳出外層循環(huán)后執(zhí)行printf語句,輸出一個“*”。故本題答案為C選項。

2.A考查簡單的C程序。由題可知,程序中輸入name的值為Lili,所以輸出的必定是Lili,答案選擇A。

3.A解析:本題考查帶參數(shù)的宏的定義及相關(guān)運算:(x)>(y)(x):(y)是x>y時輸出x,否則輸出y,調(diào)用(MAX(a+b,c+d))*100時,(a+b=5)>(c+d=4),所以輸出a+b=5,所以x=5*100。

4.D若G中有一條從Vj到Vi的路徑,則圖的拓?fù)湫蛄兄许旤cVj在頂點Vi之前。設(shè)G(V,E)是一個具有n個頂點的有向圖,V中頂點的序列v1,v2,…,vn稱為一個拓?fù)湫蛄校?dāng)且僅當(dāng)該頂點滿足下列條件:若在有向圖G中,從頂點vi在vj有一條路徑,則在拓?fù)湫蛄兄许旤cvi必須排在頂點vj之前。

5.B解析:本題考查的是外部變量的應(yīng)用。因為程序的初始inta=4;語句定義了外部變量a,在以后的執(zhí)行過程中,當(dāng)i=0時,調(diào)用f(0)函數(shù),執(zhí)行的語句是else{inta=7;t+=a++;},此處程序中又定義了變量a,所以原來定義的外部變量在此不起作用,得到t=7,返回值語句returnt+a++;處,外部變量a起作用,返回值為7+5=12:當(dāng)i=1時,調(diào)用f(1)函數(shù),執(zhí)行的是語句else{inta=6:t+=a++;},此處程序中又定義了變量a,所以原來定義的外部變量在此不起作用,得到t=6,返回值語句

6.D

7.B

8.A解析:本題考核模塊獨立性的評價。評價模塊獨立性的主要標(biāo)準(zhǔn)有兩個;一是模塊之間的耦合,它表明兩個模塊之間互相獨立的程度,也可以說是兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度(所以,本題的正確答案為選項A);二是模塊內(nèi)部之間的關(guān)系是否緊密,稱為內(nèi)聚。一般來說,要求模塊之間的耦合盡可能地弱,即模塊盡可能獨立,而要求模塊的內(nèi)聚程度盡量地高。

9.C程序首先定義整型變量a和b,a的初值為123456。接著通過while循環(huán),判斷a的值是否為0,若不為0,則執(zhí)行循環(huán)體。每次循環(huán)將a當(dāng)前值的個位數(shù)字(a%10)賦給b,a自身除以10。再通過switch語句判斷b的值執(zhí)行對應(yīng)分支語句。所以對應(yīng)a的每個個位數(shù),b的取值為6,5,4,3,2,1。當(dāng)b取值為6時,執(zhí)行default,輸出6,接著繼續(xù)執(zhí)行case1

溫馨提示

  • 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

提交評論