2021-2022年福建省廈門市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第1頁
2021-2022年福建省廈門市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第2頁
2021-2022年福建省廈門市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第3頁
2021-2022年福建省廈門市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第4頁
2021-2022年福建省廈門市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021-2022年福建省廈門市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.以下程序中函數(shù)sort的功能是對數(shù)組a中的數(shù)據(jù)進(jìn)行由大到小的排序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[]={1,2,3,4,5,6,7,8,9,10},i;son(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.10,9,8,7,6,5,4,3,2,1,

C.1,2,3;8,7,6,5,4,9,10,

D.1,2,10,9,8,7,6,5,4,3,

3.檢查軟件產(chǎn)品是否符合需求定義的過程稱為______。

A.確認(rèn)測試B.集成測試C.驗(yàn)證測試D.驗(yàn)收測試

4.對初始狀態(tài)為遞增序列的數(shù)組按遞增順序排序,最省時(shí)間的是插入排序算法,最費(fèi)時(shí)間的算法是()

A.堆排序B.快速排序C.插入排序D.歸并排序

5.已知二叉樹后序遍歷序列是dabeC,中序遍歷序列是debaC,它的前序遍歷序列是()。

A.aChedB.deCabC.deabeD.Cedba

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

intf1(intx,inty){returnx>y?x:y;}

intf2(intx,inty){returnx>y?y:x;}

main()

{inta=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,B),f1(c,D));

f=f1(f2(a,B),f2(c,D));

g=a+b+C+d-e-f;

phntf("%d,%d,%d\n",e,f,g);

}

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

7.以下定義語句中正確的是

A.inta=b=0;

B.charA=65+1,b='b';

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

D.doublea=0.0;b=1.1;

8.下列程序的輸出結(jié)果是()。main(){inta=4,b=5,c;if(a<B){c=a*b;printf("%d,%d,%d\n",b,a,C);}else{c=b/a;printf("%d,%d,%d\n",b,a,C);}}

A.4,5,12B.20C.5,4,20D.12

9.以下程序的輸出結(jié)果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020

10.下列敘述中錯(cuò)誤的是()。

A.C語言程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行過程中進(jìn)行的

B.預(yù)處理命令行的最后不能以分號表示結(jié)束

C.“#defmeMAX”是合法的宏定義命令行

D.在程序中,凡是以“#”開始的語句行都是預(yù)處理命令行

11.若聲明一個(gè)浮點(diǎn)數(shù)數(shù)組如下:froataverage[]=newfloat[30];假設(shè)該數(shù)組的內(nèi)存起始位置為200,average[15]的內(nèi)存地址是()。A.A.214B.215C.260D.256

12.設(shè)a,b,c,d,m和n均為int型變量,且a=5,b=6,c=7,d=m=2,n=2,則邏輯表達(dá)式(m=a>b)&&(n=c>d)運(yùn)算后,n的值為()

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

13.下面程序運(yùn)行的結(jié)果是______。main(){intx,y,z;x=0;y=z=-1;x+=-z---y;printf("x=%d\n",x);}

A.x=4B.x=0C.x=2D.x=3

14.下面關(guān)于編譯預(yù)處理的命令行中,正確的是()。

A.#defineintINT

B.##defineeps0.001

C.##DEFINETRUE

D.#defineE2.88

15.sizeof(float)是()。

A.一種函數(shù)調(diào)用B.一種函數(shù)定義C.一個(gè)浮點(diǎn)表達(dá)式D.一個(gè)整型表達(dá)式

16.

17.

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

#include<stdio.h>

main

{inta[2][3]={{1,2,3),{4,5,6)),(*p)[3],i;

p=a;

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

{if(i<2)

p[1][i]=p[1][i]-1;

else

p[1][i]=1;

}

printf("%d\n",a[o][1]+a[1][1]+a[1][2]);

}

A.8B.7C.12D.9

18.以下函數(shù)不能用于向文件中寫入數(shù)據(jù)的是()。

A.hellB.fwriteC.fputcD.fprintf

19.在進(jìn)行單元測試時(shí),常用的方法是

A.采用白盒測試,輔之以黑盒測試B.采用黑盒測試,輔之以白盒測試C.只使用白盒測試D.只使用黑盒測試

20.以下不屬于C語言整數(shù)的是()。

A.12fB.25uC.-32D.+20L

二、2.填空題(20題)21.C語言用于結(jié)構(gòu)化程序設(shè)計(jì)的3種基本結(jié)構(gòu)是______、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

22.下面程序的功能是:將字符數(shù)組a中下標(biāo)值為偶數(shù)的元素從小到大排列,其他元素不變。請?zhí)羁铡?/p>

#include<stdio.h>

#include<string.h>

main()

{chara[]="clanguage",t;

inti,j,k;

k=strlen(a);

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

for(j=i+2;j<=k;j+=2;)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;}

puts(a);printf("\n");

}

23.以下程序由終端鍵盤輸入一個(gè)文件名,然后把從終端鍵盤輸入的字符依次存放到該文件中,用#作為結(jié)束輸入的標(biāo)志,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenam\n");

gets(fname);

if((fp=【】==NULL)

{printf("Cannotopen\n");exit(0);}

printf("Enterdata\n");

while(ch=getchar()!='#')

fputc(【】,fp);

fclose(fp);

}

24.有以下程序#include<stdio.h>typedefstruct{intnum;doubles;}REC;voidfunl(REC*x){x->num=23;x->s=88.5;}voidmain(){RECa={16,90.0};fun1(&A);printf("%d\n",a.num);}程序運(yùn)行后的輸出結(jié)果是()。

25.長度為n的順序存儲線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動元素的平均個(gè)數(shù)為【】。

26.排序是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。

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

#include<stdio.h>

longfunc(intx)

{longp;

if(x==0||x==1)

return(1);

p=x*func(x-1);

return(p);

}

main()

{printf("%d\n",func(4));

}

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

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptr1=a,*ptr2=b;

intk;

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

if(*(ptr1+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

29.數(shù)據(jù)獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(shù)據(jù)的存儲結(jié)構(gòu)改變時(shí),其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為【】。

30.下面定義的結(jié)構(gòu)體類型包含3個(gè)成員,其中成員變量x用來存入整型數(shù)據(jù),成員變量y用來存入實(shí)型數(shù)據(jù),成員變量next是指向自身結(jié)構(gòu)體的指針。請將定義補(bǔ)充完整。

structstu

{intx;

【】

【】next;}

31.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。

32.數(shù)據(jù)庫系統(tǒng)的主要特點(diǎn)為數(shù)據(jù)集成性、數(shù)據(jù)的高_(dá)_____和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理和控制。

33.在計(jì)算機(jī)軟件系統(tǒng)的體系結(jié)構(gòu)中,數(shù)據(jù)庫管理系統(tǒng)位于用戶和【】之間。

34.【】(黑箱或白箱)測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征。

35.下列程序的功能是把從終端讀入的文本(用@作為文本結(jié)束標(biāo)志)輸出到一個(gè)名為bi.dat的新文件中。請?zhí)羁铡?/p>

#include"stdio.h"

FILE*fp;

{charch;

if((fp=fopen("bi.dat","w"))==NULL)exit(0);

while(______)fputc(ch,fp);

______;

}

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

#inciude<stdio.h>

main()

{chars[]="ABCabc";

s[5]='\0';

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

}

37.一個(gè)類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個(gè)方法提高了軟件的【】。

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

#include<stdio.h>

main()

{inta=1,b=7;

do{

b=b/2;a+=b;

}while(b>1);

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

}

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

#include<stdio.h>

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf("%s\n",p);

40.棧的基本運(yùn)算有三種:入棧、退棧和【】。

三、1.選擇題(20題)41.關(guān)系數(shù)據(jù)庫的數(shù)據(jù)及更新操作必須遵循______等完整性規(guī)則。

A.實(shí)體完整性和參照完整性

B.參照完整性和用戶定義的完整性

C.實(shí)體完整性和用戶定義的完整性

D.實(shí)體完整性、參照完整性和用戶定義的完整性

42.下列程序的運(yùn)行結(jié)果是#include"stdio.h"main(){intx=-9,y=5,z=8;if(x<y)if(y<0)z=0;elsez+=1;printf("%d\n",z);}

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

43.若要“為讀/寫建立―個(gè)新的文本文件”,在fopen函數(shù)中應(yīng)使用的文件方式是()

A.wB.wbC.w+D.wb+

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

#include<stdio.h>

f(intA)

{intb=0;

staticintc=4;

a=c++;b++;

retum(A);

}

main()

{inta==2,i,c;

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

C=f(a++);

printf("%dhn",C);

}

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

45.下述程序的輸出結(jié)果是#include<stdio.h>voidmain(){inta[5]={2,4,6,8,10};int*p=a,**q=&p;printf("%d,",*(p++));pfintf("%d",**q);}

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

46.結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是______。

A.程序的規(guī)模B.程序的易讀性C.程序的執(zhí)行效率D.程療的可移植性

47.有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=1.0/x;

elsey=1.0;

printf("%f\n",y);}

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

A.0.000000B.0.250000C.0.500000D.1.000000

48.有以下函數(shù):charfun(char*p){returnP;}該函數(shù)的返回值是()。

A.無確切的值B.形參p中存放的地址值C.一個(gè)臨時(shí)存儲單元的地址D.形參p自身的地址值

49.以理程序的輸出結(jié)果______。main(){charst[20]="he11\O\t\\";printf("%d%d\n",str1en(st),sizeof(st));}

A.99B.520C.1320D.2020

50.若有下列說明和語句,則對結(jié)構(gòu)體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

51.在C語言的函數(shù)中()

A.必須有形參B.形參必須是變量名C.可以有電可以沒有形參D.數(shù)組名不參與形參

52.下列程序的輸出結(jié)果是()。#include<stdio.h>intfun(intx){inta;if(x==0‖x==1)return3;elsea=x-fun(x-2);returna;}voidmain(){printf("%d",fun(7));}

A.2B.8C.9D.5

53.下面程序段的運(yùn)行結(jié)果是char*s="abcde";s+=2;printf("%d",s);

A.cdeB.字符'c'C.字符'c'的地址D.無確定的輸出結(jié)果

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

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

55.若有以下定義和語句:ints[4][5],(*ps)[5];ps=s;則對s數(shù)組元素的正確引用形式是

A.ps+1B.*(ps+3)C.ps[0][2]D.*(ps+1)+3

56.假定w、x、y、m均為int型變量,則執(zhí)行下列的語句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

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

57.軟件開發(fā)的結(jié)構(gòu)化生命周期方法將軟件生命周期劃分成()

A.定義、開發(fā)、運(yùn)行維護(hù)

B.設(shè)計(jì)階段、編程階段、測試階段

C.總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編程調(diào)試

D.需求分析、功能定義、系統(tǒng)設(shè)計(jì)

58.待排序的關(guān)鍵碼序列為15,20,9,30,67,65,45,90,要按關(guān)鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關(guān)鍵碼15被放到第()個(gè)位置。

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

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

A.cedbaB.acbedC.decabD.deabc

60.若有下列定義(設(shè)int類型變量占2個(gè)字節(jié)):floatx=123.4567;則下列語句:printf("x=%5.2f",x);輸出的結(jié)果是()。

A.x=123.46B.123.4567C.x=123.4567D.123.46

四、選擇題(20題)61.有以下程序(說明:字母A的ASCIl碼值是65):

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

A.BTB.YEC.YTD.BY

62.以下敘述中錯(cuò)誤的是()。

A.一個(gè)C程序中可以包含多個(gè)不同名的函數(shù)

B.一個(gè)C程序只能有一個(gè)主函數(shù)

C.C程序在書寫時(shí),有嚴(yán)格的縮進(jìn)要求,否則不能編譯通過

D.C程序的主函數(shù)必須用main作為函數(shù)名

63.有如下程序:

則b的值是()。

A.15B.16C.18D.19

64.應(yīng)用數(shù)據(jù)庫的主要目的是A.A.解決數(shù)據(jù)保密問題

B.解決數(shù)據(jù)完整性問題

C.解決數(shù)據(jù)共享問題

D.解決數(shù)據(jù)量大的問題

65.以下程序的輸出結(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.18

B.19

C.20

D.21

66.結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是

A.程序的規(guī)模B.程序的效率C.程序設(shè)計(jì)語言的先進(jìn)性D.程序易讀性

67.

68.以下不正確的定義語句是

A.inty[5.3]={0,1,3,5,7,9};B.doublex[5]={2.0,4.0,6.0,8.0,10.0};

C.charc1[]={’1’,’2’,’3’,’4’,’5’};D.charc2[]={’\x10’,’\xa’,’\x8’};

69.有以下程序

main()

{inti=10,j=1;

printf("%d,%d\n",i--,++j);

}

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

A.9,2B.10,2

C.9,1D.10,1

70.表達(dá)式:的值是()。

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

71.數(shù)據(jù)庫管理系統(tǒng)中負(fù)責(zé)數(shù)據(jù)模式定義和數(shù)據(jù)的物理存取構(gòu)建的語言是()。

A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言

72.下面結(jié)構(gòu)體的定義語句中,錯(cuò)誤的是()。

A.structord{intx;intY;intZ;};struetorda;

B.structord{intx;inty;intZ;}structorda;

C.structord{intX;intY;intZ;}a;

D.struct{intX;inty;intZ;}a;

73.軟件(程序)調(diào)試的任務(wù)是()。

A.診斷和改正程序中的錯(cuò)誤B.盡可能多地發(fā)現(xiàn)程序中的錯(cuò)誤C.發(fā)現(xiàn)并改正程序中的所有錯(cuò)誤D.確定程序中錯(cuò)誤的性質(zhì)

74.下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)原則的是()。

A.可封裝B.自頂向下C.模塊化D.逐步求精

75.有以下程序:

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

A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday

76.

77.

78.

79.

80.設(shè)有二元關(guān)系R和三元關(guān)系s,下列運(yùn)算合法的是()。

A.R∩SB.R∪SC.R-SD.R×S

五、程序改錯(cuò)題(1題)81.下列給定程序中函數(shù)proc()的功能是計(jì)算1/n!的值。例如,給n輸入3,則輸出0.166667。請修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計(jì)題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun(),該函數(shù)的功能是找出成績最低的學(xué)生記錄,通過形參將其返回主函數(shù)(規(guī)定只有一個(gè)最低分)。已給出函數(shù)的首部,請完成該函數(shù)。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include<stdio.h>2#include<string.h>3#include<conio.h>4#include<stdlib.h>5#defineN106typedefstructss7{charnum[10];8ints;9}STU;10fun(STUa[],STU*s)11{1213}14voidmain()15{16FILE*wf;17STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m18inti;19system("CLS");20printf("*****Theoriginaldata*****\n");21for(i=0;i<N;i++)22printf("No=%sMark=%d\n",a[i],num,a[i].s);23fun(a,&m);24printf("****TheResult****\n");25printf("Thelowest:%s,%d\n",m.num,m.s);26/*************************/27wf=fopen("out.dat'*,"w");28fprintf(wf,"%s,%d",m.num,m.s);29fclose(wf);30/*************************/

參考答案

1.B

2.C解析:在main函數(shù)中調(diào)用sort函數(shù)時(shí),實(shí)參&aa[3]把數(shù)組元素aa[3]的首地址傳給形參數(shù)組a,使aa[3]與a[0]相對應(yīng)。sort函數(shù)將從aa[3]開始的連續(xù)5個(gè)數(shù)進(jìn)行了從大到小的排序,其他數(shù)組元素不變。

3.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認(rèn)測試和系統(tǒng)測試。

(1)單元測試是針對每個(gè)模塊進(jìn)行的測試,它可從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測試用例,多個(gè)模塊可以平行、對立地測試。單元測試主要用于發(fā)現(xiàn)詳細(xì)設(shè)計(jì)和編程時(shí)犯下的錯(cuò)誤。單元測試多采用白盒測試,輔之以黑盒測試。

(2)集成測試是在單元測試的基礎(chǔ)上,根據(jù)模塊結(jié)構(gòu)圖將各個(gè)模塊連接起來,必須精心計(jì)劃,應(yīng)提交集成測試計(jì)劃、集成測試規(guī)格說明和集成測試分析報(bào)告。主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問題。集成測試可以發(fā)現(xiàn)概要設(shè)計(jì)時(shí)犯的錯(cuò)誤。

(3)確認(rèn)測試用于驗(yàn)證軟件的功能和性能及其他特性是否與用戶的要求一致。確認(rèn)測試主要用于發(fā)現(xiàn)需求分析時(shí)犯下的錯(cuò)誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應(yīng)該仔細(xì)設(shè)計(jì)測試用例和測試過程。確認(rèn)測試必須有用戶參加,或以用戶為主,用戶應(yīng)參與設(shè)計(jì)測試用例,通常情況下,主要使用生產(chǎn)中的實(shí)際數(shù)據(jù)進(jìn)行測試,測試數(shù)據(jù)通過用戶接口輸入。

(4)系統(tǒng)測試是將已經(jīng)通過確認(rèn)測試的軟件,作為整個(gè)計(jì)算機(jī)系統(tǒng)的元素與計(jì)算機(jī)硬件、外設(shè)和網(wǎng)絡(luò)等其他因素結(jié)合在一起,進(jìn)行一系列的組裝測試和確認(rèn)測試。系統(tǒng)測試的目的是通過與系統(tǒng)的需求定義做比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合的地方。系統(tǒng)測試可以發(fā)現(xiàn)問題定義時(shí)犯下的錯(cuò)誤。

4.B

5.D二叉樹的遍歷有3種:前序、中序和后序。①前序遍歷訪問根結(jié)點(diǎn),然后按左右順序遍歷子結(jié)點(diǎn);②中序首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;③后序遍歷首先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點(diǎn)。本題根據(jù)后序和中序遍歷的結(jié)果可以得出二叉樹的結(jié)構(gòu),然后再對其進(jìn)行前序遍歷,正確答案選項(xiàng)為D。

6.A解析:根據(jù)函數(shù)intf1(intx,inty){returnx>y?x:y;}和int饅(intx,inty){retumx>y?y:x;}的定義可知,如果x>y成立,則函數(shù)n返回x的值,函數(shù)C返回y的值。所以n(a,B=4,n(c,d)=5,C(a,B=3,f2(c,d)=2,故e=f2(4,5)=4,f=n(3,2)=3,g=4+3+5+2-4-3=7。

7.B解析:本題考查變量的定義方法。如果要一次進(jìn)行多個(gè)變量的定義,則在它們之間要用逗號隔開,因此選項(xiàng)A)和D)錯(cuò)誤。在選項(xiàng)C)中,變量c是一個(gè)浮點(diǎn)型指針,它只能指向一個(gè)浮點(diǎn)型數(shù)據(jù),不能指向指針變量b,故選項(xiàng)C)錯(cuò)誤。

8.C解析:本題考查ifelse語句。第一個(gè)if語句,先判斷條件,發(fā)現(xiàn)a<b成立,執(zhí)行下列的復(fù)合語句,得c=a*b=20,b、a的值不變。

9.B從題目中可知,\O、\t、\\分別為一個(gè)字符,而sizeof是求字節(jié)個(gè)數(shù)的函數(shù),其中包括\O占的字節(jié),strlen函數(shù)是求數(shù)組長度的函數(shù);其以\0結(jié)束,因此strlen的值為5,sizeof的值為20。

10.A預(yù)處理是在程序編譯之前進(jìn)行的,所以A選項(xiàng)錯(cuò)誤。故本題答案為A選項(xiàng)。

11.C

12.C

13.C解析:表達(dá)式“x+=-z---y”等價(jià)于“x=x+(-z-(-(-y)))=0+(1-(-1))=2”。

14.D選項(xiàng)A中,int是關(guān)鍵字,不能作為用戶標(biāo)識符;選項(xiàng)B中,兩個(gè)“#”錯(cuò)誤;選項(xiàng)C中兩個(gè)“#”錯(cuò)誤,另外DEFINE大寫也是錯(cuò)誤的。故本題答案為D選項(xiàng)。

15.D解析:sizeof(float)是c語言內(nèi)部規(guī)定的用于計(jì)算單精度型變量(float)在計(jì)算機(jī)的內(nèi)存中所占用的字節(jié)數(shù)量的函數(shù),返回一個(gè)整數(shù)值。

16.C

17.B

\n本題考查for循環(huán)及if…else語句嵌套,第1次執(zhí)行for循環(huán),p[1][0]=p[1][0]=p[1][0]-1=3;第2次執(zhí)行for循環(huán),p[1][1]=p[1][1]-1=4;第3次執(zhí)行for循環(huán),p[1][2]=l,最后輸出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。

\n

18.Aftell是返回文件當(dāng)前指針。

19.A解析:單元測試的步驟如下:

①理解需求和設(shè)計(jì)。清楚被測試模塊在整個(gè)軟件中所處的位置。一個(gè)原則是:好的設(shè)計(jì),各模塊只負(fù)責(zé)完成自己的事情,層次與分工明確。單元測試時(shí),可以不測試不屬于被測模塊所負(fù)責(zé)的功能,以減少測試用例的冗余。

②概覽源代碼。瀏覽源代碼,初步檢查源代碼的編碼風(fēng)格與規(guī)范,大致估算測試工作量,確定模塊的復(fù)雜程度,初步制定測試的優(yōu)先級等。

③精讀源代碼。認(rèn)真閱讀和分析代碼,理解代碼的業(yè)務(wù)邏輯,檢查代碼與設(shè)計(jì)是否相符,仔細(xì)研究邏輯復(fù)雜的模塊,可采用一些檢查列表來檢查程序可能會出現(xiàn)的問題。

④設(shè)計(jì)測試用例。綜合運(yùn)用白盒測試方法(并結(jié)合黑盒測試方法)設(shè)計(jì)測試用例,包括功能測試、性能測試等,要達(dá)到一定的測試覆蓋率。本題正確答案為選項(xiàng)A。

⑤搭建單元測試環(huán)境。這個(gè)階段主要就是寫樁模塊和驅(qū)動模塊,然后驅(qū)動模塊想辦法獲取被測試模塊對數(shù)據(jù)的處理結(jié)果,并判定返回的實(shí)際結(jié)果與測試用例的預(yù)

期結(jié)果是否一致,通過測試框架來記錄執(zhí)行的結(jié)果,對于出現(xiàn)的錯(cuò)誤,還需統(tǒng)計(jì)錯(cuò)誤的信息,供執(zhí)行完之后分析。

⑥執(zhí)行測試。運(yùn)行寫好的驅(qū)動模塊完成對被測試模塊的測試。

⑦補(bǔ)充和完善測試用例。在測試過程中不斷補(bǔ)充測試用例,直到滿足要求為止。

⑧分析結(jié)果,給出評價(jià)。根據(jù)測試的結(jié)果分析、查找錯(cuò)誤的原因,并找到解決的辦法。測試結(jié)束之后,根據(jù)測試過程的數(shù)據(jù)統(tǒng)計(jì),給出被測試對象評價(jià)。

20.AC語言中整型常量,從表示形式來看,有十進(jìn)制、八進(jìn)制或十六進(jìn)制;從符號位來看,有有符號整數(shù)和無符號整數(shù)兩類。選項(xiàng)A的“12f”是float類型的實(shí)數(shù),不是整數(shù);選項(xiàng)B的“25u”屬于無符號整數(shù);選項(xiàng)C的“-32”是十進(jìn)制形式的有符號整數(shù);選項(xiàng)D的“+20L”是十進(jìn)制形式的長整數(shù)。故本題答案為A選項(xiàng)。

21.順序結(jié)構(gòu)順序結(jié)構(gòu)解析:結(jié)構(gòu)化程序有3種摹本結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)(包括if語句和switch語句)和循環(huán)結(jié)構(gòu)(包括for語句、while語句、do…while語句)。

22.a[I]>a[j]a[I]>a[j]解析:本題中的嵌套的循環(huán)結(jié)構(gòu)用在了數(shù)組元素的排序上。本題需要注意的一點(diǎn)是:由于題目只要求出下標(biāo)值為偶數(shù)的元素從小到大排序,所以內(nèi)外層for循環(huán)的條件變量變更條件都是+=2,最后通過條件a[i]>a[j]對元素大小進(jìn)行判斷并交換。

23.fopen(fname"w")chfopen(fname,'w')\r\nch解析:數(shù)組fname用來存放終端輸入的一個(gè)文件的文件名;文件使用方式'w'是為寫而打開文本文件。若文件不存在,系統(tǒng)將用在fopen調(diào)用中以指定的文件名建立一個(gè)新文件;若存在,則覆蓋原有內(nèi)容;fputs(ch,fp)的功能是將字符ch寫到文件指針fp所指的文件中去。

24.23

25.n/2性表的任何位置插入一個(gè)元素的概率相等,即概率為p=1/(n+1),則插入一個(gè)元素時(shí)所需移動元素的平均次數(shù)為E=1/(n+1)(n-i+1)=n/2。

26.交換排序交換排序解析:所謂排序是指將一個(gè)無序序列整理成按值非遞減順序排列成的有序序列,常用的排序方法有:交換排序、插入排序和選擇排序。其中交換排序包括冒泡排序和快速排序,插入排序包括簡單插入排序和希爾排序,選擇排序包括直接選擇排序和堆排序。

27.2424解析:本題考查函數(shù)的循環(huán)調(diào)用。p=x*func(x-1),當(dāng)x=4時(shí),不滿足if語句的條件,p=4*func(3),x=3也不滿足條件,則func(3)=3*func(2),func(2)=2*func(1),x=1滿足條件return(1),則輸出結(jié)果為4*3*2*1=24。

28.gaga解析:考查了用字符指針處理字符串的方法。用字符指針處理字符串,首先要使指針指向這個(gè)字符串,即題中的ptr1=a和ptr2=b,然后就是通過指針的移動可以引用到字符串中的每一個(gè)字符。題中的*(ptr1+k)是使指針ptr1向后移動k個(gè)位置,然后取出指向的字符。

29.物理獨(dú)立性物理獨(dú)立性解析:數(shù)據(jù)獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(shù)據(jù)的存儲結(jié)構(gòu)改變時(shí),其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為物理獨(dú)立性。

30.floaty;structstu*floaty;\r\nstructstu*解析:float定義變量y為實(shí)型變量。要求變量next是指向自身結(jié)構(gòu)體的指針,因此變量next應(yīng)該是結(jié)構(gòu)體stu的指針型變量。

31.存儲結(jié)構(gòu)

32.共享性共享性解析:數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能被不同的應(yīng)用程序使用,實(shí)現(xiàn)了數(shù)據(jù)的高度共享,從而降低了數(shù)據(jù)的冗余,這也是數(shù)據(jù)庫的主要目的。

33.操作系統(tǒng)或OS操作系統(tǒng)或OS解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)。位于用戶和操作系統(tǒng)之間。

34.黑箱黑箱解析:本題考查了軟件測試中的黑箱測試。黑箱測試是根據(jù)程序規(guī)格說明所規(guī)定的功能來設(shè)計(jì)測試用例,它不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程。常用的黑箱測試技術(shù)分為等價(jià)類劃分、邊界分析、錯(cuò)誤猜測以及因果圖等。

35.(ch=getchar())!='@'fclose(fp)。(ch=getchar())!='@',fclose(fp)。解析:表達(dá)式z-=x<y?x++:++y相當(dāng)于先執(zhí)行++y,再執(zhí)行z-=x<y?x:y,最后執(zhí)行x++,其中z-=x<y?x:y等價(jià)于z=z-(x<y?x:y),由于x值為3,y值為3,x<y不成立,返回y的值,z-y的值為-2,賦給z。

36.ABCabABCab解析:本題中字符數(shù)組的初值是“ABCabc”,s[5]='c',然后通過s[5]='\\0'重新給s[5]賦值,在C語言中'\\0'是字符串結(jié)束標(biāo)志,執(zhí)行s[5]='\\0',其實(shí)是將s[5]的值去掉只保留前面的字符。

37.可重用性繼承的優(yōu)點(diǎn):相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余,提高軟件的可重用性。

38.55解析:該程序考查do-while循環(huán)。循環(huán)共進(jìn)行兩次。第一次循環(huán)b=3,a=4;第二次循環(huán)b=1,a=5。輸出a的值為5。

39.efghefgh解析:函數(shù)*ss的作用是使字符串指針往后移strlen(s)/2個(gè)位置。形參指針a指向字符串'abcdefeh',調(diào)用函數(shù)*ss后,指針指向e,所以輸出為efgh。

40.讀棧頂元素讀棧頂元素解析:棧的基本運(yùn)算有三種:入棧、退棧和讀棧頂元素。

入棧運(yùn)算是指在棧頂位置插入一個(gè)新元素。這個(gè)運(yùn)算有兩個(gè)基本操作:首先將棧頂指針進(jìn)一(即top加1),然后將新元素插入到棧頂指針指向的位置。

退棧運(yùn)算是指取出棧頂元素并賦給一個(gè)指定的變量。這個(gè)運(yùn)算有兩個(gè)基本操作:首先將棧頂元素(棧頂指針指向的元素)賦給一個(gè)指定的變量,然后將棧頂指針退一(即top減1)。

讀棧頂元素是指將棧頂元素賦給一個(gè)指定的變量。這個(gè)運(yùn)算不刪除棧頂元素,只是將它的值賦給一個(gè)變量。

41.D解析:關(guān)系模型中包括關(guān)系的數(shù)據(jù)結(jié)構(gòu)、關(guān)系的操縱和關(guān)系中的數(shù)據(jù)約束。關(guān)系完整性約束即數(shù)據(jù)完整性,包括實(shí)體完整性、參照完整性和用戶自定義完整性。

42.D解析:if...else語句的執(zhí)行過程如下,首先計(jì)算if后面一對圓括號內(nèi)表達(dá)式的值,若表達(dá)式的值為非0,執(zhí)行if子句,然后跳過else子句,去執(zhí)行if語句后的下一條語句;若表達(dá)式的值為0,跳過if子句,去執(zhí)行else子句,接著去執(zhí)行if語句后的下一條語句。C語言的語法規(guī)定,else子句總是與前面最近的不帶else的if匹配,與書寫格式無關(guān),本題目的后一個(gè)ifelse相當(dāng)于嵌套在第一個(gè)if子句里,相當(dāng)于x<y&&y<0時(shí),z=0;當(dāng)x<y&&y>=0時(shí),z=z+1。

43.D

44.D解析:本題考查靜態(tài)變量的使用方法和for循環(huán)。在函數(shù)調(diào)用時(shí),static變量在函數(shù)調(diào)用結(jié)束后所作的所有變化均不保持,所以當(dāng)i-1時(shí),第2次進(jìn)入f函數(shù)時(shí)c=5,所以最終main函數(shù)中c的值為5。

45.D

46.B解析:結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是結(jié)構(gòu)化程序清晰易讀,可理解性好,程序員能夠進(jìn)行逐步求精、程序證明測試,以保證程序的正確性。

47.C解析:該題目測驗(yàn)考生對if...elseif結(jié)構(gòu)的理解,比較簡單。x的值滿足x<10.0的關(guān)系,所以程序?qū)?zhí)行y=1.0/x;語句,y的值應(yīng)該等于0.5。最后,用printf函數(shù)輸出時(shí),%f的輸出格式為小數(shù)點(diǎn)后保留6位。

48.B

49.B解析:C語言中字符串是以'\\O'字符結(jié)束的,且strlen()函數(shù)計(jì)算的是'\\O'字符前的所有字符的個(gè)數(shù)。本題中strlen(st)應(yīng)為5。數(shù)組定義以后系統(tǒng)就為其分配相應(yīng)大小的內(nèi)存空間,而不論其中有沒有內(nèi)容。sizeof()函數(shù)是計(jì)算變量或數(shù)組的所分配到的內(nèi)存空間的大小。所以本題的sizeof(st)為20。

50.B解析:本題主要考查結(jié)構(gòu)指針:p=&st,訪問結(jié)構(gòu)體的成員,可以通過結(jié)構(gòu)變量訪問,即st.i,也可以用等價(jià)的指針形式,即(*p).i和p->i。

51.C

52.A解析:本題考查函數(shù)的遞歸調(diào)用。

在函數(shù)遞歸調(diào)用時(shí),fun(7):a=7-fun(5)→fun(5):a=5-fun(3)→fun3:a=3-fun(1)→fun(1):a=3,反推回去fun(3):a=3-3=0→fun(5):a=5-0=5→fun(7):a=7-5=2,最后的計(jì)算結(jié)果為2。

53.C解析:對于字符串指針,其保留的是整個(gè)串的首地址,即為第一個(gè)字符的起始地址,當(dāng)該指針做算術(shù)運(yùn)算時(shí),就是該指針根據(jù)其類型向后移動相應(yīng)的存儲空間。

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

55.C解析:本題首先定義了一個(gè)4行5列的數(shù)組s,又定義了一個(gè)指向由5個(gè)元素組成的一維數(shù)組的指針變量ps,通過賦值讓ps指向了數(shù)組s的首地址。此時(shí)數(shù)組元素s[i][j]的地址為“*(ps+1)+j”,數(shù)組元素s[i][j]可表示為*(*(ps+1)+j)。選項(xiàng)B表示的是數(shù)組元素a[3][0]的地址;選項(xiàng)D表示的是數(shù)組元素s[1][3]的地址;選項(xiàng)A中“ps+1”為指向下一行(第二行)的地址;選項(xiàng)c中ps[0][2]無條件等價(jià)于“*(ps[0]+2)”又無條件等價(jià)于”(*(ps+0)+2)”,即是數(shù)組元素s[0][2]。所以,4個(gè)選項(xiàng)中C為所選。

56.A解析:條件表達(dá)式“a?b:c”的含義是:當(dāng)a為真時(shí),其值等于表達(dá)式b的值,當(dāng)a為假時(shí),其值等于表達(dá)式c的值。第一個(gè)表達(dá)式:w=6<x=4為假,所以返回x的值,即m=x=4;第二個(gè)表達(dá)式:m=4<y=3為假,所以返回y的值,即m=y=3。

57.A解析:通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程稱為軟件生命周期。它可以分為軟件定義、軟件開發(fā)及軟件運(yùn)行維護(hù)3個(gè)階段。

58.A解析:選擇排序的基本思想是掃描整個(gè)線性表,從中選出最小的元素,將它交換到表的最前面,然后對剩下的子表采用同樣的方法,直到子表為空。所以第一趟排序后,將選出最小的元素9放在第一個(gè)位置,元素15則放在第二個(gè)位置。

59.A解析:由二叉樹后序遍歷序列和中序遍歷序列可以唯一確定一棵二叉樹。二叉樹BT的后序遍歷序列為dabec,故BT的根結(jié)點(diǎn)為c(后序遍歷序列的最后一個(gè)結(jié)點(diǎn)為樹的根結(jié)點(diǎn)):而BT的中序遍歷序列是debac,即遍歷序列中最后一個(gè)結(jié)點(diǎn)為根結(jié)點(diǎn),說明BT的右子樹為空。由BT的后序遍歷序列和中序遍歷序列可知BT左子樹的后序遍歷序列和中序遍歷序列分別為dabe和deba,因此BT左子樹的根結(jié)點(diǎn)是e。再由中序遍歷序列可知其左子樹為d,右子樹為ba。因此BT的前序遍歷序列為cedba。

60.A解析:本題考查printf函數(shù)的格式?!?5.2f”格式符中的“f”表示以帶小數(shù)點(diǎn)的形式輸出單精度或者雙精度數(shù):“5”表示指定數(shù)據(jù)輸出寬度為5;“.2”表示指定輸出數(shù)據(jù)小數(shù)位占2位數(shù),并對截去的第一位小數(shù)做四舍五入處理。

61.B本題中執(zhí)行fun(a)時(shí),會取字符串a(chǎn)的第一個(gè)字母B,因?yàn)樽帜窧的ASCIl碼值為66,所以不會輸出字母8,函數(shù)只會輸出ASCIl碼值為奇數(shù)的字母,字母Y的ASCIl碼值為89,字母T的ASCIl碼值為84,字母E的ASCII碼值為69。因此B選項(xiàng)正確。

62.C【答案】C

【知識點(diǎn)】C程序的函數(shù)

【解析】C程序必須有且只有一個(gè)主函數(shù)main()。一個(gè)C程序可以包含多個(gè)不重名的子函數(shù)。C程序在書寫時(shí)沒有嚴(yán)格的縮進(jìn)要求,語句前的縮進(jìn)隨意。

63.DP=&a[3]將指針指向數(shù)組a的第4個(gè)元素,P[5]指向數(shù)組a的第9個(gè)元素,而a[8]=19,所以b=19。

64.C數(shù)據(jù)庫是對數(shù)據(jù)進(jìn)行操作和管理的,可以看成是長期存儲在計(jì)算機(jī)內(nèi)的、大量的、有結(jié)構(gòu)的和可共享的數(shù)據(jù)集合。數(shù)據(jù)庫可以被直觀地理解為存放數(shù)據(jù)的倉庫,數(shù)據(jù)庫可以對大量數(shù)據(jù)進(jìn)行管理和應(yīng)用。一個(gè)應(yīng)用數(shù)據(jù)庫的主要目的就是要實(shí)現(xiàn)數(shù)據(jù)的共享,能使應(yīng)用數(shù)據(jù)庫的數(shù)據(jù)被大量用戶使用。

65.A\n循環(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。

\n

66.D結(jié)構(gòu)化程序設(shè)計(jì)由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論