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

下載本文檔

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

文檔簡介

2021-2022年廣東省佛山市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下選項中合法的C語言常量是()。

A.‘C-STR’B.2014.1C.”\1.0D.2EK

2.以下不合法的用尸標識符是()。A.A.804zhangB._hhC.yy614D.If

3.設(shè)有遞歸算法如下試問計算x(x(8))時需要計算()次x函數(shù)。A.8B.9C.16D.18

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

A.數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)必定是一一對應(yīng)的

B.由于計算機存儲空間是向量式的存儲結(jié)構(gòu),因此,數(shù)據(jù)的存儲結(jié)構(gòu)一定是線性結(jié)構(gòu)

C.程序設(shè)計語言中的數(shù)組一般是順序存儲結(jié)構(gòu),因此,利用數(shù)組只能處理線性結(jié)構(gòu)

D.以上三種說法都不對

5.

6.若x,y,z均被定義為整數(shù),則下列表達式能正確表達代數(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

7.

8.若有說明inta[][3]={1,2,3,4,5,6,7,8,9},則a數(shù)組第一維的大小是()。

A.2B.3C.4D.無確定值

9.

10.有以下程序:

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

A.0987654321

B.4321098765

C.5678901234

D.0987651234

11.下列字符數(shù)組初始化語句中,不正確的是()。

A.charc[]=goodmorning;

B.charc[20]="goodmorning";

C.charc[]={a,b,c,d);

D.charc[]={"ffgoodmorning"};

12.下列敘述中錯誤的是()。A.程序可以由多個程序文件組成

B.一個C語言程序只能實現(xiàn)一種算法.

C.程序可以由一個或多個函數(shù)組成

D.一個C函數(shù)可以單獨作為一個C程序文件存在

13.若有定義inta=12,n=5,則表達式a%=(n%2)運算后,a的值()。

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

14.以下敘述中正確的是

A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

15.若有定義語句:intX=10;,則表達式x-=x+X的值為A.-20B.-10C.0D.10

16.有以下程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=l;k--;break;defalut:n=0;k--;case2:case4:n+=2;k--;break:}printf("%d",n);}while(k>0&&n<5);}程序運行后的輸出結(jié)果是()。A.235B.0235C.02356D.2356

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.有以下程序

#include<stdio.h>

intf(intx);

main()

{intn=1,m;

m=f(f(f(n)));printf(”%d\n”,m);

}

intf(intx)

{returnx*2;}

程序運行后的輸出結(jié)果是()。A.1B.2C.4D.8

19.以下能正確定義一維數(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";

20.軟件詳細設(shè)計生產(chǎn)的圖如右圖:該圖是()。

A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

二、2.填空題(20題)21.需求分析的最終結(jié)果是產(chǎn)生【】。

22.開發(fā)軟件所需要的高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象被人們稱之為【】。

23.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。

24.在ER圖中,矩形表示【】。

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

main()

{

inta=1,b=2;

a=a+b;b=a-b;a=a-b;

prrintf("%d,%d\n",a,b);

}

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

27.以下函數(shù)用于求出一個2×4矩陣中的最大元素值。

max_value(arr)

intarr[][4];

{

inti,j,max;

max=arr[O][0];

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

for(j=0;【】;j++)

if(【】>max)max=【】;

return(max);

}

28.以下sum函數(shù)的功能是計算下列級數(shù)之和:

請給函數(shù)中的各變量正確賦初值。

doublesum(douLlex,intn)

{inti;

doublea,b,s;

【】

for(i=1;i<=n;i++){a=a*x;b=b*i;s=s+a/b;}

returns;

}

29.通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為【】。

30.若有以下定義和語句,則使指針p指向值為36的數(shù)組元素的表達式是【】。

inta[10]={19,23,44,17,37,28,49,36},*p;

p=a;

31.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,當(dāng)s<t時返回負值。請?zhí)羁铡?/p>

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

32.設(shè)有定義:FILE*fw;,請將以下打開文件的語句補充完整,以便可以向文本文件readme.txt的最后續(xù)寫內(nèi)容。

fw=fopen("readme.txt",【】);

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

main()

{

intarr[]={30,25,20,15,10,5},*p=arr;

p++;

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

}

34.以下程序?qū)崿F(xiàn)帶有頭結(jié)點的單鏈表的建立,鏈表中每個結(jié)點包含數(shù)據(jù)域data(字符型)和指針域next,所建立鏈表的頭指針由參數(shù)phd傳回調(diào)用程序。在空格處填入正確內(nèi)容。

#include<stdio.h>

#include<stdlib,h>

structnode{

chardata;

structnode*next;

};

voidcreatlist(【】)

{

charch;

structnode*s,*r;

*phd=malloc(sizeof(structnode));

r=*phd;

ch=getchar();

while(ch!='@'){

s=malloc(sizeof(structnode));

s->data=ch;

r->next=s;

r=s;

ch=getchar();

};

r->next=【】;

}

main()

{

structnode*head;

head=NULL;

creatlist(【】)

}

35.若a的值為1,則表達式!a‖++a的值是______。

36.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

37.與表達式a+=b等價的另一書寫形式是______。

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

main()

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

fot(i=0;i<10;i++)art[i]=i;

for(i=1:i<4;i++)k+=arr[i]+i;

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

}

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

#include<stdio,h>

main()

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

if(c=a)printf("%d\n",c);

elseprintf("%d\n",b);}

40.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

三、1.選擇題(20題)41.下列合法的整型常量的表示是

A.98B.oXdeC.32767D.0xDG

42.下列選項中不合法的十六進制數(shù)是()。

A.OxffB.OXllC.OxlgD.OXabc

43.以下合法的賦值語句是()

A.x=y=100B.d--;C.x+y;D.c=int(a+b);

44.下列程序執(zhí)行后輸出的結(jié)果是______。intd=1;fun(intp){intd=5;d+=p++;printh("%d,",d);}main(){inta=3;fuin(a);d+=a++;printf(:%d\n",d);}

A.8,12B.9,13C.8,4D.9,5

45.下面程序段的運行結(jié)果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));

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

46.有以下程序main(){inti,n=0;for(i=2;i<5;i++){do{if(i%3)continue;n++;}while(!i);n++;}printf("n=%d\n",n);}程序執(zhí)行后的輸出結(jié)果是

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

47.有以下程序中若有如下說明和定義語句;charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;…}以下選項中對函數(shù)fun的正確調(diào)用語句是______。

A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s);

48.在C語言中,引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型允許是()。

A.整型表達式B.整型常量C.整型常量或整型表達式D.任何類型的表達式

49.有以下程序:#include<stdio,h>main(){inta=666,b=888;printf("%'d\n",a,b);程序運行后的輸出結(jié)果是()。

A.錯誤信息,B.666C.888D.666,888

50.有以下程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,"k);k=fun(j,m);printf("%d\n",k);}執(zhí)行后的輸出結(jié)果是()。

A.5,5B.5,11C.11,11D.11,5

51.下列說法錯誤的是()。

A.下列結(jié)構(gòu)體定義時,占據(jù)了5個字節(jié)的空間structstudent{intnum;intage;charsex;}

B.結(jié)構(gòu)體的成員名可以與程序中的變量名相同

C.對結(jié)構(gòu)體中的成員可以單獨使用,它的作用相當(dāng)于普通變量

D.結(jié)構(gòu)體可以嵌套定義

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

A.ABCB.ABCDEFC.EBCDEFGD.CBD

53.有以下程序:#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,若運行時輸入帶參數(shù)的命令行是:ex1abcdefg10<回車>則運行的結(jié)果是()。

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

54.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則

D.軟件工程只是解決軟件開發(fā)中的技術(shù)問題

55.當(dāng)運行以下程序時,從鍵盤輸入AhaMA(空格)Aha<CR>,則下面程序的運行結(jié)果是

#include<stdio.h>

main()

{chars[80],c=′a′;

inti=0;

scanf("%s",s);

while(s[i]!=′

{if(s[i]==c)s[i]-32;

elseif(s[i]==c-32)s[i]=s[i]+32;

i++;}

puts(s);}

A.ahaMaB.AbAMaC.AhAMa[空格]ahAD.ahAMa[空格]ahA

56.以下程序段中與語句k=a>b?(b>c?1:0):0;功能等價的是______。

A.if(a>b)&&(b>c))k=1;elsek=();

B.if((a>b)||(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

57.CPU主要由運算器與控制器組成,下列說法中正確的是()

A.運算器主要負責(zé)分析指令,并根據(jù)指令要求做相應(yīng)的運算

B.運算器主要完成對數(shù)據(jù)的運算,包括算術(shù)運算和邏輯運算

C.控制器主要負責(zé)分析指令,并根據(jù)指令要求做相應(yīng)的運算

D.控制器直接控制計算機系統(tǒng)的輸入與輸出系統(tǒng)

58.下列說法不正確的是()。

A.一個C語言源程序可以由一個函數(shù)組成也可以由多個函數(shù)組成

B.main()中的“()”是函數(shù)的參數(shù)部分,括號內(nèi)可為空,但括號不能省略

C.C語言程序是以函數(shù)為基本單位的

D.在C語言程序中,注釋行只能位于一條語句的后面

59.程序的編制與算法的設(shè)計在效率上的關(guān)系是:()

A.相等B.優(yōu)于C.劣于D.不一定

60.設(shè)intx=7,則~x的值是()。

A.-8B.-7C.-1D.1

四、選擇題(20題)61.以下不能輸出字符A的語句是()(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)。

62.

63.

64.有以下程序:

以下敘述中正確的是()。

A.在給P和q數(shù)組置初值時,系統(tǒng)會自動添加字符串結(jié)束符,故輸出的長度都為3

B.由于P數(shù)組中沒有字符串結(jié)束符,長度不能確定;但q數(shù)組中字符長度為3

C.由于q數(shù)組中沒有字符串結(jié)束符,長度不能確定;但P數(shù)組中字符長度為3

D.由于P和q數(shù)組中沒有字符串結(jié)束符,故長度都不能確定

65.

66.以下能定義為用戶標識符的是()。

A.printfB.charC._8abcD.Void

67.設(shè)有定義:char*C;以下選項中能夠使C正確指向一個字符串的是()。

A.charstr()=”string”;C=str;

B.scanf(”%s”,C.;

C.c=getchar();

D.*c=”strin9”;

68.有以下程序:

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

A.1,2,3,0,0,0,0,0,0,0,

B.1,2,3,1,2,3,0,0,0,0,

C.123,0,0,0,0,123,0,0,0,0,

D.1,2,3,0,0,1,2,3,0,0,

69.設(shè)a=l,b=2,c=3,d=4,則表達式:“a<b?a:b<b?a:c<d?a:d”的結(jié)果為()。A.A.4B.3C.2D.1

70.設(shè)a=l,b=2,c=3,d=4,則表達式:“a<b?a:b<b?a:c<d?a:d”的結(jié)果為()。A.4B.3C.2D.1

71.下列關(guān)于棧的描述錯誤的是()。

A.棧按“先進后出”組織數(shù)據(jù)B.棧是特殊的線性表,只能在一端插入或刪除數(shù)據(jù)C.棧具有記憶功能D.棧只能順序存儲

72.(4)下面描述中,符合結(jié)構(gòu)化程序設(shè)計風(fēng)格的是______。

A.使用順序、選擇和重復(fù)三種基本控制結(jié)構(gòu)表示程序的控制邏輯

B.模塊只有一個入口,可以有多個出口

C.注重提高程序的執(zhí)行效率

D.不使用goto語句

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

A.abe,a23B.abe,123C.123,abeD.321,cba

74.以下選項中,不能作為合法常量的是()。

A.1.234e05B.1.234e+5C.1.234e0.5D.1.234e0

75.

76.

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

main

{charch[3][4]={"123","456","78"),*p[3];inti;

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

for(i=0;i<3;i++)printf("%s",p[i]);}

A.123456780B.123456780C.12345678D.147

77.

78.

79.有以下程序:

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

A.*2*6B.}3*5一C.}5D.*7

80.

五、程序改錯題(1題)81.下列給定程序中proc()函數(shù)的功能是:將n個無序整數(shù)按從小到大排序。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)fun(),其功能是:找出2M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:

參考答案

1.B所謂常量,是指在程序運行的過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。選項A是字符串,需要使用雙引號;選項C不是合法的常量形式;選項D為實型常量中的指數(shù)形式,但指數(shù)形式e(E)之前必須是數(shù)字,之后必須為整數(shù)。故本題答案為B選項。

2.AC語言規(guī)定,標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或下劃線。

3.D

4.D解析:一般來說,一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),因此,數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)不一定是一一對應(yīng)的。選項A中的說法是錯誤的。雖然計算機的存儲空間是向量式的存儲結(jié)構(gòu),但由于一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),例如,線性鏈表是線性表的鏈式存儲結(jié)構(gòu)。一般來說,性表的鏈式存儲結(jié)構(gòu)中,各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。性鏈表中,各數(shù)據(jù)元素之間的前后件關(guān)系是由各結(jié)點的指針域來指示的。因此,數(shù)據(jù)的存儲結(jié)構(gòu)不一定是線性結(jié)構(gòu)。選項B中的說法也是錯誤的。雖然程序設(shè)計語言中的數(shù)組一般是順序存儲結(jié)構(gòu),但是,利用數(shù)組也能處理非線性結(jié)構(gòu)。例如,滿二叉樹與完全二叉樹是非線性結(jié)構(gòu),但對于滿二叉樹與完全二叉樹來說,根據(jù)完全二叉樹的性質(zhì)6,可以按層序進行順序存儲,即利用程序設(shè)計語言中的數(shù)組來存儲,這樣,不僅節(jié)省了存儲空間,又能方便地確定每一個結(jié)點的父結(jié)點與左右子結(jié)點的位置。對于一般的二叉樹來說,也可以將二叉樹中每一個結(jié)點的左指針、右指針以及數(shù)據(jù)域分別用三個數(shù)組中的對應(yīng)元素來存儲,即實際上也是利用了程序設(shè)計語言中的數(shù)組來處理二叉樹這樣的非線性結(jié)構(gòu)。選項C中的說法也是錯誤的。綜上所述,選項A、B與C中的說法都是錯誤的。

5.D

6.B

7.D

8.B解析:本題考查二維數(shù)組第一維的大小如何確定。二維數(shù)組第一維的大小由下列規(guī)則確定:①當(dāng)初值的個數(shù)能被第二維的常量表達式的值除盡時,所得商數(shù)就是第一維的大?。孩诋?dāng)初值的個數(shù)不能被第二維的常量表達式的值除盡時,第一維的大小等于所得商數(shù)加1。

9.D

10.C函數(shù)fun(int*s,intn1,intn2)的功能是對數(shù)組s中的元素進行首尾互相調(diào)換。所以在主函數(shù)中,當(dāng)fun(a,0,3)執(zhí)行完后,數(shù)組a[12]={4,3,2,1,5,6,7,8,9,0};再執(zhí)行fun(a,4,9),數(shù)組a[12]={4,3,2,1,0,9,8,7,6,5};再執(zhí)行fun(a,0,9)后,數(shù)組a[12]={5,6,7,8,9,0,1,2,3,4}。所以正確答案為c)。

11.A本題考查兩個概念:①用單引號括起來的一個字符常量只能存放一個字符;②℃語言中沒有字符串變量,只能用字符數(shù)組來存儲字符串。

12.B在一個C語言程序中可以進行多種算法的實現(xiàn),對算法的個數(shù)沒有規(guī)定,所以B)錯誤。

13.A

14.C算法具有的5個特性是:有窮性、確定性、可行性、有0個或多個輸入、有一個或多個輸出。所以說,用C程序?qū)崿F(xiàn)的算法可以沒有輸入,但必須要有輸出。因此本題答案選C。

15.B解析:x-=x+x可化為:x=x-(x+x),由于x初始值為10,所以計算后,x=10-20=-10,因此選B)。

16.B本題考查分支語句用法加個句號因為變量的初始值分別為k一5、n一0,所以程序第1次進入循環(huán)時,執(zhí)行default語句,輸出0,k減1;這時n=0、k=4,程序進行第2次循環(huán),執(zhí)行case4:這個分支,結(jié)果是n=2、k=3,打印出2;這時n=2、k=3,break跳出,程序進行第3次循環(huán),執(zhí)行case3:這個分支,結(jié)果是n=3、k=2,打印出3;這時n一3、k2,b¨ak跳出,程序然后進行第4次循環(huán),執(zhí)行case2:case4:這個分支,結(jié)果是n=5、k=1,打印出5,break跳出,這時因為n=5不滿足n<5的循環(huán)條件,因此循環(huán)結(jié)束。

17.A循環(huán)的作用是求行下標從1到2列下標從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解析:本題考查函數(shù)返回值作參數(shù),最初n=1,f(n)=f(1)=2,將f(n)的結(jié)果代入第二個f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

19.B數(shù)組1標從0開始,A選項中所賦值的個數(shù)超過了數(shù)組的長度;C選項中定義a為字符型變量,而不是數(shù)組,賦值錯誤;D選項中,整型數(shù)組不能賦字符串。

20.CN—s圖提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,所以A不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細設(shè)計的圖形表示工具,所以8不對。E—R圖是數(shù)據(jù)庫中的用于表示E—R模型的圖示工具,所以D不對。根據(jù)圖中所示表示方法是進行軟件詳細設(shè)計時使用的程序流程圖。

21.需求規(guī)格說明書需求規(guī)格說明書解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。需求規(guī)格說明書包括正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修改性和可追蹤性等。

22.軟件危機軟件危機

23.軟件開發(fā)

24.實體實體解析:在E-R圖中用矩形表示實體;橢圓形表示屬性;菱形表示聯(lián)系。

25.212,1解析:本題中,執(zhí)行a=a+b時,a=1,b=2,a=1+2=3,b=a-b時,a=3,b=2,b=3-2=1;a=a-b時,a=3,b=1,a=3-1=2;因此,本題的輸出是2,1

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

27.j<4arr[i][j]arr[i][j]j<4\r\narr[i][j]\r\narr[i][j]解析:2*4矩陣實際上就是一個二維數(shù)組,結(jié)合本題應(yīng)為arr[2][4],所以在第一個循環(huán)中應(yīng)當(dāng)填寫“4”;第二個橫線處是要判斷當(dāng)前的數(shù)組元素值是否大于max,所以應(yīng)填寫arr[i][j];第三個橫線處是要將當(dāng)前大于max的數(shù)組元素的值賦給變量max,所以應(yīng)當(dāng)填寫“arr[i][j]”。

28.a=1.0;b=1.0;s=1.0;a=1.0;b=1.0;s=1.0;解析:各種數(shù)值型數(shù)據(jù)間進行混合運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,再進行運算。本題的結(jié)果為double型。

29.軟件生命周期軟件生命周期解析:軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。一般包括可行性研究與需求分析、設(shè)計、實現(xiàn)、測試、交付使用以及維護等活動。

30.p=p+7或p+=7p=p+7或p+=7解析:本題考查通過指針引用數(shù)組元素。值為36的數(shù)組元素在a數(shù)組中是第8個元素,即a[7]。在程序中,p=a;語句將數(shù)組a的首地址賦給了指針變量p,則可以用*(p+i)來表示數(shù)組元素,*(p+i)與a[i]等價,a[7]可表示為*(p+7)。要使指針p指向a[7],可以用p=p+7移動指針,故填寫p=p+7或p+=7。

31.*s-*t*s-*t解析:兩字符串大小比較必須從它們的首字符開始,在對應(yīng)字符相等情況下循環(huán),直至不相等結(jié)束。相等時,若字符串已到了字符串的結(jié)束標記符,則兩字符串相同,函數(shù)返回0值;如還有后繼字符,則準備比較下一對字符。對應(yīng)字符不相同,循環(huán)結(jié)束。循環(huán)結(jié)束時,就以兩個當(dāng)前字符的差返回。所以在空框處應(yīng)填入*s-*t,保證在e>t時返回正值,當(dāng)s<t時返回負值。

32.aa解析:本題考查的是文件的打開方式。要向文本文件的末尾續(xù)寫內(nèi)容,需要使用方式“a”(追加)打開文件。

33.1010解析:整型指針最初被賦的值是數(shù)組arr的頭指針,即指向數(shù)組的第一個元素30,p++后,指針指向數(shù)組的下一個元素,即*p=arr[1]=25,在執(zhí)行*(p+3)時,則相當(dāng)于a[1+3],即10。因此,輸出應(yīng)為100。

34.structnode**phdNULL&head

35.11解析:邏輯運算中,非1即0,非0即1,!a=0,++a為邏輯1,所以0和1相或結(jié)果為1。

36.調(diào)試調(diào)試

37.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。

38.1212解析:本題的第一個for循環(huán)用于給數(shù)組arr賦初值,第二個for循環(huán)用于求和運算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。

39.11解析:該程序要注意的是if語句的判斷條件“c=a”是賦值,而不是“c==a”。由于a=1,故條件c=a使c的值為1(真),所以輸出c的值1。

40.實例將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。所以,類是對象的抽象,對象則是其對應(yīng)類的一個實例。

41.C解析:整型常量可以用+進制、八進制和+六進制形式來表示。+進制基本常量用一串連續(xù)的數(shù)字來表示,八進制數(shù)用數(shù)字0開頭,+六進制數(shù)用數(shù)字0和字母x或X開頭,各個進制都需用各自合法的字符數(shù)字表示。選項A)中9是不合法的。選項B)+六進制數(shù)字應(yīng)該用數(shù)字零和字母X(或x)開頭,選項D)中G不合法。

42.C解析:十六進制是以“0x”或“0X”開頭的字符串,字符串中只能含有0~9這10個數(shù)字和a、b、c、d、e、f這6個字母。

43.B解析:選項A的結(jié)尾沒用‘;’,所以不是一條語句:選項C中的表達式不會改變?nèi)魏巫兞康膬?nèi)容,也不是合法的賦值語句;選項D有語法錯誤,int應(yīng)該加上括號。所以,4個選項中只有選項B符合題意,運行后d的內(nèi)容被減一。

44.C解析:本題執(zhí)行過程如下:首先調(diào)用fun函數(shù),使得實參a的值3傳遞給形參p,得到局部變量d=8,打印出局部變量d的值8;返回主函數(shù)執(zhí)行“d+=a++”,此處的d為全局變量,所以d=1+3=4(由于本題是值傳遞,所以在函數(shù)fun中對p值的改變并不能引起a的改變),故本題的輸出是8,4。

45.C在本題中,程序段首先定義了字符型指針變量p,并使其指向一個字符串,然后將指針變量p加3,即使其指向字符串的第四個元素。然后執(zhí)行輸出語句,通過輸出語句的輸出格式我們可以知道,最后輸出的是一個十進制數(shù)的整型數(shù)值,其輸出列表為strlen(strcpy(P,″ABCD″))。這就要求我們了解strlen函數(shù)和strcpy函數(shù)的作用。

strcpy的調(diào)用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串復(fù)制到目的地址中,這種復(fù)制將覆蓋原來的字符串。strcat函數(shù)的功能是將源地址的字符串復(fù)制到目的地址字符串的后面。

strlen的調(diào)用格式是:strlen(字符串地址),其功能是返回字符串中字符的個數(shù)。

那么程序中執(zhí)行strcpy(P,″ABCD″)后指針變量p所指向的字符串為“ABCD”,該字符串中字符的個數(shù)為4,那么執(zhí)行strlen后,程序最終輸出的結(jié)果是4。因此本題正確的答案是C。

46.D解析:本題考核的知識點是do…while結(jié)構(gòu)和算術(shù)運算符%的應(yīng)用。do…while的結(jié)構(gòu)形式為:do循環(huán)體while(條件表達式),當(dāng)程序執(zhí)行到do后,先執(zhí)行循環(huán)體一次,然后才對條件表達式進行計算、判斷。若條件表達式的值為真,則重復(fù)執(zhí)行一次循環(huán)體;否則退出,與while結(jié)構(gòu)相比,do…while結(jié)構(gòu)至少要執(zhí)行一次循環(huán)體;運算符%是求模運算,即求兩個數(shù)相除的余數(shù)。continue語句的作用時結(jié)束本次循環(huán),即跳過本次循環(huán)中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)的條件判定。本題中,當(dāng)i=2時,執(zhí)行如循環(huán)。由于if表達式的條件為真,執(zhí)行continue語句,結(jié)束本次循環(huán),判斷while循環(huán)條件為假,故退出while循環(huán),執(zhí)行n++,此時n的值為1,當(dāng)i=3時,執(zhí)行do循環(huán).由于if(3%3)為假,執(zhí)行下面的n++語句,此時n的值為2,結(jié)束本次循環(huán),繼續(xù)判斷while循環(huán)條件為假,故退出while循環(huán),執(zhí)行n++語句,此時n的值為3;當(dāng)i=4時,執(zhí)行如循環(huán)。由于if(4%3)為真,執(zhí)行continue語句,結(jié)束本次循環(huán),繼續(xù)判斷while循環(huán)條件為假,故退出while循環(huán),執(zhí)行n++,此時n的值為4;當(dāng)i=5時,退出for循環(huán),因此最后輸出的n的值為4,所以,4個選項中選項D符合題意。

47.A解析:(*f1)()=fun可以理解為將fun函數(shù)的函數(shù)名稱用(*f1)()來代替了,因此高調(diào)用fun時就可以用(*f1)()來代替,因此只有A是正確的。

48.C解析:在C語言中,引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型可以是整型常量,也可以是整型表達式。

49.B解析:在printf函數(shù)中,當(dāng)格式轉(zhuǎn)換說明符個數(shù)少于輸出項個數(shù)時,多余的輸出項不予輸出。

50.B解析:本題的fun()函數(shù)中定義的變量m和i是靜態(tài)局部變量,第1次調(diào)用fun()函數(shù)時m=0、i=2,執(zhí)行i+=m+1后,i的值變?yōu)?,再執(zhí)行m=i+x+y后,m的值變?yōu)?,所以第1次輸出的整數(shù)是5。第2次調(diào)用fun()函數(shù)時m=5、i=3,執(zhí)行i+=m+1,i變?yōu)?,再執(zhí)行m=i+x+y,m變?yōu)?1,所以第2次輸出的整數(shù)是11。故本題應(yīng)該選擇B。

51.A解析:本題主要考查定義結(jié)構(gòu)體的幾個特點:①結(jié)構(gòu)的定義明確了結(jié)構(gòu)的組成形式,定義了一種C語言中沒有而用戶需要的新的數(shù)據(jù)類型。與其他的數(shù)據(jù)類型不同,在程序編譯的時候結(jié)構(gòu)的定義并不會使系統(tǒng)為該結(jié)構(gòu)分配內(nèi)存空間,只有在說明結(jié)構(gòu)變量時才分配內(nèi)存空間;②結(jié)構(gòu)體的成員名可以與程序中的變量名相同;⑧結(jié)構(gòu)體中的成員可以單獨使用,它的作用相當(dāng)于普通變量;④結(jié)構(gòu)體可以嵌套定義。

52.C解析:strcat(s1,s2)把s2連接到s1的后面,s1=ABCDEFG,執(zhí)行while(s2[i++]!='\\0')后i的值變?yōu)?,往后執(zhí)行s2[i]=s1[i]時是從把s1的第二位給s2的第二位開始,把s1賦給s2。

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

54.C\r\n軟件工程是試圖用工程、科學(xué)和數(shù)學(xué)的原理與方法研制、維護計算機軟件的有關(guān)技術(shù)及管理方法。軟件工程的主要思想是強調(diào)在軟件開發(fā)工程中需要應(yīng)用工程化的原則。軟件工程用來解決以下問題:軟件需求的增長得不到滿足、軟件開發(fā)成本和進度無法控制、軟件質(zhì)量難以保證、軟件不可維護或維護程度低、軟件得成本不斷提高、軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。軟件項目的管理、軟件產(chǎn)品的生產(chǎn)率、軟件開發(fā)中的技術(shù)都是軟件工程需要解決的部分問題。因此選項C正確。

55.A解析:本題主要考查的知識點是大寫字母比它對應(yīng)的小寫字母ASCII碼值小32,并且字符可以看作整數(shù)進行算術(shù)運算等操作。

56.A解析:“a>b?(b>c?1:0):0”的求解順序是:先判斷a>b是否為真,如果為真,則執(zhí)行b>c?1:0,如果b>c為真,則(b>c?1:0)的值為1,從而整個表達式返回1,否則整個表達式返回0;如果a<=b,則表達式返回0。因此功能等價的語句應(yīng)為if((a>B)&&(b>C))k=1;elsek=0;。

57.B

58.D解析:本題涉及C語言基本的3個知識點:①C語言是以函數(shù)為基本單位的,每一個函數(shù)完成相對獨立的功能,一個程序可以包括多個函數(shù),但有且僅有一個主函數(shù);②主函數(shù)main()的圓括號內(nèi)是填寫參數(shù)的,可以沒有參數(shù),但括號不可以省略;③程序的注釋部分應(yīng)該在“/*…………*/”之間,它允許出現(xiàn)在程序的任何位置。

59.C

60.A解析:本題主要考查按位求反運算和C語言中正負數(shù)的表示,“0”代表正數(shù),“1”代表負數(shù);x=7的二進制為00111,第一個0代表正數(shù),~x為11000,第一個1代表負數(shù),值為8。

61.A%d輸出整數(shù),所以選擇A)。

62.A

63.B

64.B本題考查的是庫函數(shù)的調(diào)用。Stden

65.C

66.B用戶自定義標識符不能與關(guān)鍵字相同。但可以與庫函數(shù)名相同,只是一般不建議用戶這么做。

67.AA選項為正確用法,先將字符串存于字符數(shù)組中,然后將數(shù)組名賦給字符指針(數(shù)組名代表數(shù)組首地址,定義數(shù)組時為其分配確定地址)。C選項錯誤,getchar()函數(shù)只能輸入一個字符給字符型變量,而不是字符指針。B選項和D選項有類似的錯誤,兩個選項并無語法錯誤,但運行時可能會出現(xiàn)問題。因為在B選項和D選項中,字符指針沒有被賦值,是個不確定的值,指向一個不確定的內(nèi)存區(qū)域,這個區(qū)域可能存放有用的指令或數(shù)據(jù)。在這個不確定的區(qū)域重新存放字符串,可能會發(fā)生無法預(yù)知的錯誤。因此A選項正確。

68.D本題考查文件操作函數(shù),兩次fwrite后,幣文件中已經(jīng)寫入l,2,3,O,0,l,2,3,0,0然后將文件幣中的內(nèi)容重新寫人數(shù)組a中,最后輸出a為1。2,3,0,0,1,2,3,0,0,所以選項D正確。

69.D在三目運算符中,優(yōu)先級相同,按從右到左的結(jié)合性計算,a<b?a:(c<d?a:d)c<d成立所以取值a,同理可得,選擇D選項

70.D在三目運算符中,優(yōu)先級相同,按從右到左的結(jié)合性計算,a<b?a:(c<d?a:d)c<d成立所以取值a,同理可得,選擇D選項

71.B\n棧是限定在一端進行插入與刪除的線性表,允許插入和刪除元素的一端稱為棧頂,另一端為棧底。棧頂元素是最后被插入的元素,也是最先被刪除的元素,即棧是按照”先進后出”的原則組織數(shù)據(jù)的。棧具有記憶功能,帶鏈的棧的結(jié)點存儲順序與其邏輯順序可以不一致。

\n

72.A

73.A字符串是一個特殊的數(shù)組,按照數(shù)組的規(guī)則,sl應(yīng)該指向的是數(shù)組的首地址,即“abc”的第一個字符的地址,s2指向的是“123”的第一個字符的地址。調(diào)用swap函數(shù)之后交換的是兩個字符串的第一個字符a和’l。的內(nèi)容,因此打印輸出為A)。

74.CC語言的語法規(guī)定,字母e(E)之前必須有數(shù)字,且e(E)后面的指數(shù)必須是整數(shù),而選項c)中,e(E)后面的指數(shù)是小數(shù),所以不合法。

75.B

76.B

\n第一個for循環(huán)的作用是讓p指向每行的首地址,第二個for循環(huán)的作用是把它指向的字符串輸出,故選擇B選項。

\n

77.A

78.C

79.Ddo……while語句是先執(zhí)行后判斷,所以第一次先執(zhí)行循環(huán)體,判斷i%3==1的條件,由于i為5,所以余數(shù)為2,條件不成立,執(zhí)行i++,i的值為6,判斷while條件為真;第二次執(zhí)行循環(huán)體,同第一次循環(huán)的執(zhí)行過程一樣,i的值變?yōu)?,判斷while條件為真;第三次執(zhí)行循環(huán)體,此時i%3==1,條件成立,再判斷i%5==2也成立,打印*與i的值,即*7,然后執(zhí)行break語句,跳出循環(huán)。所以選擇D選項。

80.D

81.

82.

【解析】此題考查的是數(shù)組的查找算法。使用for循環(huán)嵌套完成對二維數(shù)組的遍歷。題目要求出最大值,則應(yīng)采用將所有元素遍歷一遍,逐個比較的方式完成。定義變量max,將第一個元素賦值max,然后通過for循環(huán)將元素逐個與max比較,遇到比max大的則賦值max,替換原有數(shù)據(jù),當(dāng)嵌套的for循環(huán)結(jié)束后,max即為二維數(shù)組中的最大值。

2021-2022年廣東省佛山市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下選項中合法的C語言常量是()。

A.‘C-STR’B.2014.1C.”\1.0D.2EK

2.以下不合法的用尸標識符是()。A.A.804zhangB._hhC.yy614D.If

3.設(shè)有遞歸算法如下試問計算x(x(8))時需要計算()次x函數(shù)。A.8B.9C.16D.18

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

A.數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)必定是一一對應(yīng)的

B.由于計算機存儲空間是向量式的存儲結(jié)構(gòu),因此,數(shù)據(jù)的存儲結(jié)構(gòu)一定是線性結(jié)構(gòu)

C.程序設(shè)計語言中的數(shù)組一般是順序存儲結(jié)構(gòu),因此,利用數(shù)組只能處理線性結(jié)構(gòu)

D.以上三種說法都不對

5.

6.若x,y,z均被定義為整數(shù),則下列表達式能正確表達代數(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

7.

8.若有說明inta[][3]={1,2,3,4,5,6,7,8,9},則a數(shù)組第一維的大小是()。

A.2B.3C.4D.無確定值

9.

10.有以下程序:

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

A.0987654321

B.4321098765

C.5678901234

D.0987651234

11.下列字符數(shù)組初始化語句中,不正確的是()。

A.charc[]=goodmorning;

B.charc[20]="goodmorning";

C.charc[]={a,b,c,d);

D.charc[]={"ffgoodmorning"};

12.下列敘述中錯誤的是()。A.程序可以由多個程序文件組成

B.一個C語言程序只能實現(xiàn)一種算法.

C.程序可以由一個或多個函數(shù)組成

D.一個C函數(shù)可以單獨作為一個C程序文件存在

13.若有定義inta=12,n=5,則表達式a%=(n%2)運算后,a的值()。

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

14.以下敘述中正確的是

A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

15.若有定義語句:intX=10;,則表達式x-=x+X的值為A.-20B.-10C.0D.10

16.有以下程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=l;k--;break;defalut:n=0;k--;case2:case4:n+=2;k--;break:}printf("%d",n);}while(k>0&&n<5);}程序運行后的輸出結(jié)果是()。A.235B.0235C.02356D.2356

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.有以下程序

#include<stdio.h>

intf(intx);

main()

{intn=1,m;

m=f(f(f(n)));printf(”%d\n”,m);

}

intf(intx)

{returnx*2;}

程序運行后的輸出結(jié)果是()。A.1B.2C.4D.8

19.以下能正確定義一維數(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";

20.軟件詳細設(shè)計生產(chǎn)的圖如右圖:該圖是()。

A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

二、2.填空題(20題)21.需求分析的最終結(jié)果是產(chǎn)生【】。

22.開發(fā)軟件所需要的高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象被人們稱之為【】。

23.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。

24.在ER圖中,矩形表示【】。

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

main()

{

inta=1,b=2;

a=a+b;b=a-b;a=a-b;

prrintf("%d,%d\n",a,b);

}

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

27.以下函數(shù)用于求出一個2×4矩陣中的最大元素值。

max_value(arr)

intarr[][4];

{

inti,j,max;

max=arr[O][0];

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

for(j=0;【】;j++)

if(【】>max)max=【】;

return(max);

}

28.以下sum函數(shù)的功能是計算下列級數(shù)之和:

請給函數(shù)中的各變量正確賦初值。

doublesum(douLlex,intn)

{inti;

doublea,b,s;

【】

for(i=1;i<=n;i++){a=a*x;b=b*i;s=s+a/b;}

returns;

}

29.通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為【】。

30.若有以下定義和語句,則使指針p指向值為36的數(shù)組元素的表達式是【】。

inta[10]={19,23,44,17,37,28,49,36},*p;

p=a;

31.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,當(dāng)s<t時返回負值。請?zhí)羁铡?/p>

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

32.設(shè)有定義:FILE*fw;,請將以下打開文件的語句補充完整,以便可以向文本文件readme.txt的最后續(xù)寫內(nèi)容。

fw=fopen("readme.txt",【】);

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

main()

{

intarr[]={30,25,20,15,10,5},*p=arr;

p++;

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

}

34.以下程序?qū)崿F(xiàn)帶有頭結(jié)點的單鏈表的建立,鏈表中每個結(jié)點包含數(shù)據(jù)域data(字符型)和指針域next,所建立鏈表的頭指針由參數(shù)phd傳回調(diào)用程序。在空格處填入正確內(nèi)容。

#include<stdio.h>

#include<stdlib,h>

structnode{

chardata;

structnode*next;

};

voidcreatlist(【】)

{

charch;

structnode*s,*r;

*phd=malloc(sizeof(structnode));

r=*phd;

ch=getchar();

while(ch!='@'){

s=malloc(sizeof(structnode));

s->data=ch;

r->next=s;

r=s;

ch=getchar();

};

r->next=【】;

}

main()

{

structnode*head;

head=NULL;

creatlist(【】)

}

35.若a的值為1,則表達式!a‖++a的值是______。

36.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

37.與表達式a+=b等價的另一書寫形式是______。

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

main()

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

fot(i=0;i<10;i++)art[i]=i;

for(i=1:i<4;i++)k+=arr[i]+i;

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

}

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

#include<stdio,h>

main()

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

if(c=a)printf("%d\n",c);

elseprintf("%d\n",b);}

40.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

三、1.選擇題(20題)41.下列合法的整型常量的表示是

A.98B.oXdeC.32767D.0xDG

42.下列選項中不合法的十六進制數(shù)是()。

A.OxffB.OXllC.OxlgD.OXabc

43.以下合法的賦值語句是()

A.x=y=100B.d--;C.x+y;D.c=int(a+b);

44.下列程序執(zhí)行后輸出的結(jié)果是______。intd=1;fun(intp){intd=5;d+=p++;printh("%d,",d);}main(){inta=3;fuin(a);d+=a++;printf(:%d\n",d);}

A.8,12B.9,13C.8,4D.9,5

45.下面程序段的運行結(jié)果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));

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

46.有以下程序main(){inti,n=0;for(i=2;i<5;i++){do{if(i%3)continue;n++;}while(!i);n++;}printf("n=%d\n",n);}程序執(zhí)行后的輸出結(jié)果是

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

47.有以下程序中若有如下說明和定義語句;charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;…}以下選項中對函數(shù)fun的正確調(diào)用語句是______。

A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s);

48.在C語言中,引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型允許是()。

A.整型表達式B.整型常量C.整型常量或整型表達式D.任何類型的表達式

49.有以下程序:#include<stdio,h>main(){inta=666,b=888;printf("%'d\n",a,b);程序運行后的輸出結(jié)果是()。

A.錯誤信息,B.666C.888D.666,888

50.有以下程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,"k);k=fun(j,m);printf("%d\n",k);}執(zhí)行后的輸出結(jié)果是()。

A.5,5B.5,11C.11,11D.11,5

51.下列說法錯誤的是()。

A.下列結(jié)構(gòu)體定義時,占據(jù)了5個字節(jié)的空間structstudent{intnum;intage;charsex;}

B.結(jié)構(gòu)體的成員名可以與程序中的變量名相同

C.對結(jié)構(gòu)體中的成員可以單獨使用,它的作用相當(dāng)于普通變量

D.結(jié)構(gòu)體可以嵌套定義

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

A.ABCB.ABCDEFC.EBCDEFGD.CBD

53.有以下程序:#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,若運行時輸入帶參數(shù)的命令行是:ex1abcdefg10<回車>則運行的結(jié)果是()。

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

54.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則

D.軟件工程只是解決軟件開發(fā)中的技術(shù)問題

55.當(dāng)運行以下程序時,從鍵盤輸入AhaMA(空格)Aha<CR>,則下面程序的運行結(jié)果是

#include<stdio.h>

main()

{chars[80],c=′a′;

inti=0;

scanf("%s",s);

while(s[i]!=′

{if(s[i]==c)s[i]-32;

elseif(s[i]==c-32)s[i]=s[i]+32;

i++;}

puts(s);}

A.ahaMaB.AbAMaC.AhAMa[空格]ahAD.ahAMa[空格]ahA

56.以下程序段中與語句k=a>b?(b>c?1:0):0;功能等價的是______。

A.if(a>b)&&(b>c))k=1;elsek=();

B.if((a>b)||(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

57.CPU主要由運算器與控制器組成,下列說法中正確的是()

A.運算器主要負責(zé)分析指令,并根據(jù)指令要求做相應(yīng)的運算

B.運算器主要完成對數(shù)據(jù)的運算,包括算術(shù)運算和邏輯運算

C.控制器主要負責(zé)分析指令,并根據(jù)指令要求做相應(yīng)的運算

D.控制器直接控制計算機系統(tǒng)的輸入與輸出系統(tǒng)

58.下列說法不正確的是()。

A.一個C語言源程序可以由一個函數(shù)組成也可以由多個函數(shù)組成

B.main()中的“()”是函數(shù)的參數(shù)部分,括號內(nèi)可為空,但括號不能省略

C.C語言程序是以函數(shù)為基本單位的

D.在C語言程序中,注釋行只能位于一條語句的后面

59.程序的編制與算法的設(shè)計在效率上的關(guān)系是:()

A.相等B.優(yōu)于C.劣于D.不一定

60.設(shè)intx=7,則~x的值是()。

A.-8B.-7C.-1D.1

四、選擇題(20題)61.以下不能輸出字符A的語句是()(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)。

62.

63.

64.有以下程序:

以下敘述中正確的是()。

A.在給P和q數(shù)組置初值時,系統(tǒng)會自動添加字符串結(jié)束符,故輸出的長度都為3

B.由于P數(shù)組中沒有字符串結(jié)束符,長度不能確定;但q數(shù)組中字符長度為3

C.由于q數(shù)組中沒有字符串結(jié)束符,長度不能確定;但P數(shù)組中字符長度為3

D.由于P和q數(shù)組中沒有字符串結(jié)束符,故長度都不能確定

65.

66.以下能定義為用戶標識符的是()。

A.printfB.charC._8abcD.Void

67.設(shè)有定義:char*C;以下選項中能夠使C正確指向一個字符串的是()。

A.charstr()=”string”;C=str;

B.scanf(”%s”,C.;

C.c=getchar();

D.*c=”strin9”;

68.有以下程序:

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

A.1,2,3,0,0,0,0,0,0,0,

B.1,2,3,1,2,3,0,0,0,0,

C.123,0,0,0,0,123,0,0,0,0,

D.1,2,3,0,0,1,2,3,0,0,

69.設(shè)a=l,b=2,c=3,d=4,則表達式:“a<b?a:b<b?a:c<d?a:d”的結(jié)果為()。A.A.4B.3C.2D.1

70.設(shè)a=l,b=2,c=3,d=4,則表達式:“a<b?a:b<b?a:c<d?a:d”的結(jié)果為()。A.4B.3C.2D.1

71.下列關(guān)于棧的描述錯誤的是()。

A.棧按“先進后出”組織數(shù)據(jù)B.棧是特殊的線性表,只能在一端插入或刪除數(shù)據(jù)C.棧具有記憶功能D.棧只能順序存儲

72.(4)下面描述中,符合結(jié)構(gòu)化程序設(shè)計風(fēng)格的是______。

A.使用順序、選擇和重復(fù)三種基本控制結(jié)構(gòu)表示程序的控制邏輯

B.模塊只有一個入口,可以有多個出口

C.注重提高程序的執(zhí)行效率

D.不使用goto語句

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

A.abe,a23B.abe,123C.123,abeD.321,cba

74.以下選項中,不能作為合法常量的是()。

A.1.234e05B.1.234e+5C.1.234e0.5D.1.234e0

75.

76.

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

main

{charch[3][4]={"123","456","78"),*p[3];inti;

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

for(i=0;i<3;i++)printf("%s",p[i]);}

A.123456780B.123456780C.12345678D.147

77.

78.

79.有以下程序:

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

A.*2*6B.}3*5一C.}5D.*7

80.

五、程序改錯題(1題)81.下列給定程序中proc()函數(shù)的功能是:將n個無序整數(shù)按從小到大排序。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)fun(),其功能是:找出2M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:

參考答案

1.B所謂常量,是指在程序運行的過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。選項A是字符串,需要使用雙引號;選項C不是合法的常量形式;選項D為實型常量中的指數(shù)形式,但指數(shù)形式e(E)之前必須是數(shù)字,之后必須為整數(shù)。故本題答案為B選項。

2.AC語言規(guī)定,標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或下劃線。

3.D

4.D解析:一般來說,一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),因此,數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)不一定是一一對應(yīng)的。選項A中的說法是錯誤的。雖然計算機的存儲空間是向量式的存儲結(jié)構(gòu),但由于一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),例如,線性鏈表是線性表的鏈式存儲結(jié)構(gòu)。一般來說,性表的鏈式存儲結(jié)構(gòu)中,各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。性鏈表中,各數(shù)據(jù)元素之間的前后件關(guān)系是由各結(jié)點的指針域來指示的。因此,數(shù)據(jù)的存儲結(jié)構(gòu)不一定是線性結(jié)構(gòu)。選項B中的說法也是錯誤的。雖然程序設(shè)計語言中的數(shù)組一般是順序存儲結(jié)構(gòu),但是,利用數(shù)組也能處理非線性結(jié)構(gòu)。例如,滿二叉樹與完全二叉樹是非線性結(jié)構(gòu),但對于滿二叉樹與完全二叉樹來說,根據(jù)完全二叉樹的性質(zhì)6,可以按層序進行順序存儲,即利用程序設(shè)計語言中的數(shù)組來存儲,這樣,不僅節(jié)省了存儲空間,又能方便地確定每一個結(jié)點的父結(jié)點與左右子結(jié)點的位置。對于一般的二叉樹來說,也可以將二叉樹中每一個結(jié)點的左指針、右指針以及數(shù)據(jù)域分別用三個數(shù)組中的對應(yīng)元素來存儲,即實際上也是利用了程序設(shè)計語言中的數(shù)組來處理二叉樹這樣的非線性結(jié)構(gòu)。選項C中的說法也是錯誤的。綜上所述,選項A、B與C中的說法都是錯誤的。

5.D

6.B

7.D

8.B解析:本題考查二維數(shù)組第一維的大小如何確定。二維數(shù)組第一維的大小由下列規(guī)則確定:①當(dāng)初值的個數(shù)能被第二維的常量表達式的值除盡時,所得商數(shù)就是第一維的大小:②當(dāng)初值的個數(shù)不能被第二維的常量表達式的值除盡時,第一維的大小等于所得商數(shù)加1。

9.D

10.C函數(shù)fun(int*s,intn1,intn2)的功能是對數(shù)組s中的元素進行首尾互相調(diào)換。所以在主函數(shù)中,當(dāng)fun(a,0,3)執(zhí)行完后,數(shù)組a[12]={4,3,2,1,5,6,7,8,9,0};再執(zhí)行fun(a,4,9),數(shù)組a[12]={4,3,2,1,0,9,8,7,6,5};再執(zhí)行fun(a,0,9)后,數(shù)組a[12]={5,6,7,8,9,0,1,2,3,4}。所以正確答案為c)。

11.A本題考查兩個概念:①用單引號括起來的一個字符常量只能存放一個字符;②℃語言中沒有字符串變量,只能用字符數(shù)組來存儲字符串。

12.B在一個C語言程序中可以進行多種算法的實現(xiàn),對算法的個數(shù)沒有規(guī)定,所以B)錯誤。

13.A

14.C算法具有的5個特性是:有窮性、確定性、可行性、有0個或多個輸入、有一個或多個輸出。所以說,用C程序?qū)崿F(xiàn)的算法可以沒有輸入,但必須要有輸出。因此本題答案選C。

15.B解析:x-=x+x可化為:x=x-(x+x),由于x初始值為10,所以計算后,x=10-20=-10,因此選B)。

16.B本題考查分支語句用法加個句號因為變量的初始值分別為k一5、n一0,所以程序第1次進入循環(huán)時,執(zhí)行default語句,輸出0,k減1;這時n=0、k=4,程序進行第2次循環(huán),執(zhí)行case4:這個分支,結(jié)果是n=2、k=3,打印出2;這時n=2、k=3,break跳出,程序進行第3次循環(huán),執(zhí)行case3:這個分支,結(jié)果是n=3、k=2,打印出3;這時n一3、k2,b¨ak跳出,程序然后進行第4次循環(huán),執(zhí)行case2:case4:這個分支,結(jié)果是n=5、k=1,打印出5,break跳出,這時因為n=5不滿足n<5的循環(huán)條件,因此循環(huán)結(jié)束。

17.A循環(huán)的作用是求行下標從1到2列下標從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解析:本題考查函數(shù)返回值作參數(shù),最初n=1,f(n)=f(1)=2,將f(n)的結(jié)果代入第二個f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

19.B數(shù)組1標從0開始,A選項中所賦值的個數(shù)超過了數(shù)組的長度;C選項中定義a為字符型變量,而不是數(shù)組,賦值錯誤;D選項中,整型數(shù)組不能賦字符串。

20.CN—s圖提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,所以A不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細設(shè)計的圖形表示工具,所以8不對。E—R圖是數(shù)據(jù)庫中的用于表示E—R模型的圖示工具,所以D不對。根據(jù)圖中所示表示方法是進行軟件詳細設(shè)計時使用的程序流程圖。

21.需求規(guī)格說明書需求規(guī)格說明書解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。需求規(guī)格說明書包括正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修改性和可追蹤性等。

22.軟件危機軟件危機

23.軟件開發(fā)

24.實體實體解析:在E-R圖中用矩形表示實體;橢圓形表示屬性;菱形表示聯(lián)系。

25.212,1解析:本題中,執(zhí)行a=a+b時,a=1,b=2,a=1+2=3,b=a-b時,a=3,b=2,b=3-2=1;a=a-b時,a=3,b=1,a=3-1=2;因此,本題的輸出是2,1

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

27.j<4arr[i][j]arr[i][j]j<4\r\narr[i][j]\r\narr[i][j]解析:2*4矩陣實際上就是一個二維數(shù)組,結(jié)合本題應(yīng)為arr[2][4],所以在第一個循環(huán)中應(yīng)當(dāng)填寫“4”;第二個橫線處是要判斷當(dāng)前的數(shù)組元素值是否大于max,所以應(yīng)填寫arr[i][j];第三個橫線處是要將當(dāng)前大于max的數(shù)組元素的值賦給變量max,所以應(yīng)當(dāng)填寫“arr[i][j]”。

28.a=1.0;b=1.0;s=1.0;a=1.0;b=1.0;s=1.0;解析:各種數(shù)值型數(shù)據(jù)間進行混合運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,再進行運算。本題的結(jié)果為double型。

29.軟件生命周期軟件生命周期解析:軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。一般包括可行性研究與需求分析、設(shè)計、實現(xiàn)、測試、交付使用以及維護等活動。

30.p=p+7或p+=7p=p+7或p+=7解析:本題考查通過指針引用數(shù)組元素。值為36的數(shù)組元素在a數(shù)組中是第8個元素

溫馨提示

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

評論

0/150

提交評論