2022年山東省淄博市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第1頁
2022年山東省淄博市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第2頁
2022年山東省淄博市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第3頁
2022年山東省淄博市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第4頁
2022年山東省淄博市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022年山東省淄博市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若文件指針fp已正確指向文件,ch為字符型變量,以下不能把字符輸出到文件中的語句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

2.以下只有在使用時才為該類型變量分配內(nèi)存的存儲類型說明是()。

A.auto和static

B.auto和register

C.register和static

D.extern和register

3.有以下程序:#include<stdio.h>main(){inta=10,b=11;if(++a==b++) printf(“T”);else printf(“F”);printf(“a=%d,b=%d\n”,a,b);}程序運(yùn)行后的輸出結(jié)果是()。

A.Fa=11,b=11B.Fa=10,b=12C.Ta=10,b=11D.Ta=11,b=12

4.下列運(yùn)算符中優(yōu)先級最低的算符是()。

A.||B.!=C.<;=D.十

5.

6.有以下程序

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);printf("%s,%s\n",ss,aa);

}

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

A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

7.有以下程序intf(intA){returna%2;}main(){ints[8]={1,3,5,2,4,6),i,d=0;for(i=0;f(s[i];i++)d+=s[i];printf("%d\n",D);}程序運(yùn)行后的輸出結(jié)果是

A.9B.11C.19D.21

8.下面程序的輸出結(jié)果是()。chars()="ABCD",*p;main(){for(p=s;p<s+4;p++)printf("%s\n",p);)

A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA

9.在下面的字符數(shù)組定義中,哪一個有語法錯誤()。A.chara[20]=”abcdefg”;

B.chara[]=”x+y=55.”;

C.chara[15];

D.chara[10]=’5’;

10.設(shè)fun函數(shù)的定義形式為voidfun(charch,floatx){…}則下列對函數(shù)fun的調(diào)用語句中,正確的是()。

A.fun("abc",3.0);

B.t=fun(D.16.5);

C.fun(65,2.8);

D.fun(32,32);

11.有以下程序:#include<stdio.h>main(){inta=2,b=3,c=4;a*=16+(b++)-(++c);printf(“%d\n”,a);}程序運(yùn)行后的輸出結(jié)果是()。

A.15B.30C.28D.14

12.面向?qū)ο蠓椒ㄖ校^承是指()。

A.一組對象所具有的相似性質(zhì)B.一個對象具有另一個對象的性質(zhì)C.各對象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制

13.設(shè)有定義“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若變量均已正確賦初值,則下列語句中錯誤的是()。

A.t1=t2;

B.t2.num1=t1.num1;

C.t2.mark=t1.mark;

D.t2.num2=t1.num2;

14.針對簡單程序設(shè)計,以下敘述的實施步驟順序正確的是()。

A.確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試、整理文檔

B.編碼、確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、整理文檔

C.整理文檔、確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試

D.確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、編碼、整理文檔

15.有以下程序:#include<stdio.h>#defineS(x)x*x/xmain(){intk=6,j=3;printf(“%d,%d\n”,S(k+j+2),S(j+k+2);}程序運(yùn)行后的輸出結(jié)果是()。

A.11,11B.29,29C.26,29D.121,121

16.

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

18.算法的空間復(fù)雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.執(zhí)行算法需要的內(nèi)存空間

19.

20.下列關(guān)于信息系統(tǒng)的敘述中,錯誤的是()。

A.廣播電視是一種雙向的、點(diǎn)到多點(diǎn)的信息交互系自

B.網(wǎng)絡(luò)聊天是一種雙向的,以信息交互為主要目的系統(tǒng)

C.電話是一種雙向的、點(diǎn)對點(diǎn)的、以信息交互為主要的的系統(tǒng)

D.雷達(dá)是一種以感測和識別為主要目的的系統(tǒng)

二、2.填空題(20題)21.以下程序的運(yùn)行結(jié)果是______。

#include<stdio.h>

main()

{intfun();fun();}

fun()

{staticinta[3]={0,1,2};

inti;

for(i=0;i<3;i++)a[i]+=a[i];

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

pfintf("\n",);}

22.有以下程序:

#include<stdio.h>

main()

{

charc;

while((c=getchar())!='?')putchar(--c);

}

程序運(yùn)行時,如查從鍵盤輸入:Y?N?<回車>,則輸出的結(jié)果為______。

23.關(guān)系模型的數(shù)據(jù)操縱即是建立在關(guān)系上的數(shù)據(jù)操縱,一般有______、增加、刪除和修改四種操作。

24.以下程序統(tǒng)計從終端輸入的字符中大寫字母的個數(shù)。用#號作為輸入結(jié)束標(biāo)志,請?zhí)羁铡?include<stdio.h>#include<ctype.h>main(){intnum[26],i;charc;for(i=0;i<26;i++)num[i]=0;();while(c!='#'}{if(isupperC)num[c-65]+=1;}for(i=0;i<26;i++)if(num[i])printf("%c,%d\n",i+65,num[i]);}

25.以下程序的輸出結(jié)果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

27.執(zhí)行以下程序后的輸出結(jié)果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

28.下面fun函數(shù)的功能是將形參x的值轉(zhuǎn)換成二進(jìn)制數(shù),所得二進(jìn)制數(shù)的每一位數(shù)放在數(shù)組中返回,二進(jìn)制數(shù)的最低位放在下標(biāo)為0的元素中,其他依此類推。請?zhí)羁铡?/p>

Fun(intx,intb[])

{intk=0,r;

do

{r=x%2;

()=r;

x/=2;

}while(x);

}

29.算法的基本特征是可行性、確定性、【】和擁有足夠的情報。

30.表達(dá)式pow(2.8,sqrt(float(x)))值的數(shù)據(jù)類型為______型。

31.以下程序的運(yùn)行結(jié)果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf(:Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t:MAX(a+b,c+d);PRINT(t);}

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

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

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

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

main()

{inti=0,j=10,k=2,s=0;

for(;;)

{i+=k;

if(i>j)

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

break;}

s+=i;}}

35.解題方案的準(zhǔn)確而完整的描述稱為______。

36.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語句,且函數(shù)fun為void型,請寫出函數(shù)fun的首部【】。要求形參名為b。

main()

}doubles[10][22];

intn;

fun(s);

}

37.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計算它們的和值。和值通過形參傳回主函數(shù)輸出。請?zhí)羁铡?/p>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*Sum)

{inti,j,k,s=0

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

{k=0;

for(j=1;j<M;j++)

if(a[k][i]>a[j][i])k=j;

s+=【】;

}

【】=s;

}

main()

{intx[M][N]={3,2,5,1,4,l,8,3),s;

SumColumMin(【】);

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

}

38.若已定義inta[10],i;以下fun函數(shù)的功能是,在第一個循環(huán)中給前10個數(shù)組元素依次賦1,2,3,4,5,6,7,8,9,10;在第二個循環(huán)中使a數(shù)組前10個元素中的值對稱拆疊,變成1,2,3,4,5,5,4,3,2,1。請?zhí)羁铡?/p>

fun(inta[])

{inti;

for(i=1;i<=10;i++)【】=i;

for(i=0;i<5;i++)【】=a[i];

}

39.常用的黑箱測試有等價類劃分法、【】和錯誤推測法3種。

40.在循環(huán)中,continue語句與break語句的區(qū)別是:______語句只是結(jié)束本次循環(huán),然后進(jìn)行循環(huán)的條件判定。

三、1.選擇題(20題)41.運(yùn)行下面程序時,從鍵盤輸入字母H,則輸出結(jié)果是

#include<stdio.h>

main()

{charch;

ch=getchar();

switch(ch)

{case′H′:printf("Hello!\n");

case′G′:printf("Goodmorning!\n");

default:printf("Bye_Bye!\n");

}

}

A.Hello!

B.Hello!GoodMoring!

C.Hello!Goodmorning!Bye_Bye!

D.Hello!Bye_Bye!

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.有如下程序:#include<stdio.h>main(){intx=23;do{Printf("%d",x--);}while(!x);}該程序的執(zhí)行結(jié)果是()。

A.321B.23C.不輸出任何內(nèi)容D.陷入死循環(huán)

44.在關(guān)系數(shù)據(jù)庫中,用來表示實體之間聯(lián)系的是

A.樹結(jié)構(gòu)B.網(wǎng)結(jié)構(gòu)C.線性表D.二維表

45.若有如下程序:main(){staticchar*a[3]={"123","456","789");char**b;b=a;++b;printf("%s,%s\n",*a,*a+1);printf("%s,%s\n",*b,b[1]);}則程序運(yùn)行后的輸出結(jié)果是()。

A.123,456,456,789

B.123,23456,56

C.123,23456,789

D.123,456456,56

46.在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是______。

A.地址傳遞B.單向值傳遞C.由實參傳遞給形參,再由形參傳遞給實參D.傳遞方式由用戶指定

47.以下scanf函數(shù)調(diào)用語句中對結(jié)構(gòu)體變量成員的引用不正確的是

structpupil

{charname[20];

intage

intsex;

}pup[5],*p;

p=pup;

A.scanf("%s",pup[0].name);

B.scanf("%d",&pup[0].age);

C.scanf("%dT",&(p->sex));

D.scanf("%d",p->age);

48.下列程序的輸出結(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

49.若有以下程序段intm=0xabc,n=0xubc;m-=n;printf("%X\n",m);執(zhí)行后輸出結(jié)果是

A.0X0B.0x0C.0D.0XABC

50.有以下程序:main(intargc,char*argv[]){intn=0,i;for(i=1;i<argc;i++)n=n*10+*argv[i]-'0';printf("%d\n",n);}編譯連接后生成可執(zhí)行文件tt.exe。若運(yùn)行時輸入以下命令行tt12345678程序運(yùn)行后的輸出結(jié)果是()。

A.12B.12345C.12345678D.136

51.以下不能正確定義二維數(shù)組的選項是A.inta[2][2]={{1},{2}};

B.inta[][2]={1,2,3,4};

C.inta[2][2]={{1},2,3};

D.inta[2][]={{1,2},{3,4}};

52.有以下程序:voidf(inta[],inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,j-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");}執(zhí)行后輸出結(jié)果是()。

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

53.以下有關(guān)宏替換的敘述不正確的是()。A.A.使用宏定義可以嵌套

B.宏定義語句不進(jìn)行語法檢查

C.雙引號中出現(xiàn)的宏名不替換

D.宏名必須用大寫字母表示

54.設(shè)intx=1,y=1;表達(dá)式(!x‖--y)的值是()。

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

55.下面一組中都是C語言關(guān)鍵字的是______。

A.doubleIntfor

B.mainwhilegoto

C.volatilebreakstatic

D.mallocsizeofnew

56.執(zhí)行以下的程序段后,m的值是______。inta[2][3]={{1,2,3},(4,5,6}};intm,*p;p=&a[0][0];m=p[4];

A.4B.5C.3D.不確定

57.有以下程序:#include<stdio.h>voidWriteStr(char*fn,char*sir){FILE*fP;fP=fopen(fn,"w");fput6(str,fp);fclose(fp);}main(){WriteStr("t1.dar","start");WrlteStr("t1.dat","end");}程序運(yùn)行后,文件t1.dat中的內(nèi)容是()。

A.startB.endC.startendD.endrt

58.有以下程序:#include<string.h>main(intargc,char*argv[]){inti,len=0;for(i=1;i<argc;i++)len+=strlen(argv[i]);printf("%d\n",len);}程序編譯連接后生成的可執(zhí)行文件是ex1.exe,若運(yùn)行時輸入帶參數(shù)的命令行是:ex1abcdefg10<回車>則運(yùn)行的結(jié)果是()。

A.22B.17C.12D.9

59.當(dāng)變量c的值不為2、4、6時,值也為"真"的表達(dá)式是

A.(c==2)||(c==4)||(c==6)

B.(c>=2&&c<=6)||(c!=3)||(c!=5)

C.(c>=2&&c<=6)&&!(c%2)

D.(c>=2&&c<=6)&&(c%2!=1)

60.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與聯(lián)系都可以表示成________。

A.屬性B.關(guān)系C.鍵D.域

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

voidmain()

{chars[]="159",*p;

p=s;

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

}

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

A.15B.16C.12D.59

62.有以下程序

main()

{charstr[]="xyz",*ps=str;

while(*ps)ps++;

for(ps--;ps-str>=0;ps--)

puts(ps);

}

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

A.yzB.zC.zD.x

xyzyzyzxy

xyzxyz

63.有以下程序程序運(yùn)行后的輸出結(jié)果是()。A.a+b=0B.a+b=30C.a+b=lOD.出錯

64.

65.

66.下列詞語中,不屬于面向?qū)ο蠓椒ǖ氖?/p>

A.對象、消息B.繼承、多態(tài)C.類、封裝D.過程調(diào)用

67.

68.軟件工程出現(xiàn)的原因是

A.程序設(shè)計方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機(jī)的出現(xiàn)D.計算機(jī)的發(fā)展

69.設(shè)變量x和y均已正確定義并賦值,以下if語句中,在編譯時將產(chǎn)生錯誤信息的是

70.下列選項中不合法的十六進(jìn)制數(shù)是()。A."0"xff

B."0"X11

C."0"x1g

D."0"Xabc

71.有以下程序:

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

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

72.

73.下列SQL語句中,用于修改表結(jié)構(gòu)的命令式是A.A.Alter

B.Create

C.Update

D.Insert

74.已知inta=15,執(zhí)行語句a=a<<2以后,變量a的值是()。

A)20B)40

C)60D)80

75.

76.

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

A.21B.11C.6D.120

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

main()

{char*s="12134211";

intv1=0,v2=0,v3=0,v4=0,k;

for(k=0;s[k];k++)

switch(s[k])

{case’1’:v1++;

case’3’:v3++;

case’2’:v2++;

defaule:v4++;

}

printf("v1=%d,v2=%d,v3=%d,v4=%d\n,v1,v2,v3,v4);

}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=4,v2=7,v3=5,v4=8

79.

80.有以下程序:

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

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

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:實現(xiàn)兩個變量值的交換,規(guī)定不允許增加語句和表達(dá)式。例如,變量a中的值原為8,b中的值原為3,程序運(yùn)行后,a中的值為3,b中的值為8。請改正程序中的錯誤,使它得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.下列程序定義了M×M的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(intarr[][M]),該函數(shù)的功能是使數(shù)組左下半三角元素中的值全部置成0。例如,arr數(shù)組中的值為:

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

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

試題程序:

參考答案

1.A函數(shù)fgete()從文件讀入一個字符到指定變量。函數(shù)fputc()將指定字符寫入審文件中,函數(shù)fprinff(),fwrite()均是寫入文件操作函數(shù)。因此選項B,c。D錯誤。答案為A選項。

2.B在用靜態(tài)static與外部extern定義變量時,系統(tǒng)立刻給其分配內(nèi)存,而定義自動類auto與強(qiáng)制放入寄存器register類型變量時,只有當(dāng)使用時才分配內(nèi)存。

3.D自增運(yùn)算符是將運(yùn)算對象的值增1,它有前綴形式“++a”和后綴形式“b++”。其中“++a”表示首先將a的值自增1,然后表達(dá)式“++a”的值就是自增后a的值;而“b++”表示首先將b的值作為表達(dá)式的值,然后再將b的值自增1。本題中,a的初值為10,b的初值為11,則表達(dá)式“++a==b++”,等價于“11==11”,條件為真,所以輸出“T”。if語句執(zhí)行完后,a的值為11,b的值為12,輸出“a=11,b=12”。故本題答案為D選項。

4.AC語言中規(guī)定運(yùn)算符的優(yōu)先順序:一元算術(shù)運(yùn)算符一>二元算術(shù)運(yùn)算符一>關(guān)系運(yùn)算符一>邏輯運(yùn)算符一>賦值運(yùn)算符,A項中為邏輯運(yùn)算符,B項和c項都為關(guān)系運(yùn)算符,D項為一元運(yùn)算符。因此最低的是A項。

5.B

6.D解析:本題中fun函數(shù)實現(xiàn)了字符串函數(shù)strcat的功能,將字符串a(chǎn)a連接到字符串ss的末尾。調(diào)用fun函數(shù)時,形參t和s分別指向了字符串ss和aa,然后通過一個while循環(huán)使t指向字符串ss的結(jié)束符的位置,第二個while循環(huán)將字符串a(chǎn)a中的字符(包括結(jié)束符'\\0')逐個復(fù)制到字符串ss的末尾處。

7.A解析:本題考核的知識點(diǎn)是一維數(shù)組的定義,初始化和數(shù)組中元素的引用。函數(shù)f()的作用是形參a為偶數(shù)的時候返回0,主函數(shù)中首先定義了一個長度為8的一維數(shù)組,然后給它賦初值使得s[0]=1、a[1]=3、s[2]=5、s[3]=2、s[4]=4、s[5]=6.其他沒有賦值的數(shù)組元素將自動賦值為0。for循環(huán)中,當(dāng)s[1]不為偶數(shù)的時,將s[i]相加,即當(dāng)i=3時,s[i]=2為偶數(shù),退出循環(huán),此時d的值為d=s101+s[1]+s[2]=1+3+5=9,因此最后輸出的d的值為9。所以,4個選項中選項A符合題意。

8.A解析:p為指針型變量。第一次循環(huán),p=s,p的值為字符數(shù)組s的首地址,輸出字符串'ABCD'。p++,第二次循環(huán),p的值為字符數(shù)組s的首地址加1,輸出字符串'BCD'。p++,第三次循環(huán),p的值為字符數(shù)組s的首地址加2,輸出字符串'CD'。p++,第4次循環(huán),p的值為字符數(shù)組s的首地址加3,輸出字符串\'D'。

9.D

10.C由題目的已知條件函數(shù)fun的定義形式voidfun(charch,floatx){…)可知第一個形參為字符型,所以A不符合,第二個形參為精度型,所以D不符合,函數(shù)fun定義為void型(無論返回值型),故其沒有返回值,所以選項B錯誤。選項C的第一個實參的類型為字符型,第二個實參的類型為單精度型,與函數(shù)fun的形式參數(shù)的類型相符合,所以選項C為正確答案。

11.C單目運(yùn)算符“++”的優(yōu)先級高于賦值運(yùn)算符。表達(dá)式“a*=16+(b++)-(++C);”可轉(zhuǎn)化為“a=a*(16+b-(c+1));b=b+1;”,代入值計算可得a=28。故本題答案為C選項。

12.D繼承是面向?qū)ο蟮姆椒ǖ囊粋€主要特征,是使用已有的類的定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們,所以說繼承是指類之間共享屬性和操作的機(jī)制。

13.Cmark為結(jié)構(gòu)體中的數(shù)組,不能直接賦值,所以C選項錯誤。故本題答案為C選項。

14.A\nC語言中程序中的步驟實現(xiàn)為:先確定程序中的算法和數(shù)據(jù)結(jié)構(gòu),然后進(jìn)行程序的編碼,再進(jìn)行對程序的調(diào)試,最后進(jìn)行文檔的整理和記錄。使用這種步驟可以方便程序的編寫以及在完成后提高代碼的重用性。

\n

15.B#define命令是C語言中的一個宏定義命令,為了區(qū)分其他標(biāo)識符,標(biāo)識符一般使用大寫。將標(biāo)識符定義為一個字符串,該標(biāo)識符被稱為宏名,被定義的字符串稱為替換文本。宏定義不進(jìn)行其他操作,僅僅只是替換標(biāo)識符。題目中的S(k+j+2)=k+j+2*k+j+2/k+j+2”,經(jīng)計算可得29?!癝(j+k+2)=j+k+2*k+j+2/j+k+2”,經(jīng)計算可得29。因此輸出為29,29。故本題答案為B選項。

16.A

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

18.D解析:算法的復(fù)雜度主要包括算法的時間復(fù)雜度和算法的空間復(fù)雜度。所謂算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量;算法的空間復(fù)雜度一般是指執(zhí)行這個算法所需要的內(nèi)存空間。

19.A

20.A廣播/電視是一種單向的、點(diǎn)對多點(diǎn)(面)的以信息傳遞為主要目的的系統(tǒng)。

21.本題主要考查for循環(huán)語句的使用以及靜態(tài)局部變量的特點(diǎn)。

22.xx解析:本題考查的知識點(diǎn)是while循環(huán)的程序分析;主函數(shù)中首先定義了一個字符型變量C,接著執(zhí)行下面while語句,在while循環(huán)中,首先從鍵盤上讀入一個字符Y并給賦給字符變量C,賦值表達(dá)式的值不為'?',執(zhí)行輸出語句,輸出字符x。接著判斷while中的循環(huán)條件,讀入一個字符'?',并賦值給c,賦值表達(dá)式的值為'?',循環(huán)條件不再滿足,退出循環(huán)。

23.查詢查詢

24.c=getchar()

25.JD

26.55解析:分析程序,當(dāng)a=3;b=4;c=5時,判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結(jié)果為5。

27.a=14a=14解析:逗號表達(dá)式的值是以逗號分隔的最后一個表達(dá)式的值。所以題目中的語句a=(3*5,a+4);就等價于a=a+4;。故本題輸出結(jié)果是a=14。

28.b[k++]b[k++]解析:本題的考查點(diǎn)是do-while語句。形參x默認(rèn)為十進(jìn)制,要想將一個十進(jìn)制的數(shù)轉(zhuǎn)換成二進(jìn)制,可以使用整除求余法,題中的程序段也表明了將使用這種方法,將一個十進(jìn)制的數(shù)轉(zhuǎn)換成二進(jìn)制要用這個十進(jìn)制數(shù)不斷的整除2,將每次的余數(shù)記錄下來,直至無法再除,此時,整除得到的第一個元素即為二進(jìn)制數(shù)的最低位,其余依次類推,所以在程序段中的橫線處,應(yīng)當(dāng)填寫“b[k++]”。

29.有窮性有窮性解析:算法有四個基本特征:可行性、確定性、有窮性和擁有足夠的情報。

30.floatfloat解析:在此表達(dá)式中x是float類型的變量,經(jīng)過開方所得到的結(jié)果仍是float類型,再和2.8進(jìn)行運(yùn)算時,應(yīng)該先將2.8轉(zhuǎn)換成float類型再運(yùn)算,最后結(jié)果仍是float型。

31.C

32.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;

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

34.3030解析:題目中for(;;)表示:for循環(huán)的初始化表達(dá)式,條件表達(dá)式和修正表達(dá)式都省略了,表示進(jìn)行for循環(huán)和for循環(huán)的終止都沒有限制。注意:while循環(huán)的執(zhí)行原理。

35.算法算法解析:算法是指對解題方案的準(zhǔn)確而完整的描述。

36.voidfun(double*b)或voidfun(doubleb[10][12])voidfun(double*b)或voidfun(doubleb[10][12])解析:本題考查數(shù)組名作函數(shù)參數(shù)。程序中被調(diào)用函數(shù)fun(s)的實參s是數(shù)組名,而s為double型數(shù)組名,所以函數(shù)fun的形參類型為double*。

37.a[k][i]*sumx&sa[k][i]\r\n*sum\r\nx,&s解析:本題中定義了一個函數(shù)SumColumMin(),該函數(shù)有兩個參數(shù),第一個參數(shù)為數(shù)組名,第二個參數(shù)為一個指針,用來訪問存放數(shù)組中每列元素中最小值的存儲空間的變量。所以在主函數(shù)中調(diào)用SumColumMin()函數(shù),應(yīng)該將數(shù)組x和sam作為實參傳給SumColumMin()中的形參,故第19個空格處應(yīng)該填x,&s。在SumColumMin()函數(shù)中用了兩重循環(huán),用N記錄數(shù)組的列,M記錄數(shù)組的行。內(nèi)循環(huán)共循環(huán)了M次,每循環(huán)一次將a[k][i]比較a[j][i](當(dāng)k=O時,a[k][i]第一行第一列的值,然后將該值依次和第一列中的每個值比較,讓a[k][i]表示較小的值,那么比較到最后一個元素后a[k][i]就是改列中最小元素的值),讓k記錄較小值元素的行下標(biāo),這樣通過M次循環(huán)得到每列中的最小元素,然后退出內(nèi)循環(huán),繼續(xù)執(zhí)行該次外循環(huán)里的其他語句,即將剛求得第i列的最小值a[k][i]累加到s中,故第17個空格處應(yīng)該填a[k][i],最后外循環(huán)共循環(huán)N次,將每列的最小值累加到s中,退出循環(huán),然后讓指針sum所指向的存儲空間的值為s,故第18個空格處應(yīng)該填*sum。

38.a[i-1]或a[-1+i]a[9-i]或a[-i+9]a[i-1]或a[-1+i]\r\na[9-i]或a[-i+9]

39.邊界值分析法邊界值分析法解析:黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例。常用的黑箱測試有等價類劃分、邊界值分析法和錯誤推測法3種。

40.continuecontinue解析:continue語句只是結(jié)束本次循環(huán),然后進(jìn)行循環(huán)的條件判定。break語句是終止整個循環(huán)的執(zhí)行,不再進(jìn)行條件判定。

41.C解析:本題主要對switch語句進(jìn)行了考查。switch語句的執(zhí)行過程為:進(jìn)入switch結(jié)構(gòu)后,對條件表達(dá)式進(jìn)行運(yùn)算,然后從上至下去找與條件表達(dá)式值相匹配的case,以此作為入口,執(zhí)行switch結(jié)構(gòu)中后面的各語句,直到遇到break語句,則跳出switch語句,如果各case都不匹配時,則執(zhí)行default后面的語句。本題中ch為字符'H',所以case'H'條件中的語句將被執(zhí)行,由于沒有break語句,所以case'G'后的語句也被執(zhí)行,由于同樣的缺少break語句,所以default后的語句也被執(zhí)行了。

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

43.B解析:do-while語句的執(zhí)行過程中要先執(zhí)行一次循環(huán)體語句,本題中執(zhí)行x--后判斷while中的表達(dá)式,表達(dá)式的值!x為假,程序結(jié)束循環(huán)。

44.D解析:在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個關(guān)系。即關(guān)系模型是用表格數(shù)據(jù)來表示實體本身及其相互之間的聯(lián)系。本題的正確答案是D。

45.C解析:a為指針數(shù)組,a[0]即數(shù)組a的數(shù)組名指向字符串'123'的首地址,輸出*a為'123',*a+1將指針下移1個存儲單元,輸出字符串為”23”。a[1]指向字符串'456'的首地址,a[2]指向字符串'789'的首地址。b為指針的指針,它的值為數(shù)組a的首地址。

46.B解析:C語言以定,實參變量對形參變量的數(shù)據(jù)傳遞是“單向值傳遞”,只由實參傳紿形參。在內(nèi)存中,實參單元與形參單元是不同的單元。調(diào)用結(jié)束后,實參單元仍保留并維持原值。

47.D解析:考查結(jié)構(gòu)體成員變量的引用方法??捎媒Y(jié)構(gòu)體變量名.數(shù)據(jù)成員名或者結(jié)構(gòu)體指針->數(shù)據(jù)成員名兩種方法來引用。結(jié)構(gòu)體類型的變量、數(shù)組和指針變量的定義。

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

49.C解析:C語言中的自反賦值運(yùn)算符?!癿-=n”相當(dāng)于“m=m-n”,兩個相等的數(shù)相減,其值為0。

50.D解析:因為題目給出的命令行為tt12345678,所以main函數(shù)的兩個參數(shù)分別為4和{'tt','12','345','678')。程序中,通過一個for循環(huán),遍歷了后面的三個參數(shù)字符串,每次將n自乘10,然后累加*argv[i]-\'0\',即第i個參數(shù)字符串的首字符減去\'0\'。一個數(shù)寧字符減去,O字符,即可得到這個數(shù)字字符的實際數(shù)值,因此三次循環(huán)的結(jié)果是讓n的值變?yōu)?36,故本題應(yīng)該選擇D。

51.D解析:選項A)定義的數(shù)組按行各數(shù)組元素分別是:1,0,2,0;選項B)定義的數(shù)組按行各數(shù)組元素分別是:1,2,3,4;選項C)定義的數(shù)組按行各數(shù)組元素分別是:1,0,2,3;因為定義數(shù)組時,第一維的長度可以不指定,第二維的長度必須指定,所以選項D)錯。

52.A解析:在C語言中所謂函數(shù)的遞歸是指在調(diào)用一個函數(shù)的過程中,又出現(xiàn)了直接或間接調(diào)用該函數(shù)本身,直接調(diào)用該函數(shù)本身的稱為函數(shù)遞歸,而間接調(diào)用該函數(shù)稱為函數(shù)的間接遞歸調(diào)用。由程序可以看出函數(shù)f(a,i,j)為一遞歸函數(shù),其功能是當(dāng)i<j時,將數(shù)組中的元素a[i]和a[j]交換,然后再調(diào)用函數(shù)f(a,i+1,j-1),將數(shù)組中a[i+1]和a[j--]交換,這樣一直遞歸到數(shù)組下標(biāo)i=j,可見該遞歸函數(shù)的作用是使數(shù)組中首尾元素依次互換。主函數(shù)中定義了一個長度為5的數(shù)組aa并初始化,然后調(diào)用f(a,0,4),將數(shù)組a中的元素依次互換,故最后for循環(huán)輸出的數(shù)組aa中各元素的值為5、4、3、2、1,所以,4個選項中選項A符合題意。

53.D解析:本題考查宏替換的規(guī)則。宏替換有兩類:簡單的字符替換和帶參數(shù)的宏替換。使用宏應(yīng)注意:①宏定義僅僅是符號替換,不是賦值語句,因此不做語法檢查:②為了區(qū)別程序中其他的標(biāo)示符,宏名的定義通常用大寫字母,但不是必須用大寫;③雙引號中出現(xiàn)的宏名不替換;④使用宏定義可以嵌套,即后定義的宏中可以使用先定義的宏。

54.A解析:當(dāng)邏輯或運(yùn)算符兩邊的運(yùn)算對象至少有一個為1時,整個邏輯表達(dá)式的值是1;如果兩邊的運(yùn)算對象都為0,則整個邏輯表達(dá)式的值為0。題中!x=0,--y=0,所以整個表達(dá)式的值是0。

55.C解析:C語言中的關(guān)鍵字有32個關(guān)鍵字(參見C語言教程),本題中只有C符合題意。

56.B解析:程序中定義了一個指向整型變量的指針變量,并對其賦值為二維整型數(shù)組a的首元素的地址。P[4]等價于*(p+4),即二維數(shù)組a中第四個元素的值,而a是一個2*3的二維數(shù)組,其第四個元素為a[1][1],即5。

57.B解析:在main函數(shù)中,兩次調(diào)用WriteStr函數(shù),即兩次執(zhí)行fp=fopen(fn,'w');語句,以“寫入”方式打開fn所指向的同一文件,當(dāng)?shù)诙未蜷_文件時,文件指針指向文件頭,寫入的數(shù)據(jù)將覆蓋文件中原有的數(shù)據(jù)。fputs(str,fp)函數(shù)的功能是將字符指針*str的值輸出到fp所指向的文件中,故本題中t1.dat的內(nèi)容為end。

58.D解析:本題執(zhí)行時,因為命令行一共有4個字符串,所以argc的值為4,在循環(huán)中依次求出argv[1]、argv[2]和argv[3]指向的字符串('abcd'、'efg'和'10')的長度,并把它們加到變量len中,得到len的值9。所以最后輸出的len值為9,故4個選項中D正確。

59.B解析:滿足表達(dá)式(c>=2&&c<=6)的整型變量c的值是2,3,4,5,6。當(dāng)變量c的值不為2,4,6時,其值只能為3或5,所以表達(dá)式c!=3和c!=5中至少有一個為真,即不論c為何值,選項B中的表達(dá)式都為'真'。

60.B解析:關(guān)系數(shù)據(jù)庫邏輯設(shè)計的主要工作是將\ue008E-R\ue009圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式。首先,從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性,實體集也可以轉(zhuǎn)換成關(guān)系。

61.Ap=s,是將字符串?dāng)?shù)組的首地址賦給p,即p指向’1’,然后輸出1,p++,指向下一位,即指向5,輸出5,指向下一位。

62.B本題主要考查循環(huán)結(jié)構(gòu)和字符串的存儲結(jié)構(gòu)。在C語言中,為了方便確定字符串的長度,編譯系統(tǒng)在字符串后增加了一個結(jié)束標(biāo)識‘\\0’,即ASCII碼的0。

在程序中,首先定義了一個字符型數(shù)組str,并賦初值,然后定義一個同類型的指針變量ps,并使ps指向字符數(shù)組str。

在while循環(huán)中,循環(huán)結(jié)束的條件是*ps的值為0,由于循環(huán)開始前,指針變量ps是指向數(shù)組的第一個元素,即*ps等價于str[0],值為x,其ASCII碼值不為0,循環(huán)繼續(xù),使ps指向數(shù)組的第二個元素,很明顯,結(jié)果不為0,第三個元素也不為0,而第四個元素才為0,循環(huán)結(jié)束,此時ps指向數(shù)組中的結(jié)束標(biāo)識符。

在for循環(huán)中,首先將指針變量ps做自減運(yùn)算,即使指針變量ps執(zhí)行數(shù)組的最后一個元素值,即第三個元素z,然后用輸出函數(shù)puts輸出,該輸出函數(shù)的功能是輸出字符串或字符數(shù)組到終端上,一次只能輸出一個字符串,輸出時,遇到字符串結(jié)束標(biāo)志符結(jié)束,并自動換行。

第一次for循環(huán)時,由于ps指向z,輸出的結(jié)果為z,換行。

第二次for循環(huán)時,由于ps指向y,那么輸出的結(jié)果為yz,換行。

第二次for循環(huán)時,由于ps指向x,那么輸出的結(jié)果為xyz,換行。

因此,本題的正確答案是B。

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

63.A注釋/*和*/,之間計算機(jī)不參與編譯,所以a、b值仍為0,答案選擇A)。

64.

溫馨提示

  • 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

提交評論