2021年廣東省肇慶市全國計算機(jī)等級考試C語言程序設(shè)計_第1頁
2021年廣東省肇慶市全國計算機(jī)等級考試C語言程序設(shè)計_第2頁
2021年廣東省肇慶市全國計算機(jī)等級考試C語言程序設(shè)計_第3頁
2021年廣東省肇慶市全國計算機(jī)等級考試C語言程序設(shè)計_第4頁
2021年廣東省肇慶市全國計算機(jī)等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年廣東省肇慶市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.有下列程序:main{intk=5,n=0;while(k>0){switch(k){dcfault:break;case1:n=n+k;case2:case3:n+=k;}k--;}printf("%d\n".n);}程序運行后的輸出結(jié)果足()。A.0B.4C.6D.7

3.設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學(xué)號,課號,成績),則表sc的關(guān)鍵字(鍵或碼)為()。

A.課號,成績B.學(xué)號,成績C.學(xué)號,課號D.學(xué)號,姓名,成績

4.若有定義“chars1[100]=“name”,s2[50]=“address”,s3[80]=“person”;”,要將它們連接成新串“personnameaddress”,正確的函數(shù)調(diào)用語句是()。

A.strcat(strcat(s1,s2),s3);

B.strcat(s3,strcat(s1,s2);

C.strcat(s3,strcat(s2,s1);

D.strcat(strcat(s2,s1),s3);

5.若x,y,z均被定義為整數(shù),則下列表達(dá)式能正確表達(dá)代數(shù)式1/(x*y*z)的是()。A.1/x*y*zB.1.0/(x*y*z)C.1/(x*y*z)D.1/x/y/(float)z

6.若長度為n的線性表采用順序存儲結(jié)構(gòu),在其第i個位置插入一個新元素的算法的時間復(fù)雜度為()。

A.O(0)B.O(1)C.O(n)D.O(n2)

7.有以下程序:intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=i;i<3;i++)j+=f(i);printf("%d\n",j);}程序運行后的輸出結(jié)果是()。

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

8.設(shè)有條件表達(dá)式:(EXP)?i++:j--,則以下表達(dá)式中與(E)(P)完全等價的是A.(EXP==0)B.(EXP!=0)C.(EXP=-1)D.(EXP!=1)

9.若有定義intw[3][5];,則以下不能正確表示該數(shù)組元素的表達(dá)式是A.*(*w+3)B.*(*w+1)[4]C.*(*(*w+1))D.*(&w[0][0]+1)

10.有以下程序:main(){intp[7]={11,13,14,15,16,17,18),i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k)}執(zhí)行后的輸出結(jié)果是______。

A.58B.56C.45D.24

11.考慮一個特殊的hash函數(shù)h,能將任一字符串hash成一個整數(shù)k,其概率P(k)=2^(-k),k=1,2,…,∞。對一個未知大小的字符串集合S中的每一個元素取hash值所組成的集合為h(S)。若h(S)中最大的元素Maxh(S)=10,那么S的大小的期望是()

A.1024B.512C.5D.10

12.以下能正確定義一維數(shù)組的選項是______。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

13.有以下程序

prt(int*m,intn)

{

inti;

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

m[i]++;

}

main()

{

inta[]={1,2,3,4,5},i;

prt(a,5);

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

printf("%d,",a[i]);

}

程序運行后的輸出結(jié)果是A.A.1,2,3,4,5,

B.3,4,5,6,7,

C.2,3,4,5,6,

D.2,3,4,5,1,

14.下列不正確的轉(zhuǎn)義字符是()。

A.'\\'B.'\t'C.'\n'D.'088'

15.鏈棧與順序棧相比,比較明顯的優(yōu)點是()。

A.插入操作更加方便B.刪除操作更加方便C.不會出現(xiàn)下溢的情況D.不會出現(xiàn)上溢的情況

16.一個順序表的第一個元素的存儲地址是100,每個元素的長度為5,則第7個元素的地址是()。

A.130B.125C.120D.135

17.下面程序的運行結(jié)果是______。#include<stdio.h>#include<string.h>fun(char*w,intn){chart,*s1,*s2;s1=w;s2=w+n-1;while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}}main(){char*p;p="1234567";fun(p,strlen(p));puts(p);}

A.7654321B.1714171C.1711717D.7177171

18.以下函數(shù)findmax擬實現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯導(dǎo)致不能實現(xiàn)預(yù)定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成錯誤的原因是()。A.定義語句“inti,max;”中max未賦初值

B.賦值語句“max=MIN;”中,不應(yīng)給max賦MIN值

C.語句“if(max<x[i])max=x[i];”中判斷條件設(shè)置錯誤

D.賦值語句“max-MIN;”放錯了位置

19.用鏈接方式存儲的隊列,在進(jìn)行刪除運算時()。

A.僅修改頭指針B.僅修改尾指針C.頭、尾指針都要修改D.頭、尾指針可能都要修改

20.堆是一種有用的數(shù)據(jù)結(jié)構(gòu)。下列關(guān)鍵碼序列()是一個堆。

A.94,31,53,23,16,72

B.94,53,31,72,16,23

C.16,53,23,94,31,72

D.16,31,23,94,53,72

二、2.填空題(20題)21.在關(guān)系數(shù)據(jù)庫中把數(shù)據(jù)表示成二維表,每一個二維表稱為【】。

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

23.下面的函數(shù)strcat(str1,str2)實現(xiàn)將字符串str2拼接到字符串str1后面的功能。請?zhí)羁帐怪暾?/p>

char*strcat(str1,str2)

char*str1,*str2;

{char*t=str1;

while(【】)str1++;

while(【】);

return(t);}

24.有以下程序

intsub(intn){retnrn(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運行時輸入:1234<回車>,程序的輸出結(jié)果是______。

25.在面向?qū)ο蠓椒ㄖ校愔g共享屬性和方法的機(jī)制稱為______。

26.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),線性表、棧和隊列都屬于【】。

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

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

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

}

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

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

30.有以下程序:

voidf(inty,int*x)

{y=y+*x;*x=*x+y;}

main()

{intx=2,y=4;

f(y,&x);

ptintf("%d%d\n",x,y);

}

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

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

32.以下條件表達(dá)式可計算:1+|a|的值,請?zhí)羁铡?/p>

a>=0?【】:【】

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

#include<stdio.h>

main()

{inta=2,b=-1,C=2;

if(a<B)

if(b<O)c=0;

elsec++;

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

}

34.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu))改變時,不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的_______。

以下程序的輸出結(jié)果是#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prr(&a,&b,&c);}

35.下面程序的功能是將字符串s中所有的字符c刪除,補(bǔ)足所缺語句。

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

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

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

s[j]='\0';

puts(s);

}

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

main()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%",n[i]);

}

37.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>

main()

{inti,a[20],sum,count;

sum=count=0;

for(i=0;i<20;i++)scanf("%d",【】);

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

{if(a[i]>0)

{count++;

sum+=【】;

}

}

printf("sum=%d,count=%d\n",sum,count);

}

38.買來一張新盤后,在存入文件前,必須進(jìn)行【】處理。

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

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

intx=0,y=0;

while(x<15)y++,x+=++y;

pfintf("%d,%d",y,x);

三、1.選擇題(20題)41.若a=1,b=2,則a|b的值是______。

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

42.s1和s2已正確定義并分別指向兩個字符串。若要求:當(dāng)s1所指串大于s2所指串時,執(zhí)行語句S:則以下選項中正確的是

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,s1)>0)S:

D.if(strcmp)(s1,s2)>0)S;

43.fgets(str,n,fp)函數(shù)從文件中讀入一個字符串,以下錯誤的敘述是()。

A.字符串讀入后會自動加入'\0'

B.fp是指向該文件的文件型指針

C.fgets函數(shù)將從文件中最多讀入n個字符

D.fgets函數(shù)將從文件中最多讀入n-1個字符

44.有以下程序段

intj;floaty;charname[50];

scanf("%2d%f%s",&j,&y,name);

當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為

A.55566.0B.566.0C.7777.0D.566777.0

45.數(shù)據(jù)的存儲結(jié)構(gòu)是指______。

A.數(shù)據(jù)所占的存儲空間量B.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的表示C.數(shù)據(jù)在計算機(jī)中的順序存儲方式D.存儲在外存中的數(shù)據(jù)

46.棧和隊列的共同點是()。

A.都是先進(jìn)后出B.都是先進(jìn)先出C.只允許在端點處插入和刪除元素D.沒有共同點

47.假設(shè)有如下定義:structa{intn;floatk}data,*p;若要使p指向data中的成員n,正確的賦值語句是

A.p=&data.n;

B.*p=data.n;

C.p=(structa*)&data.n;

D.p=(structa*)data.n;

48.下列程序的運行結(jié)果是()。main(){inta=-5,b=1,c=1;intx=0,Y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>0)if(c<=0)y=x-y;}elseif(c>0)Y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}

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

49.在結(jié)構(gòu)化程序設(shè)計中,模塊劃分的原則是()。

A.各模塊應(yīng)包括盡量多的功能

B.各模塊的規(guī)模應(yīng)盡量大

C.各模塊之間的聯(lián)系應(yīng)盡量緊密

D.模塊內(nèi)具有高內(nèi)聚度,模塊間具有低耦合度

50.有以下程序:intx=1,y=2;voidfunl(){x=3;y=4;}voidfun2(intx,inty){printf("%d,%d,\n",x,y);}main(){funl();printf("%d,%d,"x,y);fun2(5,6);}程序的運行結(jié)果是()

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

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

52.有以下程序structSTU{charnum[10];floatscore[3];};main(){structSTUs[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p=s;inti;floatsum=0;for(i-0;i<3,i++)sum=sum+p->score[i];printf("%6.2f\n",sum};}程序運行后的輸出結(jié)果是

A.260B.270C.280D.285

53.設(shè)x,y和z都是血型變量,且x=3,y=4,z=5,則下面表達(dá)式中,值為0的表達(dá)式是

A.x&&y

B.x<=y

C.x‖++y&&y-z

D.!(x<y&&!z‖1)

54.以下程序的輸出結(jié)果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],[3][0]);}

A.650B.1470C.5430D.輸出值不定

55.一些重要的程序語言(如C語言和Pascal語言)允許過程的遞歸調(diào)用。而實現(xiàn)遞歸調(diào)用中的存儲分配通常用()。A.A.棧B.堆C.數(shù)組D.鏈表

56.若有定義intb[8],*p=b;則p+6表示()。

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

57.C語言中允許用外部說明來指定變量、函數(shù)和其他標(biāo)識符的特征,這里所說的外部指的是()。

A.冠以關(guān)鍵字externB.位置在函數(shù)體外部C.作用范圍是全程的D.位置在函數(shù)的外部

58.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對a數(shù)組元素不正確的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

59.以下程序的輸出結(jié)果是______。#include<stdio.h>#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf((“%d\n”,a);}A.8B.9C.17D.20

60.以下能正確定義一維數(shù)組的選項是

A.inta[5]={0,1,2,3,4,5};

B.chara[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};

C.chara={′A′,′B′,′C′};

D.inta[5]="0123";

四、選擇題(20題)61.設(shè)有如下函數(shù)定義:

若執(zhí)行調(diào)用語句“l(fā)l=fm(3);”,則函數(shù)tim總共被調(diào)用的次數(shù)是()。

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

62.有以下程序

63.

64.

65.

66.交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運算符。A.A.&B.^C.||D.~

67.閱讀以下程序及對程序功能的描述,其中正確的描述是

#include<stdio.h>

main()

{

FILE*in,*out;

charch,infile[10],outfile[10];

printf("Entertheinfilename:\n");

scanf("%s",infile);

printf("Entertheoutfilename:\n");

scanf("%s",outfile);

if((in=fopen(infile,"r"))==NULL)

{

printf("cannotopeninfile\n");

exit(0);

}

if((out=fopen(outfile,"w"))==NULL)

{

printf("cannotopenoutfile\n");

exit(0);

}

while(!feof(in))fputc(fgetc(in),out);

fclose(in);

fclose(out);

}

A.程序完成將磁盤文件的信息在屏幕上顯示的功能

B.程序完成將兩個磁盤文件合二為一的功能

C.程序完成將一個磁盤文件復(fù)制到另一個磁盤文件中

D.程序完成將兩個磁盤文件合并后在屏幕上輸出

68.以下不能正確定義二維數(shù)組的選項是()。

A.

B.

C.

D.

69.

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

main

{inta=3:

printf("%d\n",(a+a-=a*a));

}

A.-6B.12C.0D.-12

70.作為信息處理熱點技術(shù)之一的“多媒體技術(shù)”中的媒體,強(qiáng)調(diào)的是()。

A.存儲媒體B.表現(xiàn)媒體C.傳輸媒體D.感覺媒體

71.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結(jié)果是()。

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

72.合法的數(shù)組定義是()。

A.

B.

C.

D.

73.

74.有以下程序:

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

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

75.

76.下列數(shù)據(jù)結(jié)構(gòu)中屬于非線性結(jié)構(gòu)的是()。

A.隊列

B.線性表

C.二叉樹

D.棧

77.以下程序的運行結(jié)果是()。

A.m=4k=5i=5k=5

B.m=4k=4i=5k=5

C.m=4k=4i=4k=5

D.m=4k=5i=4k=5

78.

79.在結(jié)構(gòu)化方法中,軟件功能分解屬于下列軟件開發(fā)中的階段是______。

A.詳細(xì)設(shè)計B.需求分析C.總體設(shè)計D.編程調(diào)試

80.下列鏈表中,其邏輯結(jié)構(gòu)屬于非線性結(jié)構(gòu)的是()0、

A.雙向鏈表

B.帶鏈的棧

C.二叉鏈表

D.循環(huán)鏈表

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:將長整型數(shù)中各位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為87653142時,t中的數(shù)為7531。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾析下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫程序,實現(xiàn)矩陣(3行、3列)的轉(zhuǎn)置(即行列互換)。例如,若輸入下面的矩陣:100200300400500600700800900則程序輸出:100400700200500800300600900注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:11#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4voidfun(intarray[3][3])5{67}8voidmain()9{10FILE*wf;11inti,j;12intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};13system("CLS");14for(i=0;i<3;i++)15{for(j=0;j<3;j++)16printf("%7d",array[i][j]);17printf("\n");18}19fun(array);20printf("Convertedarray:\n");21for(i=0;i<3;i++)22{for(j=0;j<3;j++)23printf("%7d",array[i][j]);24printf("\n");25}26/*********found*********/27wf=fopen("out.datn,"w");28for(i=0;i<3;i++)29{for(j=0;j<3;j++)30fprintf(wf,"%7dn,array[i][j]);31fprintf(wf,"\n");32}33fclose(wf);34/*********found********/35}

參考答案

1.D

2.D本題主要考查while循環(huán)語句和switchcase語句的使用方法。其執(zhí)行步驟為:k=5時,跳出switch語句,然后k自減1;當(dāng)k=4時,跳出switch語句,然后k自減1;當(dāng)k=3時,n=13+k=0+3=3,跳出switch語句,然后k自減1;當(dāng)k=2時n=n+k=3+2=5,跳出switch語句,然后k自減l;當(dāng)k=1時,case1:n=n+k一5+1=6,沒有break繼續(xù)執(zhí)行CaSe3;n=n+k=6+1=7,跳出switch語句,然后k自減1;當(dāng)k=0時,退出循環(huán),所以輸出結(jié)果為7。

3.C學(xué)號是學(xué)生表S的主鍵,課號是課程表C的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個表能夠直接聯(lián)系且能唯一定義的學(xué)號和課號,所以選擇C項。

4.Bstrcat函數(shù)是字符串連接函數(shù),調(diào)用形式為strcat(s1,s2)。其功能是將s2指向的字符串的內(nèi)容連接到s1指向的存儲空間中,并返回s1的地址。由題意可知,新串首地址為s3,所以s3應(yīng)該是第一參數(shù),選項A、D錯誤。同理,新串中除了S3所指的字符串,剩下的字符串為“nameaddress”,即首地址為s1,所以調(diào)用strcat函數(shù),s1是第一參數(shù)。所以正確的函數(shù)調(diào)用語句為“strcat(s3,strcat(s1,s2))”。故本題答案為B選項。

5.B

6.C

7.B解析:通過分析不難寫出,f()函數(shù)的數(shù)學(xué)表達(dá)式為:

f(n)=1n=l;

f(n)=f(-1)+1n≠1;

在主函數(shù)中for循環(huán)執(zhí)行了兩次函數(shù)調(diào)用f(i)。第一次:i為1,調(diào)用f(1)得到返回值1,并把它加到j(luò)中,j的值為1。第二次i為2,調(diào)用f(n),根據(jù)遞歸公式可知f(2)=f(1)+1,得到返回值2并把它加到j(luò)中,j的值為3。所以最后輸出,i的值為3。

8.B解析:在C語言中,邏輯表達(dá)式的結(jié)果只有兩種情況“tree”和“false”。如果要把一個邏輯值看成一個整數(shù)的話,true等于1;false等于0。如果要把一個整數(shù)看成一個邏輯值的話,非0等于true:0等于false。由此可見,如果EXP表達(dá)式的結(jié)果為0的話;(EXP)為假:(EXP==0)為真;(EXP!=O)為假;(EXP==1)為假;(EXP!=1)為真。如果EXP表達(dá)式的結(jié)果為非0的話:(EXP)為真:(EXP=0)為假;(EXP!=0)為真;(EXP=1)結(jié)果不定;(EXP!=1)結(jié)果不定。綜上所述,只有(EXP!=0)完全等價于表達(dá)式(EXP)。故應(yīng)該選擇B。

9.C在C語言中,二維數(shù)組的名字表示的是二維數(shù)組的地址,表達(dá)式*(W+1)表示的是二維數(shù)組的第一行的第二個元素。在其前面再加上*(*(w+1))就是錯誤的表達(dá)式。

10.D解析:程序中while語句的循環(huán)條件為i<7&&p[i]%2。當(dāng)i=0時,條件成立,k=k+p[0]=11;當(dāng)i=1時,條件仍成立,k=k+p[1]=11+13=24;當(dāng)i=2時,p[2]%2=0條件不成立,結(jié)束while循環(huán),所以k=24。

11.A

12.B解析:選項A)定義的是長度為5的數(shù)組元素,但初值有6個元素,所以錯誤;選項C)不符合數(shù)組定義形式,數(shù)組名后應(yīng)加上“[];選項D)的類型說明符錯誤,應(yīng)改為char;選項B)中的0,1,2,3,4,5分別表示對應(yīng)字符的ASCII碼,所以正確。

13.C用數(shù)組名作為函數(shù)實參時,不是把數(shù)組的值傳遞給形參,而是把實參數(shù)組的起始地址傳遞給形參數(shù)組,這樣兩個數(shù)組就共同占用同一段內(nèi)存單元。本題通過“prt(a,5);”將數(shù)組a的首地址傳遞給了指針變量m,使指針變量m指向數(shù)組a的首地址,那么,對指針變量所指向的存儲單元的內(nèi)容的改變就是對數(shù)組a中的元素的改變。題中函數(shù)prt的作用是將指針變量m所指向的存儲單元中的元素值各加上1,故數(shù)組a中的值也隨之變化,所以。輸出的數(shù)組元素的值為2,3,4,5,6,。

14.D解析:'\\\\'是反斜線轉(zhuǎn)義字符:'\\t'是水平跳格轉(zhuǎn)義字符:'\\n'是換行轉(zhuǎn)義字符;C語言中沒有規(guī)定'088'為轉(zhuǎn)義字符。

15.D

16.A

17.C

18.D“max=MIN;”語句應(yīng)放在for循環(huán)之前,否則每次循環(huán)時都重新賦值,值沒有變化。

19.D

20.D

21.關(guān)系或一個關(guān)系關(guān)系或一個關(guān)系解析:在關(guān)系數(shù)據(jù)庫中,把數(shù)據(jù)表示成二維表,而一個二維表就是一個關(guān)系。

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

23.*str1或*str1!='\0'或*str1!=0或*str1!=NUL*str1++=*str2++或*str1++=*str2*str2++*str1或*str1!='\\0'或*str1!=0或*str1!=NUL\r\n*str1++=*str2++或*str1++=*str2,*str2++解析:函數(shù)strcat(str1,str2)實現(xiàn)將字符串str2連接到字符串str1后面,所以首先要找到字符串str1的串尾,根據(jù)C語言的語法規(guī)定,一個串的串尾—定是—個隱含字符“\\0”,而在程序中,對字符串中字符的訪問是通過兩個指針變量來完成的,因此要找到字符串str1的串尾,要判斷:str1是否為“\\0”,要找到字符串str2的串尾,要判斷*str2是否為“\\0”,程序中必須以使字符串中字符逐—順序體現(xiàn),所以在題中我們應(yīng)填寫“*str1”和“*str1++=*str2++”。

24.1010解析:本題程序中定義了一個函數(shù)sub(),用來計算一個整數(shù)整除10的商和余數(shù)的和。在主函數(shù)中,首先用scanf()函數(shù)讀入一個十進(jìn)制整數(shù)1234,然后對1234三次嵌套調(diào)用函數(shù)svb()。首先看最里層的調(diào)用,應(yīng)該返回的值是123+4=127;然后中間一層調(diào)用應(yīng)該返回的是12+7=19;所以最外層調(diào)用返回1+9=10。故最后輸出10。

25.繼承繼承解析:在面向?qū)ο蟮某绦蛟O(shè)計方法中,某些屬性和方法是可以共享的,由于類從父類中繼承而來,這樣提高了軟件的可重用性。

26.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:本題考查了數(shù)據(jù)結(jié)構(gòu)的基本概念。與棧類似,隊列也是線性表,可以采用鏈?zhǔn)酱鎯Y(jié)構(gòu),所以帶鏈的隊列屬于線性結(jié)構(gòu)。

27.8080解析:本題考查的知識點是共用體數(shù)組變量所占內(nèi)存的長度。數(shù)組a是共用體變量,共用體類型變量所占的內(nèi)存長度為最大成員的長度,即單精度數(shù)組的長度,為4×4=16,因此,數(shù)組a所占的內(nèi)存長度為5×16=80,所以最后輸出的s的值為80。

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

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

30.8484解析:“值傳遞”指實參將值傳遞給形參后,實參與形參再無聯(lián)系。也就是說對行參的改變將不影響實參;地址傳遞是指地址或數(shù)組名作為形參時的參數(shù)傳遞,這種情況下對形參的改變將對實參產(chǎn)生影響。函數(shù)f(y,*x)的作用是讓y的值加上指針x所指向變量的值,讓指針x所指向變量的值加上y的值。由于形參y是傳值的,形參x是傳地址的,故調(diào)用該函數(shù)后,作為實參y的值將不改變,而實參x的值將改變,故最后輸出的y值為4,而x的值為8。

31.3535解析:函數(shù)swap(int*a,int*b)的功能是實現(xiàn)*a和*b中兩個數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。

32.1+a1-a1+a\r\n1-a解析:因為題目中求的是1+|a|的值,即1和a的絕對值之和。所以根據(jù)數(shù)學(xué)中求絕對值的規(guī)則,當(dāng)a>=0時,絕對值取本身,當(dāng)a<0時,絕對值取相反數(shù),再結(jié)合條件運算符的計算規(guī)則可得到本題的答案為a>=0。注意:逗號表達(dá)式的求值規(guī)則。

33.22解析:分析程序,a=2,b=-1,c=2時,if語句的表達(dá)式a<b不成立,不再往下判斷,直接退出if語句,執(zhí)行后面的輸出語句,程序結(jié)束。在這個程序中a、b、c的值沒做任何改變。

34.B

35.s[j++]=s[i]

36.1371513715解析:本題中數(shù)組n有5個元素且初值為0,以下為for循環(huán)的執(zhí)行過程。

第1次循環(huán):循環(huán)前i=1,執(zhí)行循環(huán)語句n[1]=n[1-1)*2+1=n[0]*2+1=1,輸出1;

第2次循環(huán):循環(huán)前i=2,執(zhí)行循環(huán)語句n[2]=n[2-1)*2+1=n[1]*2+1=1*2+1=3,輸出3;

第3次循環(huán):循環(huán)前i=3,執(zhí)行循環(huán)語句n[3]=n[3-1]*2+1=n[2]*2+1=3*2+1=7,輸出7;

第4次循環(huán):循環(huán)前i=4,執(zhí)行循環(huán)語句n[4]=n[4-1)*2+1=n[3]*2+1=7*2+1=15,輸出15;

所以程序的運行結(jié)果為:13715。

37.&a[i]或a+ia[i]或*(a+i)&a[i]或a+i\r\na[i]或*(a+i)解析:主函數(shù)中一開始定義了一個長度為20的整型數(shù)組,然后通過一個循環(huán),循環(huán)20次給它的每個元素賦初值,所以在第一個空格處應(yīng)填各個元素的地址,即填&a[i]或a+i,然后再通過一個循環(huán)執(zhí)行20次,每循環(huán)一次,先判斷該循環(huán)是否大于0,如果大于0將其累加到變量sum中,所以第二個空格處應(yīng)該填入數(shù)組元素,所以應(yīng)該填a或*(a+i)。

38.格式化(或初始化、FORMAT)格式化(或初始化、FORMAT)

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

40.8208,20解析:本題考查while循環(huán)和++運算符的運用。x=0符合條件x<15,則執(zhí)行y++,x+=++y后,y=1,x=0+2=2后y=2,符合條件繼續(xù)循環(huán),y=3,x=x+4=6后y=4,再循環(huán)y=5,x=x+6=6+6=12后,y=6,繼續(xù)循環(huán)y=7,x=x+8=12+8=20,此時y=8。

41.D

42.D解析:在C語言中字符串的比較用strcmp()函數(shù),該函數(shù)有兩個參數(shù),分別為被比較的兩個字符串。如果第一個字符串大于第二個字符串返回值大于0,若小于返回值小于0,相等返回值為0.字符串比較大小的標(biāo)準(zhǔn)是從第一個字符開始依次向右比較,遇到某一個字符大,該字符所在的字符串就是較大的字符串,如果遇到某一個字符小,該字符所在的字符串就是較小的字符串。本題中要求當(dāng)s1所指字符串大于s2所指串時,執(zhí)行語句s,因此應(yīng)該為strcmp(s1,s2)>0或者strcmp(s2,s1)<0,所以,4個選項中選項D符合題意。

43.C解析:字符串輸入函數(shù)fgets()的調(diào)用形式為:fgets(s,n,fp)。s可以是一個字符數(shù)組名,或是指向字符串的指針;n為要讀取的最多的字符個數(shù):fp是指向該文件的文件型指針。字符串輸入函數(shù)的功能是:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串存放到字符數(shù)組s中。

44.B解析:本題考查通過scanf函數(shù)輸入數(shù)據(jù)時的格式控制問題。變量j的格式控制為“%2d”,即只接收輸入數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入都會被保存到變量y中,因為y為浮點型數(shù)據(jù),所以輸出結(jié)果為選項B)。

45.B解析:數(shù)據(jù)元素在計算機(jī)存儲空間中的位置關(guān)系與它們的邏輯關(guān)系不一定是相同的,而且一般不可能相同。數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu),也稱數(shù)據(jù)的物理結(jié)構(gòu)。

46.C棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進(jìn)行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進(jìn)行插入或刪除操作,是一種“后進(jìn)先出”的線性表;而隊列只允許在表的一端進(jìn)行插入操作,在另一端進(jìn)行刪除操作,是一種“先進(jìn)先出”的線性表:本題答案為C)。

47.C解析:可以通過強(qiáng)制類型轉(zhuǎn)換(structa*)完成指針賦值。選項A)中&data.n取的是結(jié)構(gòu)體中成員的地址而不是結(jié)構(gòu)的地址,盡管這兩個地址的值是相同的,但仍然不允許進(jìn)行相互賦值;選項B)中的指針p還沒有指向一個具體的空間,給其賦值沒有意義;選項D)把一個整型變量強(qiáng)制轉(zhuǎn)化為結(jié)構(gòu)類型的指針沒有任何實在意義。

48.A解析:本題考查ifelse語句的使用。先判斷第1個if語句,因為c=1>0,所以x=x+y=0+2=2。第1個if語句,因為a=-5<0,所以進(jìn)入下列的復(fù)合語句。經(jīng)判斷發(fā)現(xiàn),復(fù)合語句中第2個if語句的條件均不滿足,不執(zhí)行任何語句退出,在這個過程中y和z的值沒有發(fā)生變化。

49.D解析:本題考查軟件工程中軟件設(shè)計的概念和原理。人們在開發(fā)計算機(jī)軟件的長期實踐中積累了豐富的經(jīng)驗,總結(jié)這些經(jīng)驗得到如下的啟發(fā)式規(guī)則:

(1)改進(jìn)軟件結(jié)構(gòu),提高模塊獨立性;通過模塊的分解或合并,力求降低耦合提高內(nèi)聚。低耦合也就是降低不同模塊間相互依賴的緊密程度,高內(nèi)聚是提高一個模塊內(nèi)各元素彼此結(jié)合的緊密程度。

(2)模塊的規(guī)模應(yīng)適中。一個模塊的規(guī)模不應(yīng)過大,過大的模塊往往是由于分解不夠充分:過小的模塊開銷大于有益操作,而且模塊過多將使系統(tǒng)接口復(fù)雜。因此過小的模塊有時不值得單獨存在。

(3)模塊的功能應(yīng)該可以預(yù)測,但也要防止模塊功能過分局限。如果模塊包含的功能太多,則不能體現(xiàn)模塊化設(shè)計的特點:如果模塊的功能過分的局限,使用范圍就過分狹窄。

經(jīng)過上述分析,本題的正確答案是選項D。

50.C

51.D

52.B解析:本題考查的知識點是結(jié)構(gòu)體數(shù)組元素的成員元素的引用。程序中首先定義了一個結(jié)構(gòu)體,其成員為一字符數(shù)組和一浮點型數(shù)組。在main()首先定義了一個結(jié)構(gòu)體數(shù)組并初始化.接下來在for循環(huán)中遍歷了結(jié)構(gòu)體數(shù)組中的第一個元素中數(shù)組成員即{'20021',90,95,85'}循環(huán)結(jié)果為90+95+85=270最后sum為270,又輸出格式為“%6.2f\\n”要求保留兩位小數(shù)故最后輸出為270.00。所以4個選項中B正確。

53.D解析:該題考查邏輯與“&&”和邏輯或“‖”以及邏輯非“!”符號的用法。選項A)即3&&4為真;選項B)即3<=4為真;選項C)是一個邏輯或與邏輯與的混合運算,只要執(zhí)行了邏輯或左半部分,程序?qū)⒅苯油V箞?zhí)行邏輯或右半部分程序,因為x的值為真;此時選項C)變?yōu)?&&-1為真。選項D)不用計算,括號內(nèi)邏輯或右邊的值為1,因而括號內(nèi)的值為1,再進(jìn)行邏輯非運算得0。

54.A解析:對未給出初始值的整數(shù)數(shù)組元素,被默認(rèn)初始化為零。

55.A解析:一些較流行的程序語言允許過程的遞歸調(diào)用。遞歸調(diào)用就是過程調(diào)用本身。遞歸實現(xiàn)的是:當(dāng)過程每一次執(zhí)行后,都能返回到最近一次調(diào)用它的過程中。這樣各調(diào)用點之間形成一種后進(jìn)先出關(guān)系,而棧結(jié)構(gòu)正適合來存儲這些調(diào)用點。選項A正確。

56.B解析:指針中存放的是變量的地址,指針也可以進(jìn)行增減運算,這時指針移動的最小單位是一個存儲單元,而不是一個字節(jié)。所以題中將p+6指的是將指針向后移動了6個存儲單元,指向b[6],存放的是b[6]的地址。

57.DC語言中允許用位置在函數(shù)外部的說明來指定變量、函數(shù)和其他標(biāo)識符的特征。

58.D解析:通常,引用一個數(shù)組元素可以用下標(biāo)法,如a[P-a]形式,或指針法,如*(&a[i])的形式。本題中a[9]=9,a[10]顯然超出了數(shù)組范圍,注意,數(shù)組的下標(biāo)是從0開始的。

59.B

60.B解析:選項A)中,定義的初值個數(shù)大于數(shù)組的長度;選項C)中,數(shù)組名后少了中括號;選項D)中,整型數(shù)組不能賦予字符串。

61.B首先n=fun(3),3被當(dāng)作參數(shù)傳遞進(jìn)去,這就進(jìn)行了-次調(diào)用,3被當(dāng)做參數(shù)傳進(jìn)去后,程序會執(zhí)行這句deerctlu"nfun(k-1)+1;這就調(diào)用了第二次,而參數(shù)是3—1也就是2。2被當(dāng)做參數(shù)傳進(jìn)去后,程序會執(zhí)行這句elseremmfun(k—I)+1;這就調(diào)用了第三次,而參數(shù)是2-1也就是1。1被當(dāng)做參數(shù)傳進(jìn)去后,程序會執(zhí)行這句elseif(k==1)return1:不再遞歸調(diào)用,所以最終結(jié)果為3次。

62.A第一個while循環(huán)跳過字符串前面的t,第二個while循環(huán)將剩余的字符串賦值給字符串b,所以fun函數(shù)功能是刪除字符串s的前置*賦值給t。

63.Afwrite函數(shù)將數(shù)組a寫入文件,寫入兩遍,讀出后為選項A)的值,所以選擇A)。

64.B

65.A

66.B解析:按邏輯位運算的特定作用主要有3點:①用按位與運算將特定位清0或保留特定位:②用按位或運算將特定的位置設(shè)置為1;③用按位異或運算將某個變量的特定位翻轉(zhuǎn)或交換兩個變量的值。

67.C本題主要考查文件的操作。從選項中我們可以知道,本題是對兩個磁盤文件進(jìn)行相關(guān)操作。

在程序中,首先定義了兩個文件類的指針變量in和out,然后定義了兩個字符型數(shù)組分別用來保存兩個文件的名字,這兩個文件即是要被操作的文件。接著分別輸入要操作的兩個文件的名字,并分別判斷文件是否為空文件,如果是,則輸出“文件不能被打開”的提示,并返回。然后用一個循環(huán)將一個磁盤文件復(fù)制到另一個磁盤文件中。最后關(guān)閉兩個被操作的文件。因此本題的答案選C。

68.D本題的考查點是二維數(shù)組的定義和初始化。

選項A)定義的數(shù)組中各元素實際上是這樣的:

1,0

2.O

選項B)定義的數(shù)組中各元素實際上是這樣的:

1,2

3.4

選項c)定義的數(shù)組中各元素實際上是這樣的:

1,0

2.3

選項D)錯在省略了第2維的長度。C中在對數(shù)組進(jìn)行初始化時,如果對全部元素都賦初值(即提供全部初始數(shù)據(jù)),則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省。

69.D

\n本題可以寫成:a+a+(a-(a*a)),所以*的優(yōu)先級最高,其次是-=的,+的優(yōu)先級最低,因此先求a-=a*a=9,表達(dá)式變?yōu)閍+a+-=9,a即a=a-9=-6,再次變?yōu)閍+(-6)=-12,故選擇D選項。

\n

70.D媒體分為感覺媒體、表示媒體、存儲媒體、傳輸媒體和表現(xiàn)媒體五種,“多媒體技術(shù)”中的媒體強(qiáng)調(diào)的是感覺媒體。

71.AC語言規(guī)定case后面跟的必須是整型常量表達(dá)式。進(jìn)入case后,如果沒有遇到break語句就會一直往下執(zhí)行,后面其他case或default分支的語句也會被執(zhí)行到,直到遇到break,或者執(zhí)行到整個switch語句塊的末尾。題目中給出了三個case語句:case0、case1、case2。當(dāng)x為1時,從case1語句開始執(zhí)行,因為沒有break語句,將一直執(zhí)行到函數(shù)末尾結(jié)束,即執(zhí)行case1、case2兩條語句。執(zhí)行完case1時,a=1,b=0;執(zhí)行完case2時,a=2,b=1。

72.B選項A),字符串”string”中的元素是char類型,而數(shù)組a中存放的是int類型的元素,不匹配。選項c),a中只能存放字符類型數(shù)據(jù),而”0”是字符串。選項D),定義二維數(shù)組時,列數(shù)不可省略。

73.A

74.DmaUoc函數(shù)動態(tài)分配一個整型的內(nèi)存空間,然后把函數(shù)返回的地址用(int{)強(qiáng)制類型轉(zhuǎn)換為整型指針,再把它賦給a,b,c,即讓指針變量a,b,c都指向剛申請的內(nèi)存空間。所以只有最后一個賦值語句+C=3的值保留在了該空間內(nèi),因為a、b、C三個指針變量均指向該空間,所以打印該空間內(nèi)的數(shù)值為3。

75.D

76.C線性結(jié)構(gòu)滿足兩個條件:有且只有一個根結(jié)點;每個節(jié)點最多只有一個前件,也最多只有一個后件。棧、隊列、線性表都屬于線性結(jié)構(gòu),二叉樹是一種非線性結(jié)構(gòu),因為它除葉子節(jié)點外,每個節(jié)點都有兩個后件,不滿足線性結(jié)構(gòu)的條件。

77.B由于在main函數(shù)中,變量i=4,所以

78.A

79.C解析:軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計包括:基于功能層次結(jié)構(gòu)建立系統(tǒng)、按功能劃分成模塊的層次結(jié)構(gòu)、確定每個模塊的功能、建立與已確定的軟件需求的對應(yīng)關(guān)系、確定模塊間的調(diào)用關(guān)系和模塊間的接口、評估模塊劃分的質(zhì)量等方面。詳細(xì)設(shè)計的任務(wù)是:在使用程序設(shè)計語言編制程序以前,對所采用算法的邏輯關(guān)系進(jìn)行分析,設(shè)計出全部必要的過程細(xì)節(jié),并給予清晰的表達(dá)。需求分析是指用戶對目標(biāo)軟件系統(tǒng)在功能、行為、性能、設(shè)計約束等方面的期望。需求分析的任務(wù)是發(fā)現(xiàn)需求、求精、建模和定義需求,通常包括:功能需求、性能需求、環(huán)境需求、可靠性需求、安全保密要求、用戶界面需求、資源使用需求、成本消耗需求、開發(fā)進(jìn)度需求等。編程調(diào)試的任務(wù)是診斷和改正程序中潛在的錯誤。綜上所述。軟件功能分解只能發(fā)生在總體設(shè)計階段。

80.C數(shù)據(jù)的邏輯結(jié)構(gòu)是描述數(shù)據(jù)之間的關(guān)系,分兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。線性結(jié)構(gòu)是n個數(shù)據(jù)元素的有序(次序)集合,指的是數(shù)據(jù)元素之間存在著“一對一”的線性關(guān)系的數(shù)據(jù)結(jié)構(gòu)。常用的線性結(jié)構(gòu)有:線性表,棧,隊列,雙隊列,數(shù)組,串。非線性結(jié)構(gòu)的邏輯特征是一個結(jié)點元素可能對應(yīng)多個直接前驅(qū)和多個后驅(qū)。常見的非線性結(jié)構(gòu)有:樹(二叉樹等),圖(網(wǎng)等),廣義表。

\n

81.(1)錯誤:t=0;

正確:*t=0;

(2)錯誤:if(d%2==0)

正確:if(d%2!=O)或if(d%2==1)

【解析】變量t定義為指針型變量,所以不能對t賦初值,不應(yīng)該是t=0,而是*t=0;題目要求將長整型數(shù)中各位上為奇數(shù)的數(shù)依次取出,因此if語句里應(yīng)該是d%2!=0。此題較簡單,考查的是指針變量作為函數(shù)參數(shù)和奇偶的判斷。

82.1voidfun(intarray[3][3])2{3inti,j,t;4for(i=0;i<3;i++)/*將上三角和下三角對換,實現(xiàn)行列互換*/5for(j=i+l;j<3;j++)6{t=array[i][j];7array[i][j]=array[j][i];8array[j][i]=t;9}10}要實現(xiàn)矩陣轉(zhuǎn)置,即將上三角數(shù)組元素和下三角數(shù)組元素對換,本題通過數(shù)組元素交換方法,完成矩陣轉(zhuǎn)置操作。因為對矩陣轉(zhuǎn)置后仍然存回其本身,所以只能循環(huán)矩陣中的一本程序選擇的是上三角)??刂粕先堑姆椒ㄊ窃趦?nèi)層循環(huán)中從i+1或i開始循環(huán)變量j。2021年廣東省肇慶市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.有下列程序:main{intk=5,n=0;while(k>0){switch(k){dcfault:break;case1:n=n+k;case2:case3:n+=k;}k--;}printf("%d\n".n);}程序運行后的輸出結(jié)果足()。A.0B.4C.6D.7

3.設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學(xué)號,課號,成績),則表sc的關(guān)鍵字(鍵或碼)為()。

A.課號,成績B.學(xué)號,成績C.學(xué)號,課號D.學(xué)號,姓名,成績

4.若有定義“chars1[100]=“name”,s2[50]=“address”,s3[80]=“person”;”,要將它們連接成新串“personnameaddress”,正確的函數(shù)調(diào)用語句是()。

A.strcat(strcat(s1,s2),s3);

B.strcat(s3,strcat(s1,s2);

C.strcat(s3,strcat(s2,s1);

D.strcat(strcat(s2,s1),s3);

5.若x,y,z均被定義為整數(shù),則下列表達(dá)式能正確表達(dá)代數(shù)式1/(x*y*z)的是()。A.1/x*y*zB.1.0/(x*y*z)C.1/(x*y*z)D.1/x/y/(float)z

6.若長度為n的線性表采用順序存儲結(jié)構(gòu),在其第i個位置插入一個新元素的算法的時間復(fù)雜度為()。

A.O(0)B.O(1)C.O(n)D.O(n2)

7.有以下程序:intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=i;i<3;i++)j+=f(i);printf("%d\n",j);}程序運行后的輸出結(jié)果是()。

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

8.設(shè)有條件表達(dá)式:(EXP)?i++:j--,則以下表達(dá)式中與(E)(P)完全等價的是A.(EXP==0)B.(EXP!=0)C.(EXP=-1)D.(EXP!=1)

9.若有定義intw[3][5];,則以下不能正確表示該數(shù)組元素的表達(dá)式是A.*(*w+3)B.*(*w+1)[4]C.*(*(*w+1))D.*(&w[0][0]+1)

10.有以下程序:main(){intp[7]={11,13,14,15,16,17,18),i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k)}執(zhí)行后的輸出結(jié)果是______。

A.58B.56C.45D.24

11.考慮一個特殊的hash函數(shù)h,能將任一字符串hash成一個整數(shù)k,其概率P(k)=2^(-k),k=1,2,…,∞。對一個未知大小的字符串集合S中的每一個元素取hash值所組成的集合為h(S)。若h(S)中最大的元素Maxh(S)=10,那么S的大小的期望是()

A.1024B.512C.5D.10

12.以下能正確定義一維數(shù)組的選項是______。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

13.有以下程序

prt(int*m,intn)

{

inti;

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

m[i]++;

}

main()

{

inta[]={1,2,3,4,5},i;

prt(a,5);

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

printf("%d,",a[i]);

}

程序運行后的輸出結(jié)果是A.A.1,2,3,4,5,

B.3,4,5,6,7,

C.2,3,4,5,6,

D.2,3,4,5,1,

14.下列不正確的轉(zhuǎn)義字符是()。

A.'\\'B.'\t'C.'\n'D.'088'

15.鏈棧與順序棧相比,比較明顯的優(yōu)點是()。

A.插入操作更加方便B.刪除操作更加方便C.不會出現(xiàn)下溢的情況D.不會出現(xiàn)上溢的情況

16.一個順序表的第一個元素的存儲地址是100,每個元素的長度為5,則第7個元素的地址是()。

A.130B.125C.120D.135

17.下面程序的運行結(jié)果是______。#include<stdio.h>#include<string.h>fun(char*w,intn){chart,*s1,*s2;s1=w;s2=w+n-1;while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}}main(){char*p;p="1234567";fun(p,strlen(p));puts(p);}

A.7654321B.1714171C.1711717D.7177171

18.以下函數(shù)findmax擬實現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯導(dǎo)致不能實現(xiàn)預(yù)定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成錯誤的原因是()。A.定義語句“inti,max;”中max未賦初值

B.賦值語句“max=MIN;”中,不應(yīng)給max賦MIN值

C.語句“if(max<x[i])max=x[i];”中判斷條件設(shè)置錯誤

D.賦值語句“max-MIN;”放錯了位置

19.用鏈接方式存儲的隊列,在進(jìn)行刪除運算時()。

A.僅修改頭指針B.僅修改尾指針C.頭、尾指針都要修改D.頭、尾指針可能都要修改

20.堆是一種有用的數(shù)據(jù)結(jié)構(gòu)。下列關(guān)鍵碼序列()是一個堆。

A.94,31,53,23,16,72

B.94,53,31,72,16,23

C.16,53,23,94,31,72

D.16,31,23,94,53,72

二、2.填空題(20題)21.在關(guān)系數(shù)據(jù)庫中把數(shù)據(jù)表示成二維表,每一個二維表稱為【】。

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

23.下面的函數(shù)strcat(str1,str2)實現(xiàn)將字符串str2拼接到字符串str1后面的功能。請?zhí)羁帐怪暾?/p>

char*strcat(str1,str2)

char*str1,*str2;

{char*t=str1;

while(【】)str1++;

while(【】);

return(t);}

24.有以下程序

intsub(intn){retnrn(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運行時輸入:1234<回車>,程序的輸出結(jié)果是______。

25.在面向?qū)ο蠓椒ㄖ校愔g共享屬性和方法的機(jī)制稱為______。

26.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),線性表、棧和隊列都屬于【】。

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

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

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

}

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

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

30.有以下程序:

voidf(inty,int*x)

{y=y+*x;*x=*x+y;}

main()

{intx=2,y=4;

f(y,&x);

ptintf("%d%d\n",x,y);

}

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

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

32.以下條件表達(dá)式可計算:1+|a|的值,請?zhí)羁铡?/p>

a>=0?【】:【】

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

#include<stdio.h>

main()

{inta=2,b=-1,C=2;

if(a<B)

if(b<O)c=0;

elsec++;

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

}

34.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu))改變時,不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的_______。

以下程序的輸出結(jié)果是#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prr(&a,&b,&c);}

35.下面程序的功能是將字符串s中所有的字符c刪除,補(bǔ)足所缺語句。

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

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

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

s[j]='\0';

puts(s);

}

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

main()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%",n[i]);

}

37.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>

main()

{inti,a[20],sum,count;

sum=count=0;

for(i=0;i<20;i++)scanf("%d",【】);

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

{if(a[i]>0)

{count++;

sum+=【】;

}

}

printf("sum=%d,count=%d\n",sum,count);

}

38.買來一張新盤后,在存入文件前,必須進(jìn)行【】處理。

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

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

intx=0,y=0;

while(x<15)y++,x+=++y;

pfintf("%d,%d",y,x);

三、1.選擇題(20題)41.若a=1,b=2,則a|b的值是______。

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

42.s1和s2已正確定義并分別指向兩個字符串。若要求:當(dāng)s1所指串大于s2所指串時,執(zhí)行語句S:則以下選項中正確的是

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,s1)>0)S:

D.if(strcmp)(s1,s2)>0)S;

43.fgets(str,n,fp)函數(shù)從文件中讀入一個字符串,以下錯誤的敘述是()。

A.字符串讀入后會自動加入'\0'

B.fp是指向該文件的文件型指針

C.fgets函數(shù)將從文件中最多讀入n個字符

D.fgets函數(shù)將從文件中最多讀入n-1個字符

44.有以下程序段

intj;floaty;charname[50];

scanf("%2d%f%s",&j,&y,name);

當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為

A.55566.0B.566.0C.7777.0D.566777.0

45.數(shù)據(jù)的存儲結(jié)構(gòu)是指______。

A.數(shù)據(jù)所占的存儲空間量B.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的表示C.數(shù)據(jù)在計算機(jī)中的順序存儲方式D.存儲在外存中的數(shù)據(jù)

46.棧和隊列的共同點是()。

A.都是先進(jìn)后出B.都是先進(jìn)先出C.只允許在端點處插入和刪除元素D.沒有共同點

47.假設(shè)有如下定義:structa{intn;floatk}data,*p;若要使p指向data中的成員n,正確的賦值語句是

A.p=&data.n;

B.*p=data.n;

C.p=(structa*)&data.n;

D.p=(structa*)data.n;

48.下列程序的運行結(jié)果是()。main(){inta=-5,b=1,c=1;intx=0,Y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>0)if(c<=0)y=x-y;}elseif(c>0)Y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}

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

49.在結(jié)構(gòu)化程序設(shè)計中,模塊劃分的原則是()。

A.各模塊應(yīng)包括盡量多的功能

B.各模塊的規(guī)模應(yīng)盡量大

C.各模塊之間的聯(lián)系應(yīng)盡量緊密

D.模塊內(nèi)具有高內(nèi)聚度,模塊間具有低耦合度

50.有以下程序:intx=1,y=2;voidfunl(){x=3;y=4;}voidfun2(intx,inty){printf("%d,%d,\n",x,y);}main(){funl();printf("%d,%d,"x,y);fun2(5,6);}程序的運行結(jié)果是()

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

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

52.有以下程序structSTU{charnum[10];floatscore[3];};main(){structSTUs[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p=s;inti;floatsum=0;for(i-0;i<3,i++)sum=sum+p->score[i];printf("%6.2f\n",sum};}程序運行后的輸出結(jié)果是

A.260B.270C.280D.285

53.設(shè)x,y和z都是血型變量,且x=3,y=4,z=5,則下面表達(dá)式中,值為0的表達(dá)式是

A.x&&y

B.x<=y

C.x‖++y&&y-z

D.!(x<y&&!z‖1)

54.以下程序的輸出結(jié)果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],[3][0]);}

A.650B.1470C.5430D.輸出值不定

55.一些重要的程序語言(如C語言和Pascal語言)允許過程的遞歸調(diào)用。而實現(xiàn)遞歸調(diào)用中的存儲分配通常用()。A.A.棧B.堆C.數(shù)組D.鏈表

56.若有定義intb[8],*p=b;則p+6表示()。

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

57.C語言中允許用外部說明來指定變量、函數(shù)和其他標(biāo)識符的特征,這里所說的外部指的是()。

A.冠以關(guān)鍵字externB.位置在函數(shù)體外部C.作用范圍是全程的D.位置在函數(shù)的外部

58.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對a數(shù)組元素不正確的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

59.以下程序的輸出結(jié)果是______。#include<stdio.h>#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf((“%d\n”,a);}A.8B.9C.17D.20

60.以下能正確定義一維數(shù)組的選項是

A.inta[5]={0,1,2,3,4,5};

B.chara[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};

C.chara={′A′,′B′,′C′};

D.inta[5]="0123";

四、選擇題(20題)61.設(shè)有如下函數(shù)定義:

若執(zhí)行調(diào)用語句“l(fā)l=fm(3);”,則函數(shù)tim總共被調(diào)用的次數(shù)是()。

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

62.有以下程序

63.

64.

65.

66.交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運算符。A.A.&B.^C.||D.~

67.閱讀以下程序及對程序功能的描述,其中正確的描述是

#include<stdio.h>

main()

{

FILE*in,*out;

cha

溫馨提示

  • 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

提交評論