廣州電大-期末c++綜合復(fù)習(xí)答案_第1頁
廣州電大-期末c++綜合復(fù)習(xí)答案_第2頁
廣州電大-期末c++綜合復(fù)習(xí)答案_第3頁
廣州電大-期末c++綜合復(fù)習(xí)答案_第4頁
廣州電大-期末c++綜合復(fù)習(xí)答案_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C++語言程序設(shè)計復(fù)習(xí)課一、第一章單項選擇題

1.在每個C++程序中都必須包含有這樣一個函數(shù),該函數(shù)的函數(shù)名為()。答案:A

A.mainB.MAINC.nameD.function

2.C++源程序文件的缺省擴展名為()。答案:A

A.cppB.exeC.objD.lik

3.程序運行中需要從鍵盤上輸入多于一個數(shù)據(jù)時,各數(shù)據(jù)之間應(yīng)使用()符號作為分隔符。答案:D

A.空格或逗號B.逗號或回車C.逗號或分號D.空格或回車

4.C++程序的根本模塊為〔〕。答案:D

A.表達式B.標(biāo)識符C.語句D.函數(shù)

5.每個C++程序文件的編譯錯誤分為〔〕類。答案:B//warningerror

A.1B.2C.3D.4二、第一章填空題

1.C++語言是在_________語言的根底上開展起來的。答案:C

2.C++語言中的每條根本語句以________作為結(jié)束符。答案:;〔或分號〕

3.C++語言中的每條復(fù)合語句以________作為結(jié)束符。答案:}〔或右花括號〕

4.在C++每個程序行的后面或單獨一行的開始使用注釋的標(biāo)記符為__________。答案://

5.單行或多行注釋的開始標(biāo)記符為__________、結(jié)束標(biāo)記符為__________。答案:/*、*/

6.在一個C++程序文件中,假設(shè)要包含另外一個頭文件或程序文件,那么應(yīng)使用以__________標(biāo)識符開始的預(yù)處理命令。#include

7.C++程序中的所有預(yù)處理命令均以______字符開頭。#

8.在#include命令中所包含的頭文件,可以是系統(tǒng)定義的頭文件,也可以是________定義的頭文件。用戶〔或編程者〕9.一個函數(shù)定義由________和________兩局部組成。答案:函數(shù)頭、函數(shù)體

10.用于輸出表達式值的標(biāo)準(zhǔn)輸出流對象是________,用于從鍵盤上為變量輸入值的標(biāo)準(zhǔn)輸入流對象是________。答案:cout、cin

11.當(dāng)不需要函數(shù)返回任何值時,那么應(yīng)使用________標(biāo)識符定義函數(shù)類型。答案:void三、第二章單項選擇題

1.設(shè)x和y均為bool量,那么x&&y為真的條件是()。答案:A

A.它們均為真B.其中一個為真

C.它們均為假D.其中一個為假

2.設(shè)x和y均為bool量,那么x||y為假的條件是()。C

A.它們均為真B.其中一個為真

C.它們均為假D.其中一個為假

3.設(shè)有語句“inta=12;a+=a*a;〞,那么執(zhí)行結(jié)束后,a的值為()。C

A.12B.144C.156D.288

4.x>0&&x<=10的相反表達式為〔〕。A

A.x<=0||x>10B.x<=0&&x>10

C.x<=0||x<=10D.x>0&&x>10

5.x>0||y==5的相反表達式為〔〕。B

A.x<=0||y!=5B.x<=0&&y!=5

C.x>0||y!=5D.x>0&&y==56.字符串“a+b=12\n〞的長度為〔〕。答案:B

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

7.在以下的常值常量定義中,錯誤的定義語句是〔〕。答案:C

A.constM=10;B.constintM=20;

C.constcharch;D.constboolmark=true;

8.枚舉類型中的每個枚舉常量的值都是一個〔〕。答案:A

A.整數(shù)B.浮點數(shù)

C.字符D.邏輯值

9.含隨機函數(shù)的表達式rand()%20的值在()區(qū)間內(nèi)。答案:C

A.1~19B.1~20

C.0~19D.0~20四、第二章填空題

1.十進制數(shù)25表示成符合C++語言規(guī)那么的八進制數(shù)為________。答案:031

2.十進制數(shù)25表示成符合C++語言規(guī)那么的十六進制數(shù)為________。答案:0x19

3.在c++語言中,操縱符________表示輸出一個換行符。答案:endl

4.執(zhí)行“cout<<char('A'+2)<<endl;〞語句后得到的輸出結(jié)果為________。答案:C

5.'A'~'Z'的ASCII碼為65~90,當(dāng)執(zhí)行“intx='C'+5;〞語句后x的值為________。答案:72

6.'A'~'Z'的ASCII碼為65~90,當(dāng)執(zhí)行“charch=14*5+2;cout<<ch<<endl;〞語句序列后,得到的輸出結(jié)果為________。答案:H

7.假定一個枚舉類型的定義為“enumRA{ab,ac,ad,ae};〞,那么枚舉常量ac的值為________。答案:18.假定一個枚舉類型的定義為“enumRB{a1,a2=3,a3,a4}x=a3;〞,那么x的值為________。答案:4

9.char、short、int、float、double類型的大小分別為________個字節(jié)。

10.十進制常數(shù)28和3.26的類型分別為________和________。答案:int、double

11.假設(shè)需要定義一個常值常量,并且使C++能夠進行類型檢查,那么應(yīng)在定義語句的開始使用保存字__________。答案:const//#defineMAX100

12.使用const語句定義一個常值常量時,那么必須對它同時進行__________。答案:初始化//如constintMM=20;

13.執(zhí)行“intx=45,y=13;cout<<x/y;〞語句序列后得到的輸出結(jié)果為________。答案:3

14.執(zhí)行“intx=45,y=13;cout<<x%y;〞語句序列后得到的輸出結(jié)果為________。答案:615.假定x=5,那么表達式2+x++的值為________。答案:7

16.假定y=10,那么表達式++y*3的值為________。答案:33

17.表達式float(25)/4的值為________。答案:6.25

18.表達式int(14.6)%5的值為________。答案:4

19.表達式x=x+y表示成復(fù)合賦值表達式為__________。答案:x+=y

20.表達式x=x+1表示成增量表達式為__________。答案:++x

21.增量表達式++y表示成賦值表達式為__________。答案:y=y+1

22.關(guān)系表達式(x==0)的等價表達式為________。答案:(!x)

23.關(guān)系表達式(x!=0)的等價表達式為________。答案:(x)

24.假定不允許使用邏輯非操作符,那么關(guān)系表達式x+y>5的相反表達式為____________。答案:x+y<=5

25.假設(shè)x=5,y=10,那么x>y邏輯值為________。答案:false或0

26.假設(shè)x=5,y=10,那么x!=y的邏輯值為________。答案:true或1

27.假定x=5,那么執(zhí)行“a=(x?10:20);〞語句后a的值為________。答案:10

28.執(zhí)行“typedefintDataType;〞語句后,在使用int定義整型變量的地方都可以使用__________來定義整型變量。答案:DataType五、第三章單項選擇題

1.當(dāng)處理特定問題時的循環(huán)次數(shù)時,通常采用〔〕來解決。答案:A

A.for循環(huán)B.while循環(huán)C.do循環(huán)D.switch語句

2.循環(huán)體至少被執(zhí)行一次的語句為〔〕語句。答案:C

A.for循環(huán)B.while循環(huán)C.do循環(huán)D.任一種循環(huán)

3.在switch語句的每個case塊中,假定都是以break語句結(jié)束的,那么此switch語句容易被改寫為〔〕語句。答案:B

A.forB.ifC.doD.while

4.for語句能夠被改寫為〔〕語句。答案:D

A.復(fù)合B.ifC.switchD.while

5.循環(huán)語句“for(inti=0;i<n;i++)S;〞中循環(huán)體S被執(zhí)行的次數(shù)為()。答案:C

A.1B.n-1C.nD.n+16.下面循環(huán)語句執(zhí)行結(jié)束后輸出的i值為〔〕。答案:Bfor(inti=0;i<n;i++)if(i>n/2){cout<<i<<endl;break;}

A.n/2B.n/2+1C.n/2-1D.n-1

7.在下面循環(huán)語句中內(nèi)層循環(huán)體S語句的執(zhí)行總次數(shù)為〔〕。答案:Dfor(inti=0;i<n;i++)

for(intj=i;j<n;j++)S;//n+(n-1)+...+1

A.n2B.(n+1)/2C.n(n-1)/2D.n(n+1)/2

8.在下面的while循環(huán)語句中,其循環(huán)體被執(zhí)行的次數(shù)為〔〕。答案:Cinti=0,s=0;while(s<20){i++;s+=i;}//s=1,3,6,10,15,21

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

9.在下面的do循環(huán)語句中,其循環(huán)體被執(zhí)行的次數(shù)為〔〕。答案:Ainti=0;doi++;while(i*i<10);//i=0,1,2,3

A.4B.3C.5D.2六、第三章填空題

1.在switch語句中,每個語句標(biāo)號所含保存字case后面的表達式必須是_______。整型常量

2.在if語句中,每個else關(guān)鍵字與它前面同層次并且最接近的________關(guān)鍵字相配套。if

3.作為語句標(biāo)號使用的C++保存字case和default只能用于________語句的定義體中。switch

4.執(zhí)行switch語句時,在進行作為條件的表達式求值后,將從某個匹配的標(biāo)號位置起向下執(zhí)行,當(dāng)碰到下一個標(biāo)號位置時〔停止/不停止〕________執(zhí)行。不停止

5.假設(shè)while循環(huán)的“頭〞為〞while(i++<=10)〞,并且i的初值為0,同時在循環(huán)體中不會修改i的值,那么循環(huán)體將被重復(fù)執(zhí)行______次后正常結(jié)束。11

6.假設(shè)do循環(huán)的“尾〞為〞while(++i<10)〞,并且i的初值為0,同時在循環(huán)體中不會修改i的值,那么循環(huán)體將被重復(fù)執(zhí)行______次后正常結(jié)束。107.當(dāng)在程序中執(zhí)行到________語句時,將結(jié)束本層循環(huán)類語句或switch語句的執(zhí)行。答案:break

8.當(dāng)在程序中執(zhí)行到________語句時,將結(jié)束所在循環(huán)語句中循環(huán)體的一次執(zhí)行。答案:continue

9.在程序中執(zhí)行到________語句時,將結(jié)束所在函數(shù)的執(zhí)行過程,返回到調(diào)用該函數(shù)的位置。答案:return

10.在程序執(zhí)行完一個________函數(shù)調(diào)用后,將結(jié)束整個程序的執(zhí)行過程,返回到操作系統(tǒng)或C++集成開發(fā)環(huán)境界面窗口。答案:主(或main)七、第三章程序運行結(jié)果

1.#include<iostream.h>

voidmain()

{

intx=5;

switch(2*x-3){

case4:cout<<x<<’’;

case7:cout<<2*x+1<<’’;

case10:cout<<3*x-1<<’’;break;

default:cout<<"default"<<endl;

}

cout<<"switchend."<<endl;

}答案:1114switchend.C++語言程序設(shè)計復(fù)習(xí)課一、第三章函數(shù)功能

1.#include<iostream.h>

intSA(inta,intb){

if(a>b)return1;

elseif(a==b)return0;

elsereturn-1;

}

答案:比擬兩個整型參數(shù)a和b的大小,假設(shè)a>b那么返回1,假設(shè)a==b那么返回0,假設(shè)a<b那么返回-1。

2.intSC(inta,intb,intc){

if(a>=b&&a>=c)returna;

if(b>=a&&b>=c)returnb;

returnc;

}

答案:求出a,b,c三個數(shù)中的最大值并返回。3.intSE(intn){//n為大于等于1的整數(shù)

intx;cin>>x;

if(n==1)returnx;

intm=x;

while(--n){cin>>x;m+=x;}

returnm;

}

答案:求出從鍵盤上輸入的n個整數(shù)之和并返回。

4.doubleSF(doublex,intn){//n為大于等于0的整數(shù)

doublep=1,s=1;

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

returns;

}

答案:計算1+x/2+x2/3+...+xn/(n+1)的值并返回。5.#include<math.h>

boolSG(intx){//x為大于等于2的整數(shù)

inta=int(sqrt(x));//取x的平方根

inti=2;

while(i<=a){if(x%i==0)break;i++;}

if(i<=a)return0;elsereturn1;

}

答案:判斷x是否為一個質(zhì)數(shù),假設(shè)是那么返回1,否那么返回0。

6.floatFH(){

floatx,y=0,n=0;

cin>>x;

while(x!=-1){n++;y+=x;cin>>x;}

if(n==0)returny;elsereturny/n;

}

答案:求出從鍵盤上輸入的一批常數(shù)的平均值,以-1作為結(jié)束輸入的標(biāo)志。7.floatFI(intn){//n為大于等于1的整數(shù)

floatx,y=0;

do{

cin>>x;y+=x*x;

}while(--n>0);

returny;

}

答案:求出從鍵盤上輸入的n個常數(shù)的平方和并返回。8.#include<iostream.h>

#include<math.h>

voidmain()

{

intx,y;

cin>>x;

y=int(sqrt(x));//sqrt(x)為求x的算術(shù)平方根

for(inti=1;i<=y;i++)

if(x%i==0)cout<<〞x=〞<<i<<’*’<<x/i<<endl;

}

答案:把從鍵盤上輸入的一個整數(shù)x分解為所有可能的每兩個因子之積。二、第三章編寫函數(shù)

1.編寫一個主函數(shù),利用while循環(huán),求出并顯示滿足不等式1+1/2+1/3+...+1/n≥5的最小n值。

答案:

voidmain(){

inti=0;doubles=0;//或inti=1;doubles=1;

while(s<5)s+=double(1)/++i;

cout<<"n="<<i<<endl;

}

2.編寫一個主函數(shù),計算1+3+3^2+...+3^10的值并輸出,假定分別用i,p,s作為循環(huán)變量、累乘變量和累加變量的標(biāo)識符。

voidmain(){

inti;//用i作為循環(huán)變量

intp=1;//用p作為累乘變量

ints=1;//用s作為累加循環(huán)變量

for(i=1;i<=10;i++){p*=3;s+=p;}

cout<<s<<endl;

}3.編寫一個主函數(shù),6≤a≤30,15≤b≤36,求出滿足不定方程2a+5b=126的全部整數(shù)組解。如(13,20)就是其中的一組解。

答案:

voidmain()

{

inta,b;

for(a=6;a<=30;a++)

for(b=15;b<=36;b++)

if(2*a+5*b==126)cout<<'('<<a<<','<<b<<')'<<endl;

}三、第四章單項選擇題

1.在下面的一維數(shù)組定義中,〔〕語句有語法錯誤。答案:C

A.inta[]={1,2,3};B.inta[10]={0};

C.inta[];D.inta[5];

2.在下面的二維數(shù)組定義中,〔〕語句是正確的。答案:C

A.inta[5][];B.inta[][5];

C.inta[][3]={{1,3,5},{2}};D.inta[](10);

3.在下面的字符數(shù)組定義中,〔〕語句有語法錯誤。答案:D

A.chara[20]=〞abcdefg〞;B.chara[]=〞x+y=55.〞;

C.chara[15]={’1’,’2’};D.chara[10]=’5’;

4.假定一個二維數(shù)組的定義語句為“inta[3][4]={{3,4},{2,8,6}};〞,那么元素a[1][2]的值為〔〕。答案:C

A.2B.4C.6D.8

5.假定一個二維數(shù)組的定義語句為“inta[3][4]={{3,4},{2,8,6}};〞,那么元素a[2][1]的值為〔〕。答案:A

A.0B.4C.8D.66.將兩個字符串連接起來組成一個字符串時,選用〔〕函數(shù)。答案:C

A.strlen()B.strcpy()C.strcat()D.strcmp()四、第四章填空題

1.假定一個一維數(shù)組的定義為“char*a[8];〞,該數(shù)組所含元素的個數(shù)為________,所占存儲空間的字節(jié)數(shù)為________。8、32

2.假定一個二維數(shù)組的定義為“inta[3][5];〞,那么該數(shù)組所含元素的個數(shù)為________,所占存儲空間的字節(jié)數(shù)為________。15、60

3.執(zhí)行“typedefintABC[10];〞語句把ABC定義為具有10個整型元素的________類型。數(shù)組

4.使用“typedefcharBB[10][50];〞語句定義________為含有10行50列二維字符數(shù)組類型。BB

5.存儲字符’a’需要占用存儲器的________個字節(jié)空間,存儲字符串〞a〞需要占用存儲器的________個字節(jié)空間。1、2

6.字符串〞a:\\xxk\\數(shù)據(jù)〞的長度為________,存儲它的字符數(shù)組的長度至少為________。11、127.假設(shè)a是一個字符數(shù)組,那么從鍵盤上向該數(shù)組輸入一個字符串的表達式語句為__________,向屏幕輸出a中所存字符串的表達式語句為__________。答案:cin>>a;cout<<a;

8.一個二維字符數(shù)組a[10][20]能夠存儲________個字符串,每個字符串的長度至多為________。答案:10、19五、第四章程序運行結(jié)果

1.#include<iostream.h>

voidmain(){

inta[10]={12,39,26,41,55,63,72,40,83,95};

inti1=0,i2=0;

for(inti=0;i<10;i++)

if(a[i]%2==1)i1++;elsei2++;

cout<<i1<<''<<i2<<endl;

}

答案:642.#include<iostream.h>

voidmain(){

inta[9]={36,25,48,14,55,40,32,66,60};

intb1,b2;

b1=b2=a[0];

for(inti=1;i<9;i++)

if(a[i]>b1){if(b1>b2)b2=b1;b1=a[i];}

elseif(a[i]>b2)b2=a[i];

cout<<b1<<''<<b2<<endl;

}

答案:66603.#include<iostream.h>

voidmain(){

chara[]="abcdabcabfgacd";

inti1=0,i2=0,i=0;

while(a[i]){

if(a[i]=='a')i1++;

if(a[i]=='b')i2++;

i++;

}

cout<<i1<<''<<i2<<''<<i<<endl;

}

答案:4314六、第四章編寫程序

1.編寫一個函數(shù),函數(shù)頭格式為“voidfun4(char*a,intb[])〞,分別求出由字符指針a所指向的字符串中包含的每種十進制數(shù)字出現(xiàn)的次數(shù),把統(tǒng)計結(jié)果保存在數(shù)組b的相應(yīng)元素中。

答案:

voidfun4(char*a,intb[])

{

inti;

for(i=0;i<10;i++)b[i]=0;//對b數(shù)組初始化

while(*a){

intj=*a-’0’;

if(j>=0&&j<=9)b[j]++;

a++;

}}C++語言程序設(shè)計復(fù)習(xí)課一、第五章單項選擇題

1.下面的〔〕函數(shù)頭格式不正確。答案:D

A.AA(inta,intb)B.AA(inta,intb=0)

C.AA(inta=0,intb=0)D.AA(inta=0,intb)

2.下面的〔〕保存字不能作為函數(shù)的返回類型。答案:C

A.voidB.intC.newD.long

3.下面的函數(shù)聲明中,“voidBC(inta,intb);〞的重載函數(shù)是〔〕。答案:B

A.intBC(intx,inty);B.voidBC(inta,charb);

C.floatBC(inta,intb,intc=0);D.voidBC(inta,intb=0);

4.聲明或定義一個內(nèi)聯(lián)函數(shù)時,必須在函數(shù)開始使用保存字〔〕。答案:C

A.staticB.constC.inlineD.extern5.在下面的函數(shù)聲明中,〔〕存在著語法錯誤。答案:D

A.intBC(inta,int);B.intBC(int,int);

C.intBC(int,int=5);D.intBC(intx;inty);

6.假設(shè)定義了函數(shù)double*function(),那么該函數(shù)的返回值為〔〕。答案:B

A.實數(shù)型B.實數(shù)指針型C.函數(shù)指針型D.?dāng)?shù)組型

7.以下〔〕的調(diào)用方式是引用調(diào)用。答案:C

A.形參和實參都是變量B.形參是指針,實參是地址值

C.形參是引用,實參是變量D.形參是變量,實參是地址值

8.為了提高程序的運行速度,可將不太復(fù)雜的函數(shù)實現(xiàn)為〔〕。答案:A

A.內(nèi)聯(lián)函數(shù)B.重載函數(shù)C.遞歸函數(shù)D.函數(shù)模板

9.下面正確的函數(shù)原型語句是〔〕。答案:B

A.intFunction(voida);B.voidFunction(int);

C.intFunction(a);D.voidint(doub10.函數(shù)調(diào)用func((exp1,exp2),exp3*exp4-exp5)中所含實參的個數(shù)為()個。答案:B

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

11.假設(shè)用數(shù)組名作為函數(shù)調(diào)用的實參,傳遞給形參的是〔〕答案:A

A.?dāng)?shù)組的首地址B.?dāng)?shù)組中第一個元素的值

C.?dāng)?shù)組全部元素的值D.?dāng)?shù)組元素的個數(shù)

12.文件包含命令中被包含的文件的擴展名〔〕。答案:C

A.只能是.hB.不能是.hC.可以是.h或.cppD.只能是.cpp二、第五章填空題

1.在C++語言中,一個函數(shù)由______和_______組成。答案:函數(shù)頭、函數(shù)體

2.在函數(shù)外定義的變量稱為全局變量,假設(shè)沒有被初始化那么系統(tǒng)隱含對它所賦的初值為________。答案:0

3.函數(shù)被調(diào)用時,實參向形參的傳送分為________和_______兩種傳送方式。答案:引用、值

4.重載一個函數(shù)的條件是:該函數(shù)必須在參數(shù)的_______或參數(shù)的_______上與其它同名函數(shù)有所不同。答案:個數(shù)、類型

5.如果一個函數(shù)只允許在同一程序文件中被調(diào)用,那么應(yīng)在該函數(shù)定義前加上的C++保存字為__________。答案:static

6.如果一個函數(shù)直接或間接地調(diào)用自身,這樣的調(diào)用被稱為____________調(diào)用。答案:遞歸

7.假定一個函數(shù)模板的定義為“template<classT>Tcubin(Tn){returnn*n*n;}〞,那么類型參數(shù)為________。答案:T8.對于無返回值函數(shù),定義函數(shù)時要用__________作為函數(shù)類型。答案:void

9.函數(shù)形參的作用域是該函數(shù)的____________。答案:函數(shù)體

10.C++提供的預(yù)處理命令有宏定義命令,條件編譯命令和____________。答案:文件包含命令

11.程序的編譯是以__________為單位進行的。答案:文件三、第五章程序運行結(jié)果

.#include<iostream.h>

#include<stdlib.h>

doubleSD(doublea,doubleb,charop){

doublex;

switch(op){

case'+':x=a+b;break;

case'-':x=a-b;break;

case'*':x=a*b;break;

case'/':if(b)x=a/b;elseexit(1);

break;

default:exit(1);

}

returnx;

}voidmain(){

intx=25,y=10;

cout<<SD(x,y,'-')<<'';

cout<<SD(x,y,'*')<<'';

cout<<SD(x+y,y,'/')<<endl;

}

答案:152503.5

2.#include<iostream.h>

voidmain(){

inta=10,b=20;

cout<<a<<''<<b<<endl;

{a*=3;

intb=a+35;

cout<<a<<''<<b<<endl;

}cout<<a<<''<<b<<endl;

}

答案:

1020

3065

3020

3.#include<iostream.h>

voidWF(int&x,inty){

x=x+y;

y=x+y;

cout<<x<<","<<y<<endl;

}

voidmain(){

intx=8,y=15;

cout<<x<<","<<y<<endl;

WF(x,y);x=2*x;

cout<<x<<","<<y<<endl;

}

答案:

8,15

23,38

46,15

4.#include<iostream.h>

voidSelectSort(inta[],intn){

inti,j,k;

for(i=1;i<n;i++){//進行n-1次選擇和交換

k=i-1;

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

if(a[j]<a[k])k=j;

intx=a[i-1];a[i-1]=a[k];a[k]=x;

}}

voidmain(){

inti;

inta[6]={20,15,32,47,36,28};

SelectSort(a,6);

for(i=0;i<6;i++)cout<<a[i]<<'';

cout<<endl;

}

答案:152028323647四、第五章函數(shù)功能

1.boolWB(inta[],intn,intx){

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

if(a[i]==x)returntrue;

returnfalse;

}

答案:從數(shù)組a中順序查找值為x的元素,假設(shè)查找成功那么返回真,否那么返回假。

2.template<classT>

intfun8(Ta[],intn,Tkey)

{

intc=0

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

if(a[i]>=key)c++;

returnc;

}答案:函數(shù)模板,從一維數(shù)組a[n]中統(tǒng)計出其值大于等于key的元素個數(shù)并作為函數(shù)值返回。

3.#include<iostream.h>

template<classTT>

intWG(TTa,TTb){

if(a>b)return1;

elseif(a==b)return0;

elsereturn-1;

}

答案:

模板函數(shù),比擬兩個變量a和b的大小,假設(shè)a>b那么返回1,假設(shè)a==b那么返回0,假設(shè)a<b那么返回-1。4.template<classType>

voidWE(Typea[],Typeb[],intn){

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

b[n-i-1]=a[i];

}

答案:模板函數(shù),把數(shù)組a的每個元素按逆序放入數(shù)組b中。五、第六章單項選擇題

1.假定p是一個指向float型數(shù)據(jù)的指針,那么p+1所指數(shù)據(jù)的地址比p所指數(shù)據(jù)的地址大()字節(jié)。答案:C

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

2.假定a為一個字符數(shù)組名,那么元素a[8]相對于該數(shù)組首地址的字節(jié)地址為()。答案:CB

A.4B.8C.16D.32

3.假定a為一個整型數(shù)組名,那么元素a[4]相對于該數(shù)組首地址的字節(jié)地址為()。答案:CC

A.4B.8C.16D.32

4.假定a為一個數(shù)組名,那么下面的()表示有錯誤。答案:CB

A.a(chǎn)[i]B.*a++C.*aD.*(a+1)

5.用new運算符創(chuàng)立一維數(shù)組的正確語句是〔〕。答案:C

A.int*p=newa[10];B.int*p=newfloat[10];

C.int*p=newint[10];D.int*p=newint[5]={1,2,3,4,5}六、第六章填空題

1.假定p所指對象的值為25,p+1所指對象的值為46,那么*p++的值為________。答案:25

2.假定p所指對象的值為25,p+1所指對象的值為46,那么*++p的值為________。答案:46

3.假定p所指對象的值為25,p+1所指對象的值為46,那么執(zhí)行“(*p)++;〞語句后,p所指對象的值為________。答案:26

4.假定p所指對象的值為25,p+1所指對象的值為46,那么執(zhí)行“*(p++);〞語句后,p所指對象的值為________。答案:25

5.假定a是一個指針數(shù)組,那么a+i所指對象的地址比a地址大________字節(jié)。答案:4*i

6.假定a是一個一維數(shù)組,那么a[i]的指針訪問方式為________。答案:*(a+i)

7.假定a是一個二維數(shù)組,那么a[i][j]的指針訪問方式為____________。答案:*(a[i]+j)或*(*(a+i)+j)七、第六章程序運行結(jié)果

1.#include<iomanip.h>

voidmain(){

inta[8]={3,5,7,9,11,13,15,17};

int*p=a;

for(inti=0;i<8;i++){

cout<<setw(5)<<*p++;

if((i+1)%4==0)cout<<endl;

}

}

答案:

3579

111315172.#include<iomanip.h>

voidmain(){

inta[9]={2,4,6,8,10,12,14,16,18};

for(inti=0;i<9;i+=2)cout<<setw(5)<<*(a+i)<<’’;

cout<<endl;

}

答案:26101418

3.#include<iomanip.h>

voidmain(){

intx=20,y=40,*p;

p=&x;cout<<*p<<'';

*p=x+10;cout<<*p<<'';

p=&y;cout<<*p<<endl;

*p=y+20;cout<<x<<''<<y<<endl;

}答案:

203040

3060

4.#include<iomanip.h>

intLB(int*a,intn){

ints=1;

for(inti=0;i<n;i++)s*=*a++;

returns;

}

voidmain(){

inta[]={1,2,3,4,5,6,7,8};

intb=LB(a,5)+LB(&a[3],3);

cout<<"b="<<b<<endl;

}

答案:b=240C++語言程序設(shè)計復(fù)習(xí)課一、第六章寫出函數(shù)功能

1.#include<iostream.h>

int*LJ(inta[],intn){

intk=0;

for(inti=1;i<n;i++)

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

return&a[k];

}

答案:求出數(shù)組a中n個元素的最大值元素,返回該元素的地址。2.#include<iostream.h>

voidLI(intn){

int*a=newint[n];

for(inti=0;i<n;i++)cin>>a[i];

for(i=n-1;i>=0;i--)cout<<*(a+i)<<'';

cout<<'\n';

delete[]a;

}

答案:把從鍵盤上輸入的n個整數(shù)按與輸入的相反次序顯示出來。3.voidLK(inta[],intn,int&m){//inta[]同int*a

floats=0;inti;

for(i=0;i<n;i++)s+=a[i];//a[i]同*(a+i)

s/=n;

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

if(a[i]>=s)m++;

}

答案:求出數(shù)組a的n個元素中大于等于平均值的元素個數(shù),該個數(shù)由引用參數(shù)m返回。二、第七章單項選擇題

1.假定一個結(jié)構(gòu)類型的定義為“structA{inta,b;A*c;};〞,那么該類型的大小為________字節(jié)。答案:B

A.8B.12C.16D.20

2.假定一個結(jié)構(gòu)類型的定義為“structD{inta;union{intb;doublec;};D*d[2];};〞,那么該類型的大小為________字節(jié)。答案:D

A.8B.12C.16D.20

3.假定有“structBOOK{chartitle[40];floatprice;};BOOK*book;〞,那么不正確的語句為〔〕。答案:A

A.BOOK*x=newbook;B.BOOKx={"C++Programming",27.0};

C.BOOK*x=newBOOK;D.BOOK**x=&book;

4.假定有“structBOOK{chartitle[40];floatprice;}book;〞,那么正確的語句為〔〕。答案:B

A.BOOK&x=&book;B.BOOK&x=book;

C.BOOK&x=newBOOK;D.BOOK&x=BOOK;三、第七章填空題

1.假定要動態(tài)分配一個類型為Worker的具有n個元素的數(shù)組,并由r指向這個動態(tài)數(shù)組,那么使用的語句表達式為Worker*r=_______________。答案:newWorker[n];

2.假定要訪問一個結(jié)構(gòu)x中的由a指針成員所指向的對象,那么表示方法為____________。答案:n*(x.a)

3.假定要訪問一個結(jié)構(gòu)指針p所指對象中的b指針成員所指的對象,那么表示方法為____________。答案:n*(p->b)

4.與結(jié)構(gòu)成員訪問表達式p->name等價的表達式是____________。答案:n(*p).name

5.與結(jié)構(gòu)成員訪問表達式(*fp).score等價的表達式是____________。答案:nfp->score四、第七章程序運行結(jié)果

1.#include<iostream.h>

structWorker{

charname[15];//姓名

intage;//年齡

floatpay;//工資

};

voidmain(){

Workerx={"wangfong",43,1640};

Workery,*p;

y=x;p=&x;p->pay+=100;

cout<<<<''<<y.age<<''<<y.pay<<endl;

cout<<p->name<<''<<p->age+2<<''<<p->pay+200<<endl;

}

答案:

wangfong431640

wangfong4519402.#include<iostream.h>

#include<string.h>

structWorker{

charname[15];//姓名

intage;//年齡

floatpay;//工資

};

booloperator==(Worker&r1,Worker&r2){

if(strcmp(,)==0)returntrue;

elsereturnfalse;

}

voidmain(){

Workera[4]={{"abc",25,420},{"def",58,638},

{"ghi",49,560},{"jkl",36,375}};

Workerx={"ghi"};

for(inti=0;i<4;i++)if(a[i]==x)break;cout<<a[i].name<<''<<a[i].age<<''<<a[i].pay<<endl;

}

答案:ghi49560

3.#include<iostream.h>

structWorker{

charname[15];//姓名

intage;//年齡

floatpay;//工資

};

booloperator<(Worker&r1,Worker&r2){

if(r1.age<r2.age)returntrue;

elsereturnfalse;

}

voidmain(){

Workera[4]={{"abc",25,420},{"def",58,638},

{"ghi",49,560},{"jkl",36,375}};Workerx=a[0];

for(inti=1;i<4;i++)if(x<a[i])x=a[i];

cout<<<<''<<x.age<<''<<x.pay<<endl;

}

答案:def58638五、第七章寫出函數(shù)功能

1.voidQA(Workera[],intn){

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

cin>>a[i].name>>a[i].age>>a[i].pay;

}

假定結(jié)構(gòu)類型Worker的定義如下:

structWorker{

charname[15];//姓名

intage;//年齡

floatpay;//工資

};

答案:從鍵盤輸入n個Worker類型的記錄到一維數(shù)組a中。2.istream&operator>>(istream&istr,Worker&x){

cout<<"請輸入一個職工記錄:姓名、年齡、工資"<<endl;

istr>>>>x.age>>x.pay;

returnistr;

}//Workera;cin>>a;

假定結(jié)構(gòu)類型Worker的定義如下:

structWorker{

charname[15];//姓名

intage;//年齡

floatpay;//工資

};

答案:重載提取操作符,用于從輸入流中輸入一個Worker類型的記錄到x中。3.voidQB(StrNode*&f,intn){

if(n==0){f=NULL;return;}

f=newStrNode;

cin>>f->name;

StrNode*p=f;

while(--n){

p=p->next=newStrNode;

cin>>p->name;

}

p->next=NULL;

}

假定結(jié)構(gòu)類型StrNode的定義如下:

structStrNode{

charname[15];//字符串域

StrNode*next;//指針域

};

答案:建立一個具有n個結(jié)點的鏈表,每個結(jié)點的字符串值由鍵盤輸入,鏈表的表頭指針由引用變量f帶回。4.voidQC(StrNode*f){

while(f){

cout<<f->name<<'';

f=f->next;

}

}

假定結(jié)構(gòu)類型StrNode的定義如下:

structStrNode{

charname[15];//字符串域

StrNode*next;//指針域

};

答案:遍歷f單鏈表,即從表頭結(jié)點開始依次輸出f單鏈表中每個結(jié)點的值。5.IntNode*FindMax(IntNode*f)

{

if(!f)returnNULL;

IntNode*p=f;

f=f->next;

while(f){

if(f->data>p->data)p=f;

f=f->next;

}

returnp;

}

假定IntNode的類型定義為:

structIntNode{

intdata;//結(jié)點值域

IntNode*next;//結(jié)點指針域

};

答案:從表頭指針f指向的、由IntNode類型的結(jié)點所構(gòu)成的鏈表中查找出data域的值最大的結(jié)點并返回指向該結(jié)點的指針。6.intCount(IntNode*f){

if(!f)return0;

intc=0;

while(f){c++;f=f->next;}

returnc;

}

假定IntNode的類型定義為:

structIntNode{

intdata;//結(jié)點值域

IntNode*next;//結(jié)點指針域

};

答案:統(tǒng)計出以表頭指針為f的鏈表中結(jié)點的個數(shù)。7.voidOutput(IntNode*f){

if(!f)return;

while(f){

cout<<f->data<<’’;

f=f->next;

}

cout<<endl;

}

假定IntNode的類型定義為:

structIntNode{

intdata;//結(jié)點值域

IntNode*next;//結(jié)點指針域

};

答案:對于以表頭指針為f的鏈表,依次顯示出每個結(jié)點的data域的值。1、對于下面的函數(shù)定義:intf(int*a,intlen){if(len<2)returna[len-1];elsereturna[len-1]*f(a,len-1);}如果執(zhí)行:inta[]={1,2,3,4,5};intb=f(a,4);那么程序運行后,b的結(jié)果是〔24〕2、以下語句運行后,a的值為多少?〔-1〕inta=0;if(a>0)if(a>0);elsea++;elsea--;3、以下語句運行后,a的值為多少?〔1〕inta=0;switch〔a++〕{case1:a=1;case2:a=2;case3:a=3;defaulf:a=4;}4、以下程序執(zhí)行后,其a,b的值分別為〔2,0〕VoidMaxInt(inta,intb){If(a>b)a++;Elseb++;}Inta=1,b=0;MaxInt(a,b);5、以下程序執(zhí)行后,其a,b的值為〔2,0〕VoidMaxInt(int*a,int*b){If(*a>*b)(*a)++;else(*b)++;}inta=1,b=0;int*m=&a,*n=&b;MaxInt(m,n);6、以下程序執(zhí)行后,a,b的值為〔1,不確定〕int*p1=newint(1);int*p2=newint[1];inta=*p1;intb=*p2;deletep1;delete[]p2;7、對于下面的函數(shù)定義:intf(int*a,intlen){if(len<2)returna[len-1];elsereturna[len-1]*f(a,len-1);}如果執(zhí)行:inta[]={1,2,3,4,5};intb=f(a,4);那么程序運行后,b的結(jié)果是〔2〕8、以下語句運行后,a的值為多少?〔2〕inta=0;if(a>0)if(a>0);elsea++;elsea--;9、以下語句運行后,a的值為多少?〔3〕inta=0;switch〔a++〕{case1:a=1;case2:a=2;case3:a=3;defaulf:a=4;}10、以下程序執(zhí)行后,其a,b的值分別為〔2,0〕VoidMaxInt(inta,intb){If(a>b)a++;Elseb++;}Inta=1,b=0;MaxInt(a,b);11、以下程序執(zhí)行后,其a,b的值為〔24〕VoidMaxInt(int*a,int*b){If(*a>*b)(*a)++;else(*b)++;}inta=1,b=0;int*m=&a,*n=&b;MaxInt(m,n);12、以下程序執(zhí)行后,a,b的值為〔3〕int*p1=newint(1);int*p2=newint[1];inta=*p1;intb=*p2;deletep1;delete[]p2;第八章一.單項選擇題

1.當(dāng)類中一個字符指針成員指向具有n個字節(jié)的存儲空間時,它所能存儲字符串的最大長度為________。答案:C

A.nB.n+1C.n-1D.n-2

2.假定AB為一個類,那么該類的拷貝構(gòu)造函數(shù)的聲明語句為()。答案:C

A.AB&(ABx);B.AB(ABx)C.AB(AB&);D.AB(AB*x)

3.對類對象成員的初始化是通過執(zhí)行構(gòu)造函數(shù)中的()完成的。答案:A

A.初始化表B.函數(shù)體C.參數(shù)表D.基類表

4.假定AB為一個類,那么執(zhí)行“ABa,b(3),*p;〞語句時,自動調(diào)用該類構(gòu)造函數(shù)的次數(shù)為()。答案:A

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

5.假定AB為一個類,那么執(zhí)行“ABa(4),b[3],*p[2];〞語句時,自動調(diào)用該類構(gòu)造函數(shù)的次數(shù)為()。答案:B

A.3B.4C.6D.96.假定AB為一個類,px為指向該類動態(tài)對象數(shù)組的指針,該數(shù)組長度為n,那么執(zhí)行“delete[]px;〞語句時,自動調(diào)用該類析構(gòu)函數(shù)的次數(shù)為()。答案:C

A.0B.1C.nD.n+1

7.對于類中定義的成員,其隱含訪問權(quán)限為()。答案:C

A.publicB.protectedC.privateD.static

8.對于結(jié)構(gòu)中定義的成員,其隱含訪問權(quán)限為()。答案:A

A.publicB.protectedC.privateD.static

9.為了使類中的成員不能被類外的函數(shù)通過成員操作符訪問,那么不應(yīng)把該成員的訪問權(quán)限定義為()。答案:A

A.publicB.protectedC.privateD.static

10.一個類的友元函數(shù)或友元類能夠通過成員操作符訪問該類的()。答案:D

A.私有成員B.保護成員C.公用成員D.所有成員11.在一個類的定義中,通常要包含有〔〕成員的定義。答案:C

A.?dāng)?shù)據(jù)B.函數(shù)C.?dāng)?shù)據(jù)和函數(shù)D.?dāng)?shù)據(jù)或函數(shù)

12.在類作用域中能夠通過直接使用該類的〔〕成員名進行訪問。答案:D

A.私有B.公用C.保護D.任何

13.在關(guān)鍵字public后面定義的成員為類的〔〕成員。答案:B

A.私有B.公用C.保護D.任何

14.在關(guān)鍵字private后面定義的成員為類的〔〕成員。答案:A

A.私有B.公用C.保護D.任何

15.假定AA為一個類,a為該類公有的數(shù)據(jù)成員,x為該類的一個對象,那么訪問x對象中數(shù)據(jù)成員a的格式為〔〕。答案:D

A.x(a)B.x[a]C.x->aD.x.a

溫馨提示

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

評論

0/150

提交評論