《C++語言基礎教程》清華大學出版社-呂鳳翥編著-課后習題答案_第1頁
《C++語言基礎教程》清華大學出版社-呂鳳翥編著-課后習題答案_第2頁
《C++語言基礎教程》清華大學出版社-呂鳳翥編著-課后習題答案_第3頁
《C++語言基礎教程》清華大學出版社-呂鳳翥編著-課后習題答案_第4頁
《C++語言基礎教程》清華大學出版社-呂鳳翥編著-課后習題答案_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第r才融<

一、選擇填空

1.下列各種高級語言中,()是面向?qū)ο蟮某绦蛟O計語言。

A.BASIC;B.PASCAL;C.C++D.Ada

2.下列各種高級語言中,()是最早提出了對象的概念。

A.Algol60;B.Simula67;C.Smalltalk;D.C++

3.下述面向?qū)ο蟪橄蟮脑碇校ǎ┦遣粚Φ摹?/p>

A.數(shù)據(jù)抽象;B.行為共享;C.進化;D.兼容;

4.()不是面向?qū)ο笙到y(tǒng)所包含的要數(shù)。

A.重載;B.對象;C.類;D.繼承;

5.關于C++與C語言的關系的描述中,()是錯誤的。

A.C語言是C++的一個子集;B.C語言與C++是兼容的;

C.C++對C語言進行了一些改進;D.C++和C語言都是面向?qū)ο蟮模?/p>

6.下面關于對象概念的描述中,()是錯誤的。

A.對象就是C語言中的結(jié)構變量;B.對象代表著正在創(chuàng)建的系統(tǒng)中的一個實體;

C.對象是一個狀態(tài)和操作(或方法)的封裝體;D.對象之間的信息傳遞是通過消息進行的;

7.下面關于類概念的描述中,()是錯誤的。

A.類是抽象數(shù)據(jù)類型的實現(xiàn);B.類是具有共同行為的若干對象的統(tǒng)一描述體;

C.類是創(chuàng)建對象的樣板;D.類就是C語言中的結(jié)構類型;

8.C++對C語言作了很多改進,下列描述中()使得C語言發(fā)生了質(zhì)變,即從面向過程變成為

面向?qū)ο蟆?/p>

A.增加了一些新的運算符;B.允許函數(shù)重載,并允許設置缺省參數(shù);

C.規(guī)定函數(shù)說明必須用原型;D.引進了類和對象的概念;

9.按照標識符的要求,()符號不能組成標識符。

A.連接符;B.下劃線;C.大小寫字母;D.數(shù)字字符;

10.下列符號中,()不可作為分隔符。

A.,;B.:;C.?;D.;

二、判斷下列描述的正確性,對者劃錯者劃X。

1.C++引進了引用的概念,對編程帶來了很多方便。V

2.C++允許使用友元,但是友元會破壞封裝性。V

3.C++中使用了新的注釋符(//),C語言中注釋符(/*…*/)不能在C++中使用。X

4.C++中為了減輕使用者的負擔,與C語言相比較C++中減少了一些運算符。X

5.C++程序中,每條語句結(jié)束時都加一個分號(;)?V

6.C++中標識符內(nèi)的大小寫字母是沒有區(qū)別的。X

7.C++中不允許使用宏定義的方法定義符號常量,只能用關鍵字const來定義符號常量。X

8.在編寫C++程序時,一定要注意采用人們習慣使用的書寫格式,否則將會降低其可讀性。V

9.C++是一種以編譯方式實現(xiàn)的高級語言。V

10.在C++編譯過程中,包含預處理過程、編譯過程和連接過程,并且這三個過程的順序是不能改

變的。V

II.預處理過程是一般編譯過程之后連接過程之前進行的。X

12.源程序在編譯過程中可能會出現(xiàn)一些錯誤信息,但在連接過程中將不會出現(xiàn)錯誤信息。X

三、分析下列程序的輸出結(jié)果

1.#include<iostream.h>

voidmain()

{

cout?MBeiJing"?Hn;

cout?uShangHai"?u\n

cout?"TianJing"?endl;

)

1.BeiJjingShangHai

TianJing

2.#include<iostream.h>

voidmain()

(

inia,b;

cout?"inputa,b:";

cin?a?b;

cout?Ha=u?a?",',?,,b=H?b?endl;

cout?',a-b=,,?a-b?',\n";

)

假定,輸入如下兩個數(shù)據(jù):85

2.Inputa,b:85

A=8,b=5

A-b=3

3.#include<iostream.h>

voidmain()

(

charc='m';

intd=5;

cout?Hd="?d?n:";

cout?"c=',?c?,'\n,';

)

D=5,c=m

四、編譯下列程序,改正所出現(xiàn)的各種錯誤信息,并分析輸出結(jié)果:

1、main()

(

cout?"Thisisastring!";

)

1.#include<iostream.h>

voidmain()

(

coutvv”Thisisastring!^^;

)

輸出結(jié)果:Thisisastring!

2、#include<iostream.h>

voidmain()

cin?x;

intp=x*x;

cout?"p=?p?\n";

}

#include<iostreain.h>

voidmain()

(

intx;

cin?x;

intp=x*x;

coutvv"p="vvpv<”\n”;

)

輸出結(jié)果:3

p=9

3、#include<iostream.h>

voidmain()

{inti,j;

i=5;

intk=i+j;

cout?ui+j=n?k?n\nn;

)

#include<iostream.h>

voidmain()

{intij;

i=5;

j=3;

intk=i+j;

coutvv"i+j="<vkvv"\n”;

)

輸出結(jié)果:I+j=8

五、通過對第四題中三個程序的所出現(xiàn)問題的修改,回答下列問題:

1.從對第四題1題的修改中,總結(jié)出編程時應注意哪三個問題?

2.C++程序中所出現(xiàn)的變量是否都必須先說明才能引用?

3.使用cout和運算符<<輸出字符串時應注意什么問題?

4.有些變量雖然說明了但是沒有賦值,這時能否使用?

5.一個程序編譯通過了并且運行后得到了輸出結(jié)果,這個結(jié)果是否一定是正確的?

第二*刃敢

一、選擇填空

1、在16位機中,int型字寬為()字節(jié)。

A.2;Bo4;Co6;D8

2、類型修飾符unsigned修飾()類型是錯誤的。

A.char;B.int;C.longint;Dfloat

3、下列十六進制的整型數(shù)常數(shù)表示中,()是錯誤的。

A.Oxaf;B.OXlb;C.2fx;D.OxAE

4、下列double型常量表示中,()是錯誤的。

A.E15;B..35;C.3E5;D.3E-5

5、下列字符常量表示中,()是錯誤的。

A.'\105’;B.C.''4f';D.’\a'

6、下列字符串常量表示中,()是錯誤的。

A."\"yes\uor\"No\'M,;B.'VOK!\,H;C."abcd\n";D.,,ABC\OU

7、下列變量名中,()是合法的。

A.CHINA;B.byte-size;C.double;D.A+a

8、在inta[5]={l,3,5};中,數(shù)組元素a[l]的值是()。

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

9、在血印[3]={{1},{3,2},{4,5,6},{0}};中2[2][2]的值是()。

A.0;B.5;C.6;D.2

10、下列給字符數(shù)組進行初始化中,()是正確的。

A.chars1[]="abcd;B.chars2l3J="xyz";

C.chars3[][3]={'a','x','y'};D.chars4[2[3]={"xyz","mnp"!;

H、在inta=3,*p=&a;中,*p的值是()?

A.變量a的地址值;B.無意義:C.變量p的地址值:D.3

12、對于int*pa[5];的描述,()是正確的。

A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素;

B.pa是一個指向某個數(shù)組中第5個元素的指針,該元素是int型變量;

C.pa[5]表示某個數(shù)組的第5個元素的值;

D.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針;

13、下列關于指針的運算中,()是非法的。

A.兩個指針在一定條件下,可以進行相等或不等的運算;

B.可以用一個空指針賦值給某個指針;

C.一個指針可以加上兩個整數(shù)之差;

D.兩個指針在一定條件卜,可以相加。

14、指針可以用來表示數(shù)組元素,下列表示中()是錯誤的。

已知:inta[3][7];

A.*(a+l)[5];B.*(*a+3);C.*(*(a+l));D.*(&a[0][0]+2)

15、下列表示引用的方法中,()是正確的。

已知:intm=10;

A.int&x=m;B.int&y=10;C.int&z;D.float&t=&m

16、下列各運算符中,()可以作用于浮點數(shù)。

A.++;B.%;C.?;D.&

17、下列各運算符中,()不能作用于浮點數(shù)。

A./;B.&&;C.!;D.~

18、下列各運算符中,。優(yōu)先級最高。

A.+(雙目);B.*(單目);C.<=;D.*=

19、下列各運算符中,()優(yōu)先級最低。

A.?:;B.I;C.II;D.!=

20、下列各運算符中,。結(jié)合性從左到右。

A.三目;B.賦值;C.比較;D.單目

21、下列表達式中,()是非法的。

已知:inta=5;floatb=5.5;

A.a%3+b;B.b*b&&++a;C.(a>b)+(int(b)%2);D.--a+b

22、下列表達式中,()是合法的。

己知:doublem=3.2;intn=3;

A.m?2;B.(m+n)lnC.!m*=n;D.m=5,n=3.1,m+n

23、下列關于類型轉(zhuǎn)換的描述中,()是錯誤的。

A.在不同類型操作數(shù)組成的表達式中,其表達式類型一定是最高類型double型;

B.逗號表達式的類型是最后一個表達式的類型;

C.賦值表達式的類型是左值的類型;

D.在由底向高的類型轉(zhuǎn)換中是保值映射。

24、下列各表達式中,()有二義性。

已知:inta(5);b(6);

A.a+b?3;B.++a+b++;C.b+(a=3);D.(a=3)-a++

二、判斷下列描述是否正確,對者劃錯者劃X。

1、任何字符常量與個任意大小的整型數(shù)進行加減都是有意義的。X

2、轉(zhuǎn)義序列表示法只能表示字符不能表示數(shù)字。V

3、在命名標識符中,大小寫字母是不加區(qū)別的。X

4、C++的程序中,對變量一定要先說明再使用,說明只要在使用之前就可以。J

5、C++中數(shù)組元素的下標是從0開始,數(shù)組元素是連續(xù)存儲在內(nèi)存單元中的。V

6、數(shù)組賦初值時,初始值表中的數(shù)據(jù)項的數(shù)目可以大于或等于數(shù)組元素的個數(shù)。X

7、枚舉變量的取值受到該枚舉變量所對應的枚舉表中的枚舉符的局限。V

8、指針是用來存放某種變量的地址值的變量。這種變量的地址值也可以存放在某個變量

中,存放某個指針的地址值的變量稱為指向指針的指針,即二級指針。V

9、引用是用來給某個變量以別名的變量。,對引用的操作,實質(zhì)上就是對被引用的變量的

操作。V

10、運算符的優(yōu)先級和結(jié)合性可以確定表達式的計算順序。V

11、在說明語句中,的值和的值是相等的。V

12、已知:表達式具有兩用性。X

13、移位運算符在移位操作中,無論左移還是右移,所移出的空位一律補0;X

14、某個變量的類型高是指該變量被存放在內(nèi)存中的高地址處。X

15、隱含的類型轉(zhuǎn)換都是保值映射,顯式的類型轉(zhuǎn)換都是非保值映射。X

16、類型定義是用來定義一些C++中所沒有的新的類型。X

三、計算下列各表達式的值

(下列各表達式是相互獨立的,不考慮前面對后面的影響。)

1>已知:unsignedintx=015,y=0x2b;

A.xly;B.xAy;C.x&y;D.~x+~y;E.x?=3;F.y?=4.

ABC1)EF

4738942949672381042

:inti(10),j(5);

A.++i-j-;B.i=i*=j;C.i=3/2*(j=3-2);D.~iAj;E.i&jll;F.i+i&Oxff.

ABCDEF

6501-16120

:inta(5),b(3);計算下列表達式得值以及a和b的值。

A.!a&&b++;B.allb+4&&a*b;C.a=1,b=2,a>b?++a:++b;D.++b,a=10,a+5;

E.a+=b%=a+b;F.a!=b>2<=a+1.

ABcI)EF

0,5,31,5,33,1,315,10,48,8,31,5,3

:intd(5),*pd;&d,&rd=d;

A.d+-rd;B.*pd*rd;C.++*pd-rd;D.++rd-d.

ABCD

02500已知:T的ASCII碼的值為49。

A.3+2?l+l;B.2*9I3?1;

C.5%?3*2/6-3;D.8==3<=2&5;

E.!(3,>,5,)II2<6;E6>=3+2-(<0,-7).

ABCDEF

2022-3011

列要求編寫程序

1.從鍵盤上輸入兩個int型數(shù),比較其大小,并輸出顯示其中小的。

2.從鍵盤上輸入一個int型數(shù),一個浮點型數(shù)比較其大小,并輸出其中大的。

3.輸入一攝氏溫度,編程輸出華氏溫度。已知:華氏溫度轉(zhuǎn)換為攝氏溫度的計算公式如下:

C=(F-32)*5/9

其中,F(xiàn)表示華氏溫度,C表示攝氏溫度。

#include<iostream.h>

voidmain()

(

floatc,f;

coutvv”華氏溫度:cin?f;

c=(f-32)*5/9;

cout?,9攝氏溫度:”<vc<vendl;

)

4.編程實現(xiàn)輸入公里數(shù),輸出顯示其英里數(shù)。已知:1英里=1.60934公里(用符號常量)。

#include<iostream.h>

constfloatr=1.60934;

voidmain()

floatmJ;

coutvv”公里數(shù)

cin?m;

I=r*m;

coutvv”英里數(shù):,,?I?endl;

5.輸入一個int型數(shù),將它的低4位(右4位)都置為1。

#include<iostream.h>

voidmain()

(

intn9m;

coutvv”輸入一個整數(shù):”;

cin?n;

m=nll5;

coutvv”結(jié)果為:”vvmvvendl;

第三才制題

一、選擇填空

1.預處理命令在程序中都是以()開頭的。

A.*;B.#;C.:;D./;

2.文件包含命令中被包含的文件的擴轉(zhuǎn)名()o

A.必須為.h;B.不能用.h;C.必須是.c;D.不?定是.h;

3.下列條件編譯命令中

#if()

〈語句序列1>

#else

〈語句序列2>

#endif

A.整常量表達式;B.任何標識符;C.任意表達式;D.被定義的宏名;

4.帶參數(shù)的宏定義中,程序中引用宏定義的實參()。

A.只能是常量;B.只能是整型量;C.只能是整形表達式;D.可以是任意表達式;

5.下列()是語句

A.;;B.a=17;C.x+y;D.cout?),\n,,;

6.下列for循環(huán)的次數(shù)為()。

for(inti(0),x=0;!x&&i<=5;i++)

A.5;B.6;CID.無限;

7.下列while循環(huán)的次數(shù)是()。

while(inti=0)i-

A.0;B.l;C.5;D.無限;

8.下列do-while循環(huán)的循環(huán)次數(shù)為()。

已知:inti(5);

do{cout?i--?endl;

)while(i!=O);

A.O;B.l;C.5;D.無限;

9.下列for循環(huán)的循環(huán)體執(zhí)行次數(shù)為()。

for(inti(0),j(10);i=j=10;i++,j--)

A.O;B.l;C.10;D.無限;

10.己知:inta,b;下列switch語句中,()是正確的。

A.switch(a);

{casea:a++;break;

caseb:b++;break;

)

B.switch(a+b)

{case1:a+b;break;

case2:a-b

}l

C.switch(a*a)

{easel,2:++a;

case3,4:++b;

)

D.switch(a/10+b)

{case5:a/5;break

default:a+b;

)

11.下述關于循環(huán)體的描述中,()是錯誤的。

A.循環(huán)體中可以出現(xiàn)break語句和continue語句;

B.循環(huán)體中還可以出現(xiàn)循環(huán)語句;

C.循環(huán)體U?不能出現(xiàn)goto語句;

D.循環(huán)體中可以出現(xiàn)開關語句。

12.下述關于goto語句的描述中,()是正確的。

A.goto語句可在一個文件中隨意轉(zhuǎn)向;

B.goto語句后面要跟上一個他所轉(zhuǎn)向的語句;

C.goto語句可以同時轉(zhuǎn)向多條語句;

D.goto語句可以從一個循環(huán)體內(nèi)轉(zhuǎn)到循環(huán)體外。

13.下述關于break語句的描述中,()是正確的。

A.break語句可用于循環(huán)體內(nèi),它將退出該重循環(huán);

B.break語句可用于開關語句中,它將退出開關語句。

C.break語句可用于if體內(nèi),它將退出if語句;

D.break語句在?個循環(huán)體內(nèi)可以出現(xiàn)多次。

14.下述關于開關語句的描述中,()是正確的。

A.開關語句中default子句可以沒有,也可以有一個;

B.開關語句中每個語句序列中必須有break語句;

C.開關語句中default子句只能放在最后;

D.開關語句中case子句后面的表達式可以是整形表達式。

15.下列關于條件語句的描述中,()是錯誤的。

A.if語句中只有一個else子句;

B.if語句中可以有多個elseif子句;

C.if語句中if體內(nèi)不能是開關語句;

D.if語句中的if體中可以是循環(huán)語句。

二、判斷下列描述是否正確,對者劃錯者劃X。

1.預處理命令是在進行編譯時首先執(zhí)行的,然后再進行正常編譯。V

2.宏定義命令是以分號結(jié)束的。X

3.帶參數(shù)的宏定義只能有1至2個參數(shù)。X

4.文件包含命令所包含的文件是不受限制的。X

5.條件編譯命令只在編譯時才有作用。V

6.預處理命令的主要作用是提高效率的。X

7.復合語句就是分程序。X

8.條件語句不能作為多路分支語句。X

9,開關語句不可以嵌套,在開關語句的語句序列中不能再有開關語句X

10.開關語句中的default關鍵字,只能放在該語句的末尾,不能放在開頭或中間。X

11.Switch語句中必須有break語句否則無法退出switch語句。X

12.While循環(huán)語句的循環(huán)體至少執(zhí)行一次。X

13.Do-while循環(huán)可以寫成while循環(huán)的格式。V

14.For循環(huán)是只有可以確定的循環(huán)次數(shù)時才可使用,否則不能用for循環(huán)。X

15.只有for循環(huán)的循環(huán)體可以是空語句,其他種循環(huán)的循環(huán)體不能用空語句。X

16.當循環(huán)體為空語句時,將說明該循環(huán)不作任何工作,只起延時作用。X

17.循環(huán)是可以嵌套的,一個循環(huán)體內(nèi)可以包含另一,種循環(huán)語句。V

18.在多重循環(huán)中,內(nèi)重循環(huán)的循環(huán)變量應用的次數(shù)比外重的多。V

19.Break語句可以出現(xiàn)在各種循環(huán)體中。V

20.continue語句只能出現(xiàn)在循環(huán)體中。V

三、分析下列程序的輸出結(jié)果。

1.

#include<iostream.h>

#defineM1.5

#defineA(a)M*a

voidmain()

(

intx(5),y(6);

cout?A(x+y)?endl;

)

13.5

2.

#include<iostream.h>

#defineMAX(a,b)(a)>(b)?(a):(b)

voidmain()

intm(l),n(2),p(0),q;

q=MAX(n,n+p)*10;

cout?q?endl;

20

3.

#include<iostream.h>

#inckide"fl.cpp''

voidmain()

(

inta(5),b;

b=fl(a);

cout?b?endl;

)

fl.cpp文件內(nèi)容如下:

#defineM(m)m*m

fl(intx)

(

inta(3);

return-M(x+a);

)

13

4.

#include<iostream.h>

voidmain()

(

inti(0);

while(++i)

(

if(i==10)break;

if(i%3!=l)continue;

cout?i?endl;

)

)

1

4

7

5.

#include<iostream.h>

voidmain()

(

inti(l);

do{

i++;

cout?++i?endl;

if(i==7)break;

}while(i==3);

cout<v''Ok!\n'';

Ok!

6.

#include<iostream.h>

voidmain()

(

inti(l),j(2),k(3),a(10);

if(!i)

a--;

elseif(j)

if(k)a=5;

else

a=6;

a++;

cout?a?endl;

if(i<j)

if(i!=3)

if(!k)

a=l;

elseif(k)

a=5;

a+=2;

cout?a?endl;

)

6

7

7.

#include<iostream.h>

voidmain()

(

inti,j,a[8][8];

**a=1;

for(i=l;i<8;i++)

(

**(a+i)=1;

*(*(a+i)+i)=l;

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

*(*(a+i)+j)=*(*(a+i-l)+j-l)+*(*(a+i-l)+j);

)

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

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

cout?,H,?*(*(a+i)+j);

cout?endl;

)

)

7.1

11

121

1331

14641

15101051

1615201561

8.

#include<iostream.h>

voidmain()

(

intx(5);

do{

switch(x%2)

(

casel:x-

break;

case0:x++;

break;

)

x--;

cout?x?endl;

}while(x>0);

)

8.3

1

-1

9.

#include<iostream.h>

voidmain()

(

inta(5),b(6),i(0),j(0);

switch(a)

(

case5:switch(b)

case5:i++;break;

case6:j++;break;

default:i++;j++;

)

case6:i++;

j++;

break;

default:i++;j++;

}

cout?i?,,,4<?j?endl;

)

1,2

10.

#include<iostream.h>

charinput[]=nSSSWIUrECHl\l\llW\lWALLMPr';

voidmain()

(

inti;

charc;

for(i=2;(c=input[i])!=W;i++)

{

switch(c)

(

case'a':coutvvT;

continue;

case'Tibreak;

casel:while((c=input[++i])!=M,&&c!='\O');

case9:cout?c;

case'E':

case'L':continue;

default:cout?c;continue;

)

cout?'

)

cout?endl;

)

SWITCHOWAMP

四、按下列要求編程,并上機調(diào)試。

1.求100之內(nèi)的自然數(shù)中奇數(shù)之和。

2.求100之內(nèi)的自然數(shù)中被13整除的最大數(shù)。

3.求輸入兩個正整數(shù)的最大公約數(shù)和最小公倍數(shù)。

4.求下列分數(shù)序列的前15項之和。

2/1,3/2,5/3,8/5,13/8,21/13,...

5.求Ei!(i=l,...,10)(即求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!之和)

6.求出1?1000之間的完全平方數(shù)。所謂完全平方數(shù)是指能夠表示成為另一個證書的平方的

整數(shù)。要求每行輸出8個數(shù)。

7.輸入4個int型數(shù),按其大小順序輸出。

8.有一函數(shù)如下所示:

x(x<l)

Y=x+5(KxvlO)

,x-5(x21O)

已知x值時,輸出y值。

9.求一元二次方程ax?+bx+c=O的解。

討論下述情況:

(1)b2-4ac=0,有兩個相等實根;

(2)b2-4ac>0,有兩個不等實根;

⑶b2-4ac<0,有兩個共輒復根;

(4)a=0,不是二次方程。

10.編程輸出如下圖案。

**

****

******

****

**

第四才

一、選擇填空

1.當一個函數(shù)無返回值時,定義它時函數(shù)的類型應是()

A.void;B.任意;C.int;D.無;

2.在函數(shù)說明時,下列()項是不必要的。

A.函數(shù)的類型;B.函數(shù)參數(shù)類型和名次;C.函數(shù)名字;D.返回值表達式;

3.在函數(shù)的返回值類型與返回值表達式的類型的描述中,()是錯誤的。

A.函數(shù)的返回值的類型是定義函數(shù)時確定的;

B.函數(shù)的返回值的類型就是返回值表達式的類型;

C.函數(shù)的返回值表達式的類型與函數(shù)返回值類型不同時,表達示類型應轉(zhuǎn)換成函數(shù)返回

值類型;

D.函數(shù)的返回值類型決定了返回值表達式的類型。

4.在一個被調(diào)用函數(shù)中,關于return語句使用的描述,()是錯誤的。

A.被調(diào)用函數(shù)中可以不用return語句;

B.被調(diào)用函數(shù)中可以使用多個return語句;

C.被調(diào)用函數(shù)中,如果有返回值,就一定要有return語句;

D.被調(diào)用函數(shù)中,一個return語句可返回多個值給調(diào)用函數(shù)。

5.下列()是引用調(diào)用

A.形參是指針,實參是地址值;

B.形參和實參都是變量;

C.形參是數(shù)組名,實參是數(shù)組名;

D.形參是引用,實參是變量。

6.在傳值調(diào)用中,要求(

A.形參和實參類型任意,個數(shù)相等;

B.形參和實參類型都完全致,個數(shù)相等;

C.形參和實參對應的類型一致,個數(shù)相等;

D.形參利實參對應的類型一致,個數(shù)任意。

7.在C++中,關于下列設置參數(shù)默認的描述中,()是正確的。

A.不允許設置參數(shù)的默認值;

B.設置參數(shù)默認值只能在定義函數(shù)時設置;

C.設置參數(shù)默認值時,應該是先設置右邊的再設置左邊的;

D.設置參數(shù)默認值時,應該全部參數(shù)都設置;

8.重載函數(shù)在調(diào)用時選擇的依據(jù)中,()是錯誤的。

A.參數(shù)個數(shù);B.參數(shù)的類型;C.函數(shù)名字;D.函數(shù)的類型;

9.下列的標識符中,()是文件級作用域的。

A.函數(shù)形參;B.語句標號;C.外部靜態(tài)類標識符;D.自動類標識符。

10.有--個int型變量,在程序中使用頻度很高,最好定義為()。

A.register;B.auto;C.extern;D.static;

11.下列標識符中,()不是局部變量。

A.register類;B.外部static類;C.auto類;D.函數(shù)形參;

12.下列存儲類標識符中,()的可見性與存在性不一值。

A.外部類;B.自動類;C.內(nèi)部靜態(tài)類;D.寄存器類。

13.下列存儲類標識符中,要求通過函數(shù)來實現(xiàn)?種不太復雜的功能,并且要求加快執(zhí)行速度,

選用()合適。

A.內(nèi)聯(lián)函數(shù);B.重載函數(shù);C.遞歸調(diào)用;D.嵌套調(diào)用。

14.采用函數(shù)重載的目的在于()o

A.實現(xiàn)共享;B.減少空間;C.提高速度;D.使用方便,提高可讀性。

15.在將兩個字符串連接起來組成一個字符串時,選用()函數(shù)。

B.A.strlen();B.strcpy();C.strcat();D.strcmp.

二、判斷下列描述的正確性,對者劃J,錯者劃X。

1-在C++中,定義函數(shù)時必須給出函數(shù)的類型J

2.在C++中,說明函數(shù)時要用函數(shù)原型,即定義函數(shù)時的函數(shù)頭部分。V

3.在C++中,所有函數(shù)在調(diào)用前都要說明。X

4.如果一個函數(shù)沒有返回值,定義時需用void說明。V

5.在C++中,傳址調(diào)用將被引用調(diào)用所代替。X

6.使用內(nèi)聯(lián)函數(shù)是以犧牲增大空間開銷為代價的。V

7.返回值類型、參數(shù)個數(shù)和類型都相同的函數(shù)也可以重載。X

8.在設置了參數(shù)默認值后,調(diào)用函數(shù)的對應實參就必須省略。X

9.計算函數(shù)參數(shù)順序引起的二義性完全是由不同的編譯系統(tǒng)決定的。J

10.For循環(huán)中,循環(huán)變量的作用域是該循環(huán)的循環(huán)體內(nèi)。V

11.語句標號的作用域是定義該語句標號的文件內(nèi)。X

12.函數(shù)形參的作用域是該函數(shù)的函數(shù)體。V

13.定義外部變量時,不用存儲類說明符extern,而說明外部變量時用它。4

14.內(nèi)部靜態(tài)類變量與自動類變量作用域相同,但是生存期不同。V

15.靜態(tài)生存期的標識符的壽命是短的,而動態(tài)生存期的標識符的壽命是長的。X

16.重新定義的標識符在定義它的區(qū)域內(nèi)是可見的,而與其同名的原標識符在此區(qū)域內(nèi)是不

可見的。但是,它是存在的。V

17.靜態(tài)類標識符在它的作用域之外是不存在的。X

18.所有的函數(shù)在定義它的程序中都是可見的。X

19.編譯系統(tǒng)所提供的系統(tǒng)函數(shù)都被定義在他所對應的頭文件中。J

20.調(diào)用系統(tǒng)函數(shù)時,要先將該系統(tǒng)函數(shù)的原型說明所在的頭文件包含進去。V

三、分析下列程序的輸出結(jié)果。

1.#include<iostream.h>

#defineN5

voidfun();

voidmain()

(

for(inti(l);i<N;i++)

fun();

)

voidfun()

(

staticinta;

intb(2);

cout?(a+=3,a+b)?endl;

)

1.5

8

11

14

2.#include<iostream.h>

intadd(inta,intb);

voidmain()

(

externintx,y;

cout?add(x,y)?endl;

)

intx(20),y(5);

intadd(inta,intb)

(

ints=a+b;

returns;

)

25

3.#include<iostream.h>

voidf(intj);

voidmain()

for(inti(l);i<=4;i++)

f(i);

)

voidf(intj)

(

staticinta(10);

intb(l);

b++;

cout<<a?,,+,,?b?,,+,,?j?,,=,,?a+b+j?endl;

a+=10;

)

2.10+2+1=13

20+2+2=24

30+2+3=35

40+2+4=46

4.#include<iostream.h>

voidf(intn)

(

intx(5);

staticinty(10);

if(n>0)

(

++x;

++y;

cout?x?,\,,?y?endl;

)

)

voidmain()

(

intm(l);

f(m);

)

6,11

5.#include<iostream.h>

intfac(inta);

voidmain()

(

ints(0);

for(inti(l);i<=5;i++)

s+=fac(i);

cout?,,5!+4!+3!+2!+l!=,,?s?endl;

)

intfac(inta)

staticintb=l;

b*=a;

returnb;

)

5!+4!+3!+2!+l!=153

6.#include<iostream.h>

voidfun(int,int,int*);

voidmain()

(

intx,y,z;

fun(5,6,&x);

fun(7,x,&y);

fun(x,y,&z);

cout?x?,,,,,?y?,,/,<<z?endl;

)

voidfun(inta,intb,int*c)

(

b+=a;

*c=b-a;

)

6,6,6

7.#include<iostream.h>

intadd(intx,inty=8);

voidmain()

(

inta(5);

cout?vsum1=,,?add(a)?endl;

cout?,,sum2=,,?add(a,add(a))?endl;

cout?,,sum3=,,?add(a,add(a,add(a)))?endl;

}

intadd(intx,inty)

(

returnx+y;

)

suml=13

sum2=18

sum3=23

8.#include<iostream.h>

#defineN6

intfl(inta);

voidmain()

inta(N);

cout?f1(a)?endl;

)

intfl(inta)

(

return(a==0)?l:a*fl(a-l);

)

720

9.#include<iostream.h>

voidswap(int&,int&);

voidmain()

(

inta(5),b(8);

cout?,,a=,,?a?,,/t?,,b=,,?b?endl;

swap(a,b);

cout?,,a=,,?a?,,/t?,,b=,,?b?endl;

}

voidswap(int&x,int&y)

(

inttemp;

temp=x;

x=y;

y=temp;

}

a=5,b=8

a=8,b=5

10.#include<iostream.h>

int&fl(intn,ints[])

(

int&m=s[n];

returnm;

}

voidmain()

(

ints[]={5,4,3,2,l,0};

fl(3,s)=10;

cout?f1(3,s)?endl;

)

10

11.#include<iostream.h>

voidprint(int),print(char),print(char*);

voidmain()

(

intu(1998);

print('u');

print(u);

print("abcd”);

)

voidprint(charx)

(

cout?x?endl;

)

voidprint(char*x)

(

cout?x?endl;

)

voidprint(intx)

(

cout?x?endl;

)

u

1998

abed

12.#include<iostream.h>

voidff(int),ff(double);

voidmain()

(

floata(88.18);

ff(a);

charb('a');

ff(b);

)

voidff(intx)

(

cout?,,ff(int):,,?x?endl;

}

voidff(doublex)

(

cout?,,ff(double):,,?x?endl;

)

ff(double):88.18

ff(int):97

四、按下列要求編程,并上機驗證。

1.從鍵盤上輸入15浮點數(shù),求出其和幾平均值。要求寫出求和平均值的函數(shù)。

2.從鍵盤上輸入10個int型數(shù),去掉重復的。降其剩余的由大到小排序輸出。

3.給定某個年、月、日的值,例如,1998年4月7日。計算出這一天是該年的第幾天。要求寫

出計算潤年的函數(shù)和計算日期的函數(shù)。

4.寫出一個函數(shù),使從鍵盤上輸入的一個字符串反序存放,并在主函數(shù)中輸入和輸出該字符串。

5.寫出一個函數(shù),要求將輸入的卜六進制數(shù)轉(zhuǎn)換成卜進制數(shù)。要求函數(shù)調(diào)用時,使用指針作函

數(shù)形參。

6.編寫兩個函數(shù):一個是將一個5位int型數(shù)轉(zhuǎn)換成為每兩個數(shù)字間加?個空格的空字符串;

另一個是求出轉(zhuǎn)換后的字符串的長度。由主函數(shù)輸入int型數(shù),并輸出轉(zhuǎn)換后的字符串和長

度。

7.輸入5個學生4門功課的成績,然后求出:

A.每個學生的總分;B.每門課程的平均分;C.輸出總分最高的學生的姓名和總分數(shù)。

8.使用遞歸調(diào)用方法將一個n位整數(shù)轉(zhuǎn)換成字符串。

9,使用函數(shù)重載的方法定義兩個重名函數(shù),分別求出int型數(shù)的兩個點間距離和浮點數(shù)的兩點間

距離。

10.已知二維字符數(shù)組刈[5]=「匕改<1”,,立811”,飛141”,”171110^};使用字符串處理函數(shù),將該數(shù)組的4

個字符串連接起來,組成一個字符串:abcdefghijklmnop?

11,編程求下式的值:nl+n2+n3+n4+…+nlO,其中n=l,2,3。編寫函數(shù)時,設置參數(shù)n的默認值

為2。

12.編一個程序驗證哥德巴赫猜想:任何一個充分大的偶數(shù)(大于等于6)總可以表示成兩個

素數(shù)之和。要求編一個求素數(shù)prime。函數(shù),它有一個int型參數(shù),當參數(shù)值為素數(shù)時返回

1,否則返回0。

第a?力敢

一、選擇填空

i.在下列關鍵字中,用以說明類中公有成員的是()

A.public;B.private;C.protected;D.friend;

2.下列的各類函數(shù)中,()不是類的成員函數(shù)。

A.構造函數(shù);B.析構函數(shù);C.友元函數(shù);D.拷貝初始化構造函數(shù);

3.作用域運算符的功能是()o

A.標識作用域的級別的;B.指出作用域的范圍的;

C.給定作用域的大小的;D.標識某個成員是屬于哪個類的。

4.()是不可能作為該類的成員的。

A.自身類對象的指針;B.自身類的對象;

C.自身類對象的引用;D.另一個類的對象。

5.()不是構造函數(shù)的特征

A.構造函數(shù)的函數(shù)名與類名相同;

B.構造函數(shù)可以重載;

C.構造函數(shù)可以設置缺省參數(shù);

D.構造函數(shù)必須指定類型說明。

6.()是析構函數(shù)的特征。

A.一個類中只能定義一個析構函數(shù);

B.析構函數(shù)與類名不同;

C.析構函數(shù)的定義只能在類體內(nèi);

D.析構函數(shù)可以有各個或多個參數(shù)。

7.通常的拷貝初始化函數(shù)的參數(shù)是()。

E.某個對象名;

A.某個對象的成員名:

B.某個對象的引用名;

C.某個對象的指針名:

8.關于成員函數(shù)特征的下述描述中,()是錯誤的。

D.成員函數(shù)一般是內(nèi)聯(lián)函數(shù);

A.成員函數(shù)可以重載;

B.成員函數(shù)可以設置參數(shù)的缺省值;

C.成員函數(shù)可以是靜態(tài)的。

9.下述靜態(tài)數(shù)據(jù)成員的特征中,()是錯誤的。

D.說明靜態(tài)數(shù)據(jù)成員時前邊要加修飾符static;

A.靜態(tài)數(shù)據(jù)成員要在類體外進行初始化;

B.引用靜態(tài)數(shù)據(jù)成員時,要在靜態(tài)數(shù)據(jù)成員名前加〈類名〉和作用域運算符;

C.靜態(tài)數(shù)據(jù)成員不是所有對象所共用的。

10.友元的作用()。

A.提高程序的運用效率;

B.加強類的封裝性;

C.實現(xiàn)數(shù)據(jù)的隱藏性:

D.增加成員函數(shù)的種類。

二、判斷下列描述的正確性,對者劃錯者劃義。

1.使用關鍵字class定義的類中缺省的訪問權限是私有(private)的。V

2.作用域運算符(::)只能用來限定成員函數(shù)所屬的類。V

3.析構函數(shù)是一種函數(shù)體為空的成員函數(shù)。X

4.構造函數(shù)和析構函數(shù)都不能重載。X

5.說明或定義對象時,類名前面不需要加class關鍵字。V

6.對象成員的表示與結(jié)構變量成員表示相同,使用運算符.或V

7.所謂私有成員是指只有類中所提供的成員函數(shù)才能直接使用它們,任何類外的函數(shù)對它們的訪

問都是非法的。X

8.某類中的友元類的所有成員函數(shù)可以存取或修改該類中的私有成員。V

9.可以在類的構造函數(shù)中對靜態(tài)數(shù)據(jù)成員進行初始化。X

10.如果一個成員函數(shù)只存取一個類的靜態(tài)數(shù)據(jù)成員,則可將該成員函數(shù)說明為靜態(tài)成員函數(shù)。

#include<iostream.h>

classA{

public:

A();

A(inti,intj);

voidprint();

private:

inta,b;

A::A()

a=b=O;

cout?''Defaultconstructorcalled.\n^^;

I

A::A(inti,intj)

(

a=i;

b=j;

cout?,5Constructorcalled.\n^^;

)

voidA::print()

{

cout?,,a=,,?a?,,,b=,,?b?endl;

I

voidmain()

(

Am,n(4,8);

m.print();

n.print();

)

Defaultconstructorcalled.

Constructorcalled.

A=0,b=0

A=4,b=8

2.

#include<iostream.h>

classB{

public:

B();

B(inti,intj);

voidprintb();

private:

inta,b;

};

classA{

public:

A();

A(in

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論