C++語言程序設(shè)計(jì)呂鳳煮課后答案_第1頁
C++語言程序設(shè)計(jì)呂鳳煮課后答案_第2頁
C++語言程序設(shè)計(jì)呂鳳煮課后答案_第3頁
C++語言程序設(shè)計(jì)呂鳳煮課后答案_第4頁
C++語言程序設(shè)計(jì)呂鳳煮課后答案_第5頁
已閱讀5頁,還剩145頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C++語言程序設(shè)計(jì)呂鳳煮課后答案

第I章C++語言概述

練習(xí)題1

1.1判斷題

X1.C++語言和c語言都是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。

V2.面向?qū)ο蠓椒ň哂蟹庋b性、繼承性和多態(tài)性。

V3.C語言是C++語言的一個子集。C++語言繼承了C語言。

X4.C++語言程序與C語言程序一樣都是函數(shù)串。

X5.C++語言支持封裝性和繼承性,不支持多態(tài)性。

V6.C++語言比C語言對數(shù)據(jù)類型要求更加嚴(yán)格了。

J7.C++語言對C語言進(jìn)行了一-次改進(jìn),使得編程更加方便了。

X8.C++源程序在編譯時可能出現(xiàn)錯誤信息,而在連接時不會出現(xiàn)錯誤信息。J9.編

譯C++源程序時,出現(xiàn)了警告錯(Warning)也可以生成可執(zhí)行文件。V10.C++語言程序

的實(shí)現(xiàn)也要經(jīng)過編輯、編譯連接和運(yùn)行3個步驟。

1.2單選題

1.下列關(guān)于面向?qū)ο蟾拍畹拿枋鲋?,錯誤的是(C)。

A.面向?qū)ο蠓椒ū让嫦蜻^程方法更加先進(jìn)

B.面向?qū)ο蠓椒ㄖ惺褂昧艘恍┟嫦蜻^程方法中沒有的概念

C.面向?qū)ο蠓椒ㄌ娲私Y(jié)構(gòu)化程序設(shè)計(jì)方法

D.面向?qū)ο蟪绦蛟O(shè)計(jì)方法要使用面向?qū)ο蟮某绦蛟O(shè)計(jì)語言

2.下列各種高級語言中,不是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言是(D)。

A.C++B.Java

C.VBD.C

3.下列關(guān)于類的描述中,錯誤的是(A)。

A.類就是C語言中的結(jié)構(gòu)類型

B.類是創(chuàng)建對象的模板

C.類是抽象數(shù)據(jù)類型的實(shí)現(xiàn)

D.類是具有共同行為的若干對象的統(tǒng)一描述體

4.下列關(guān)于對象的描述中,錯誤的是(C)。

A.對象是類的?個實(shí)例

B.對象是屬性和行為的封裝體

C.對象就是C語言中的結(jié)構(gòu)變量

D.對象是現(xiàn)實(shí)世界中客觀存在的某種實(shí)體

5.下列關(guān)于C++程序中使用提取符和插入符的輸入/輸出語句的描述中,錯誤的是

(C)O

A.提取符是對右移運(yùn)算符(?)重載得到的

B.插入符是對左移運(yùn)算符(?)重載得到的

C.提取符和插入符都是雙目運(yùn)算符,它們要求有兩個操作數(shù)

D.提取符和插入符在輸入/輸出語句中不可以連用

1.3填空題

1.C++、和。

2.C++

3.C++1

4.C++源程序的擴(kuò)展名是。

5.使用插入符進(jìn)行標(biāo)準(zhǔn)輸出文件輸出時:使用的輸出流對象名是。

1.4上機(jī)調(diào)試下列程序,并分析輸出結(jié)果

1.

ttinclude<iostream.h>

voidmainO

(

inti,j;

cout?〃Enterij:〃;

cin?i?j;

cout?,,i=,,?i<<,,*?,zj=,z?j?endl;

cout?,/i+j=/z?i+j<<,,J?,zi*j=z,<<i*j?endl;

)

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

Enterxy:59

答:i=5,j=9

i+j=14,i*j=45

2.

#include<iostream.h>

intmax(int,int);

voidmain()

{

inta,b,c;

a=5;

b=8;

c=max(a,b);

cout?z,max("<<a<<’,'<<b<<")="<<c<〈endl;

intmax(intx,inty)

returnx>y?x:y;

)

答:max(5,8)=8

3.文件el.4.3.cpp內(nèi)容如下:

#include<iostream.h>

voidfl(),f2();

voidmain()

(

cout<<“在北京.\n〃;

fio;

f2();

cout?〃再見.\n〃;2

)

文件1.4.3-1.cpp內(nèi)容如下:

ttinclude<iostream.h>

voidfl()

(

cout<<〃在上海.\n〃;

文件1.4.3-2.cpp內(nèi)容如下:

ttinclude<iostream.h>

voidf2()

(

cout<〈”在廣州.\n”;

}

答:在北京。

在上海。

在廣卅。

再見。

1.5編譯下列程序,修改所出現(xiàn)的錯誤,獲得正確結(jié)果1.

main()

(

cout?z,Inmain().\nz,

)

答:修改后如下:

#include<iostream.h>

(

)

2.

#include<iostream.h>

voidMAINO

cin?a;

intb=a+a;

cout<<"b=<<b<<\n〃;

)

答:修改后如下:

#include<iostream.h>

(3

cin>>a;

intb=a+a;

cout?

)

3.

#include<iostream.h>

voidmain()

(

inti,j;

i=5;

intk=i+j;

COUT?〃i+j=〃"k?endl;

)

答:

#include<iostream.h>

voidmainO

inti,j;

i=5;

intk=i+j;

)

1.6通過對1.5題中3個程序的修改,回答下列問題

從1.5題中第1題程序的修改中,總結(jié)出編程應(yīng)該注意哪些問題。

答:C++程序要包含iostraem.h,main。函數(shù)前應(yīng)加類型說明符void。

C++程序中所出現(xiàn)的變量是否必須先說明后使用?在函數(shù)體內(nèi)說明變量時是否都要放在

函數(shù)體的開頭?

答:C++程序中所由現(xiàn)的變量必須先說明后使用。在函數(shù)體內(nèi)說明變量時不一定要放在

函數(shù)體的開頭。

使用cout和插入符(?)輸出字符串常量時應(yīng)注意什么?

答:可輸出一個字符串常量,也可輸出多個字符串常量。每輸出一個字符串常量要使用

一次插入符(《)。

程序中定義過的變量,但沒有賦值,也沒有默認(rèn)值,這時能否使用?

答:不能使用。因?yàn)樗闹挡淮_定。

5.一個程序編譯通過并已生成執(zhí)行文件,運(yùn)行后并獲得輸出結(jié)果,這一結(jié)果是否一定

正確?

答:不一定正確??赡苓€有算法錯。

4

第2章變量和表達(dá)式及數(shù)組

練習(xí)題2

2.1判斷題

V1.C++語言的合法字符集與C語言的完全相同。

X2.標(biāo)識符規(guī)定大小寫字母沒有區(qū)別。

X3.C++程序中,不得使用沒有定義或說明的變量。

V4.變量的存儲類指出了變量的作用域和壽命。

V5.變量的數(shù)據(jù)類型指出了變量在內(nèi)存中存放的字節(jié)數(shù)。

X6.定義變量時,變量的存儲類說明符不得省略。

X7.自動類變量與內(nèi)部靜態(tài)類變量的作用域和壽命都是相同的。

X8.自動類變量可以定義在函數(shù)體外,這時應(yīng)加說明符auto。

X9.外部類變量與外部靜態(tài)類變量的作用域是相同的。

X10.變量被定義后是否有默認(rèn)值與存儲類無關(guān),與數(shù)據(jù)類型有關(guān)。

V11.C++程序中,通常使用const來定義符號常量,定義時必須指出類型。X

12.變量被定義或說明后,它一定具有有意義的值。

X13.字符串常量與字符常量的區(qū)別僅表現(xiàn)在定義形式上的不同,,個用雙撇號,另

一個用單撇號。

X14.所有變量的可見性和存在性都是一致的。

V15.變量在它的作用域內(nèi)一定是可見的,又是存在的。

V16.C++語言中除了包含C語言的所有運(yùn)算符外,還規(guī)定自身的若干個運(yùn)算符。J

17.增1和減1運(yùn)算符以及賦值運(yùn)算符都具有副作用。

X18.增1和減1運(yùn)算符不僅可以作用在變量上,也可以作用在表達(dá)式上。

X19.關(guān)系運(yùn)算符可以用來比較兩個字符的大小,也可以比較兩個字符串的大小。X

20.移位運(yùn)算符在移位操作中,無論左移還是右移,對移出的空位一律補(bǔ)0。X21.變

量的類型高低是指它被存放在內(nèi)存的地址值大小。

X22.使用sizeof運(yùn)算符可以求得某種類型和某個變量在內(nèi)存中占的字節(jié)數(shù),不能求

得某個表達(dá)式的類型在內(nèi)存中所占的字節(jié)數(shù)。

V23.在C++語言中,非保值轉(zhuǎn)換應(yīng)用強(qiáng)制類型轉(zhuǎn)換。

V24.表達(dá)式中各操作數(shù)計(jì)算順序取決于運(yùn)算符的優(yōu)先級和結(jié)合性。

■J25.在C++程序中,變量值是可以改變的,變量的地址值是不能改變的。V26.數(shù)

組中所有元素的類型都是相同的。

x27.定義數(shù)組時必須對數(shù)組進(jìn)行初始化。

V28.數(shù)組某維的大小可以用常量表達(dá)式,不可用變量名。

X29.定義一個數(shù)組沒有對它進(jìn)行初始化,則該數(shù)組的元素值都是無意義的。

V30.用來給數(shù)組進(jìn)行初始化的初始值表內(nèi)的數(shù)據(jù)項(xiàng)的個數(shù)必須小于等于數(shù)組元素個

數(shù)。X31.在定義一個數(shù)組時,對其部分元素進(jìn)行了初始化,沒有初始化的元素的值都

是無意義的。

V32.數(shù)組被初始化時是判越界的。

X33.字符數(shù)組就是字符串。

V34.使用printf()函數(shù)輸出顯示字符串時使用格式符%s,輸出顯示字符時使用祝

或5%do

X35.給數(shù)組元素賦值時只可用常量表達(dá)式。

2.2單選題

1.下列變量名中,非法的是(C)。

A.A25B.Mycar

C.My-strD.abc

2.下列常量中,十六進(jìn)制int型常量是(A)。

A.0x5fB.x2a

C.046D.7a

3.下列常量中,不是字符常量的是(B)。

A.,\n'B."y"

C.'x'D.'\7'

4.在函數(shù)體內(nèi)定義了下述變量a,a的存儲類為(D)。inta;

A.寄存器類B.外部類

C.靜態(tài)類D.自動類

5.下列關(guān)于變量存儲類的描述中,錯誤的是(C)。

A.任何變量定義后都具有一個確定的存儲類

B.變量的存儲類確定了變量的作用域和壽命

C.定義變量時沒有存儲類說明符者?律為自動類

D.內(nèi)部靜態(tài)類變量和外部靜態(tài)類變量的存儲類說明符都是static

6.下列關(guān)于變量數(shù)據(jù)類型的描述中,錯誤的是(A)。

A.定義變量時int型數(shù)據(jù)類型可以省略

B.變量的數(shù)據(jù)類型可以決定該變量占內(nèi)存的字節(jié)數(shù)

C.變量的數(shù)據(jù)類型是可以被強(qiáng)制的

D.變量的數(shù)據(jù)類型是有高低之分的

7.長雙精度浮點(diǎn)型常量的后綴是(C)。

A.UB.F

C.LD.無

8.下列運(yùn)算符中,不能用于浮點(diǎn)數(shù)操作的是(D)。

A.++B.+

C.*=D.&(雙目)

9.下列運(yùn)算符中,優(yōu)先級最高的是(A)。

A.*(雙目)B.|

C.?D.%=

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

A.==B.?:

C.D.&&

11.已知:inta(3);下列表達(dá)式中,錯誤的是(C)。

A.a%2--0B.a-+2

C.(a2)++D.a?=2

12.已知:intb(5),下列表達(dá)式中,正確的是(D)。

A.b="a"B.++(b1)

C.b%2.5D.b=3,b+1,b+26

13.下列關(guān)于類型轉(zhuǎn)換的描述中,錯誤的是(C)。

A.類型轉(zhuǎn)換運(yùn)算符是(〈類型〉)

B.類型轉(zhuǎn)換運(yùn)算符是單目運(yùn)算符

C.類型轉(zhuǎn)換運(yùn)算符通常用于保值轉(zhuǎn)換中

D.類型轉(zhuǎn)換運(yùn)算符作用于表達(dá)式左邊

14.下列表達(dá)式中,其值為0的是(A)。

A.5/10B.!0

C.2>4?0:1D_2&&2|0

15.下列表達(dá)式中,其值不為邏輯值的是(A)。

A.算術(shù)表達(dá)式B.關(guān)系表達(dá)式

C.逗號表達(dá)式D.邏輯表達(dá)式

16.下列關(guān)于數(shù)組概念的描述中,錯誤的是(B)。

A.數(shù)組中所有元素類型是相同的

B.數(shù)組定義后,它的元素個數(shù)是可以改變的

C.數(shù)組在定義時可以被初始化,也可以不被初始化

D.數(shù)組元素的個數(shù)與定義時的每維大小有關(guān)

17.下列關(guān)于數(shù)組維數(shù)的描述中,錯誤的是(C)。

A.定義數(shù)組時必須將每維的大小都明確指出

B.二維數(shù)組是指該數(shù)組的維數(shù)為2

C.數(shù)組的維數(shù)可以使用常量表達(dá)式

D.數(shù)組元素個數(shù)等于該數(shù)組的各維大小的乘積

18.下列關(guān)于數(shù)組下標(biāo)的描述中,錯誤的是(B)。

A.C++語言中數(shù)組元素的下標(biāo)是從0開始的

B.數(shù)組元素下標(biāo)是一個整常型表達(dá)式

C.數(shù)組元素可以用下標(biāo)來表示

D.數(shù)組元素的某維下標(biāo)值應(yīng)小于該維的大小值

19.下列關(guān)于初始值表的描述中,錯誤的是(C)。

A.數(shù)組可以使用初始值表進(jìn)行初始化

B.初始值表是用一對花括號括起的若干個數(shù)據(jù)項(xiàng)組成的

C.初始值表中數(shù)據(jù)項(xiàng)的個數(shù)必須與該數(shù)組的元素個數(shù)相等

D.使用初始值表給數(shù)組初始化時,沒有被初始化的元素都具有默認(rèn)值

20.下列關(guān)于字符數(shù)組的描述中,錯誤的是(D)。

A.字符數(shù)組中的每一個元素都是字符

B.字符數(shù)組可以使用初始值表進(jìn)行初始化

C.字符數(shù)組可以存放字符串

D.字符數(shù)組就是字符串

21.下列關(guān)于字符串的描述中,錯誤的是(C)。

A.一維字符數(shù)組可以存放一個字符串

B.二維字符數(shù)組可以存放多個字符串

C.可以使用個字符串給二維字符數(shù)組賦值

D.可以用一個字符串給二維字符數(shù)組初始化

22.已知:inta[5]={1,2,3,4};下列數(shù)組元素值為2的數(shù)組元素是(B)。

A.a[0]B.a[l]

C.a[2]D.a[3]7

23.已知:intab[][3]={{1,5,6},{3},{0,2});數(shù)組元素ab[l][1]的值為

(A)?

A.0B.1

C.2D.3

24.已知:chars[]="abcd";輸出顯示字符'c'的表達(dá)式是(C)。

A.sB.s+2

C.s[2]D.s[3]

25.已知:charss[][6]={"while","for","else","break”}:輸出顯示"reak"字

符串的表達(dá)式是(B)。

A.ss[3]B.ss[3]+l

C.ss+3D.ss[3][1]

2.3填空題

1.C++

2.變量的存儲類可分為自動類、寄存器類、外鄒類和靜態(tài)存儲類。

3浮點(diǎn)型常量。

4、

5.運(yùn)算符組成的,該表達(dá)式的類型是由冒號左邊和右邊兩個操作數(shù)中類型高的操作數(shù)

類型決定的。

6.已知:doubledd[][3]={{1.2,2.4,3.6),{4.8,5.2},{6.4}};這里dd名,該

數(shù)組共有9個元素,每個元素的類型是double。數(shù)組元素dd[0][0]的值是1.2,

dd⑴口的值是5.2,數(shù)組元素dd[2][2]的值是0。

7.已知:charss[][6]={"while","break","for","else"};字符數(shù)組ss維數(shù)

組,它的第1維大小應(yīng)該是4。使用cout和。輸出字符串"for”時,對應(yīng)的表達(dá)式是

ss+2o使用cout和<〈輸出字符串"break”的子串〃reak〃時,對應(yīng)的表達(dá)式是ss[I]+l。

使用cout和6輸出字符串else中的字符's'時,對應(yīng)的表達(dá)式是ss[3][2]。

2.4分析下列程序

1.

#include<iostream.h>

voidmain()

(

inta,b;

cout?^Enterab:〃;

cin?b?a;

intd=a-b;

cout?,,d=,,?d<<endl;

)

假定輸入為5和8。

答:d=3

2.

#include<iostream.h>

voidmain()

(

constintA=8;

constcharCH='k';8

constdoubleD=8.5;

cout<<,/A=,/<<A<<endl;

cout?,/CH+2=,,?char(CH+2)?endl;cout?,zD-5.8=〃<<D-5.8?endl;}

答:A=8

CH=2=m

D-5.8=2.7

3.

ttinclude<iostream.h>

inta=9;

voidmainO

(

intb=5;

cout?/za+b=/z?a+b<<endl;staticintc;

cout〈<〃c+a=〃<<c+a〈<endl;constlongintd=8;

cout?,za+d-b=,,?a+d-b<<endl;}

答:a+b=14

c+a=9

a+d-b=12

4.

ftinclude<iostream.h>

voidmain()

(

inta=3;

charb='m';

cout?//a=/,<<a<<,,J?,/b=,,<<b?endl;{

inta=5;

b二'n';

cout?〃a=〃,'<<"b=〃<<b<〈endl;}

cout?,za=,z?a<<,,*<<,,b=/,?b?endl;}

答:a=5,b=m

a=3,b=n

a=3,b=n

5.

#include<iostream.h>9

voidmain()

(

cout?6%4*5/3+3?endl;

cout?(10&3|8)?endl;

cout?(5?2)+(5?2)?endl;

cout?"4?endl;

}

答:6

10

21

-5

6.

#include<iostream.h>

voidmain()

inta=5;

cout?long(&a)<<','<<sizeof(a)?),*?sizeof(int)?endl;doubleb=l.5;

cout?sizeof(1.5f)'<<sizeof(b)?*,*?sizeof(1.5L)?endl;}

答:〈地址值》,4,4

4,8,8

7.

#include<iostream.h>

voidmain()

(

inta=3,b=5;

cout?(a>b+a==b-2)?*,*?(a!=b+a<=b)?endl;

charc=,k,;

cout?(c<=,k')<<',’<<(一c!='h'+2)<<endl;

floatf=2.3f;

cout?(—f<=f)?endl;

)

答:0,1

1,0

1

8.

#include<iostream.h>

voidmain()

inti,j,k;

i=j=k=5;10

!i&&++j&&--k;

cout?i?,,,?j?,,J<<k<<endl;i||j一一||++k;

cout?i?,,,?j?J,J?k?endl;i-5||j-5&&++k;

cout?i?,,*?j<<J,><<k<<endl;}

答:5,5,5

5,5,5

5,5,5

9.

#include<iostream.h>

voidmain()

(

inti(5),j(8);

cout?(i=i*二j)?endl;

i=5,j=8;

i=5*j/(j----5);

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

i=5,j=8;

cout?(j+=i*=j-5)<<endl;}

答:40

13,7

23

10.

#include<iostream.h>

inta=8;

voidmain()

(

intb=6;

doubled=l.5;

d+=a+b;

cout?d<<endl;

cout?(a=l,b=2,d=2.5,a+b+d)?endl;cout?(a<0?a:b<0?a++:b++)?endl;}

答:15.5

5.5

2

11.

#include<iostream.h>

voidmain()11

{

intm[][3]={9,8,7,6,5,4,3,2,1},s=0;for(inti=0;i<3;i++)

s+=m[i][i];

cout?s?endl;

答:15

12.

#include<iostream.h>voidmain()

(

chars□=”bhy543kpm345”;for(inti=0;s[i]!='\0';i++)

if(s[i]>='a'&&s[i]<=,z)continue;

cout<<s[i];

)

cout?endl;

)

答:543345

13.

#include<iostream.h>voidmain()

(

intb[]={5,3,4,1,8,9,0,10};inti=0,j;

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

if(b[i]>b[j])

J=i;

cout?j?,,*?b[j]?endl;}

答:7,10

14.

#include<iostream.h>voidmainO

inta[][3]={l,2,3,4,5,6,7,8,9);intsl(O),s2(O);

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

for(intj=O;j<3;j++)

(

if(i!=j)12

sl+=a[i][j];

if(i+j==l)

s2+=a[i][j];

)

cout?,/sl=,,?sK<,,J<<,,s2=,,?s2?endl;

}

答:sl=30,s2=6

15.

ttinclude<iostream.h>

voidmainO

(

chars□=〃#%#〃;

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

{

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

cout?,';

for(intk=0;k<3;k++)

cout?s[k];

cout?endl;

for(i=2;i>0;i)

{for(intj=0;j<i1;j++)

cout?,';

for(intk=0;k<3;k++)

cout?s[k];

cout?endl;

)

)

答:#%#

#%#

#%#

#%#

#%#

2.5編程題

1.已知:inta=3,b=5;編程計(jì)算下列兩個代數(shù)式的值,并比較它們是否相等。(a+b)

a+2ab+b

答:編程如下:

ftinclude<iostream.h>

voidmain()

inta=3,b=5;

intdl=(a+b)*(a+b);22213

intd2=a*a+2*a*b+b*b;

cout?,/dl=,,?dl?endl?/zd2=//?d2?encll;

)

從結(jié)果中可以看出dl和d2值是相等的。

2.已知:intx=5;編程求下列代數(shù)式的值。

f(x)=#include<iostream.h>3voidmain()3x+2{2x+intx=5;5x+2int

f=3*x*x*x+2*x*x+5*x+2;答cout?f<〈endl;:編}

程如3.從鍵盤上輸入兩個double型

下.:數(shù),編程輸出其中最小者。

答:編程如下:

#include<iostream.h>

voidmainO

(

doublea,b;

cout<<”請輸入兩個double型數(shù):〃;

cin?a?b;

cout<<〃輸入的兩個數(shù)中較小的是〃;

if(a<=b)

cout?a?endl;

else

cout?b<<endl;

4.華氏溫度轉(zhuǎn)換成攝氏溫度的計(jì)算公式如下:

C=(F32)*5/9

其中,C表示攝氏溫度,F(xiàn)表示華氏溫度。從鍵盤上輸入一攝氏溫度,編程輸出對應(yīng)的

華氏溫度。

答:編程如下:

ttinclude<iostream.h>

voidmainO

(

doublec,f;

cout<<〃請輸入一個攝氏溫度值:〃;

cin?c;

f=9.0/5.0*c+32.0;

cout<<〃攝氏溫度為〃<<c?〃華氏溫度為;14

)

從鍵盤上輸入5個浮點(diǎn)數(shù),輸出它們的和以及平均值。

答:編程如下:

#include<iostream.h>

voidmain()

(

doublea,b,c,d,e;

cout<<”請輸入5個double型數(shù):〃;

cin?a?b?c?d?e;

doublef=a+b+c+d+e;

cout?”輸入的5個數(shù)的和是"<<f<〈"平均值是"<〈f/5.O?endl;

將字符串〃12345”,逆向輸出為“54321”。

答:編程如F:

Sinclude<iostream.h>

voidmain()

(

chara[]="12345”;

cout?a[4]?a[3]?a[2]?a[l]?a[0]?endl;

}

2.6簡單回答下述問題

C++語言中注釋符的格式如何?注釋信息的功能是什么?

答:注釋符格式有2種:

格式一:/*〈注釋信息》*/

格式二://〈注釋信息〉

注釋信息是用來對程序進(jìn)行提示和說明的。

使用const定義符號常量比使用#define定義符號常量有何優(yōu)點(diǎn)?

答:使用const定義符號常量時要指W數(shù)據(jù)類型,而用#define定義符號常量時不需提

出類

型,因此前者比后者對類型要求更嚴(yán)格,這樣會更安全。

內(nèi)部靜態(tài)存儲類變量有何特點(diǎn)?

答:內(nèi)部靜態(tài)存儲類變貫的特點(diǎn)是作用域較小,但壽命很長,這種變量作用域與壽命不

一致,因此會出現(xiàn)不可見但又存在的情況。

在使用插入符(?)輸出若干個表達(dá)式值時,有的表達(dá)式中使用的運(yùn)算符的優(yōu)先級低于

插入符優(yōu)先級時應(yīng)該如何處理?

答:這時需將表達(dá)式用括號括起來,己改變其優(yōu)先級。

5.由多種不同運(yùn)算符組成的表達(dá)式,其類型如何確定?例如,

inta,b,c;

a=b>c?b:c;

這是一個條件表達(dá)式還是賦值表達(dá)式?

答:表達(dá)式類型由優(yōu)先級低的運(yùn)算符組成的表達(dá)式來確定。

15

這是一個賦值表達(dá)式,因?yàn)橘x值運(yùn)算符優(yōu)先級低于三目運(yùn)算符。

1.

數(shù)組元素個數(shù)是由什么決定的?

答:數(shù)組元素個數(shù)是由維數(shù)及其大小來決定的。一維數(shù)組元素個數(shù)是該維的大小,二維

數(shù)組的元素個數(shù)是兩維大小之積等。

1.

數(shù)組元素下標(biāo)有何規(guī)定?

答:C++語言中,數(shù)組元素下標(biāo)從0開始。

1.

初始值表中數(shù)據(jù)項(xiàng)的類型和個數(shù)有何規(guī)定?

答:初始值表中數(shù)據(jù)項(xiàng)的類型應(yīng)與該變是類型相同,個數(shù)應(yīng)小于或等于被初始化的數(shù)組

元素的個數(shù)。

1.

字符數(shù)組和字符串有什么關(guān)系?

答:字符數(shù)組中可存放字符串,而字符數(shù)組不都是存放字符串的。如果字符數(shù)組中有字

符串結(jié)束符,則說明該字符數(shù)存放的是字符串。

10.一個數(shù)組中的元素類型是否一定相同?何時定義的數(shù)組元素具有默認(rèn)值?答:數(shù)

組中元素類型必須相同。存儲類為外部和靜態(tài)的數(shù)組其元素具有默認(rèn)值。

第3章語句和預(yù)處理

練習(xí)題3

3.1判斷題

V1.表達(dá)式和表達(dá)式語句是不同的。

X2.空語句是一種沒有用處的語句。

X3.復(fù)合語句就是分程序。

X4.條件語句中if子句和else子句都是必須有并且僅有一個。

V5.條件語句中elseif子句可以沒有,也可以有多個。

V6.開關(guān)語句可實(shí)現(xiàn)多路分支。

X7.開關(guān)語句的〈語句序列》中必須有一個break語句,否則該開關(guān)語句便無法退出。

X8.任何循環(huán)語句都是至少執(zhí)行一次循環(huán)體。

X9.退出for循環(huán)語句必須是for后面括號內(nèi)的中間一個表達(dá)式的值為0。

-J10.do-while循環(huán)語句至少要執(zhí)行一次循環(huán)體。

X11.循環(huán)語句的循環(huán)體中可以出現(xiàn)if語句,if語句的if體內(nèi)不能出現(xiàn)循環(huán)語句。

X12.got。語句中所使用的語句標(biāo)號是一種標(biāo)識符,它的作用域是文件級的。

-J13.break語句和continue語句都可以出現(xiàn)在循環(huán)體中,但是它們的作用是不同

的。X14.文件包含命令所能包含的文件類型是不受限制的。

3.2單選題

1.下列關(guān)于語句的描述中,錯誤的是(A)。

A.C++程序中的函數(shù)是由若干條語句組成的

B.每條語句都要實(shí)現(xiàn)某種操作

C.條件語句是用來實(shí)現(xiàn)分支操作的

D.循環(huán)語句是用來在一定條件下重復(fù)執(zhí)行某段程序的

2.下列關(guān)于條件語句的描述中,錯誤的是(C)。

A.if語句中最多只能有一個else子句16

B.if語句的if體內(nèi)可以出現(xiàn)開關(guān)語句

Cif語句中elseif子句和else子句的順序是沒有限制的

D.if語句中else子句是與它最近的if子句配對的

3.下列關(guān)于開關(guān)語句的描述中,錯誤的是(B)。

A.開關(guān)語句中,case子句的個數(shù)是不受限制的

B.開關(guān)語句中,case子句的語句序列中一定要有break語句

C.開關(guān)語句中,default子句可以省略

D.開關(guān)語句中,右花括號具有退出開關(guān)語句的功能

4.下列關(guān)于循環(huán)語句的描述中,錯誤的是(A)。

A.while循環(huán)語句中<條件>給定的表達(dá)式不能為非0的常量,否則便是死循環(huán)

B.for循環(huán)語句的循環(huán)體內(nèi)可以出現(xiàn)while循環(huán)語句、do-while循環(huán)語句和for循環(huán)

C.循環(huán)語句的循環(huán)體可以是空語句

D.循環(huán)語句的循環(huán)體內(nèi)可以出現(xiàn)break語句,也可以出現(xiàn)continue語句

5.已知:inti(3);下列do-while循環(huán)語句的循環(huán)次數(shù)是(D)。

do{

cout<<i-?endl;

i一

}while(i!=O);

A.0B.3

C.1D.無限

6.下列for循環(huán)語句的循環(huán)次數(shù)是(B)。

for(inti(0),j(5);i=3;i++,j—);

A.3B.無限

C.5D.0

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

while(inti(0))i一;

A.0B.1

C.2D.無限

8.下列程序段執(zhí)行后,j值是(B)。

for(inti(0),j(0);i<10;i++)

if⑴j++;

A.0B.9

C.10D.無限

9.已知:typedefcharCH;下列描述中,正確的是(A)。

A.使用CII定義的變量是char型變量

B.使用CH定義的是一個字符常量

C.使用CH定義的變量其類型不確定

D.使用CH定義的是一個字符串

10.下列關(guān)于預(yù)處理命令的描述中,錯誤的是(D)。

A.預(yù)處理命令最左邊的標(biāo)識符是#

B.預(yù)處理命令是在編譯前處理的

C.宏定義命令可以定義符號常量

D.文件包含命令只能包含.h文件

3.3填空題17

1.表達(dá)式語句是一個表達(dá)式后邊加上

2.復(fù)合語句是由組成的。

3,分程序是一種帶有說明語句的復(fù)合語句。

4和。

5.下列程序是求100之內(nèi)的能被7整除的自然數(shù)之和。

#inelude<iostream.h>

voidmain()

(

intsum;

sum+二i;

cout?sum?endl;

)

3.4上機(jī)調(diào)試下列程序,并分析其輸出結(jié)果

1.

ftinclude<iostream.h>

voidmain()

inta(8),b(5);

if(!a)

b一;

elseif(b)

if(a)

a++;

else

a——;

else

b++;

cout?a<<,,1<<b?endl;

)

答:9,5

2.

#include<iostream.h>

voidmain()

(

inta(10);

while(-a)

(

if(a==5)break;

if(a%2==04&a%3==0)continue;

cout<<a<<endl;

)18

答:9

8

7

3.

ttinclude<iostream.h>voidmain(){

intb(10);

do{

++b;

cout?++b?endl;if(b==15)break;}while(b<15);

cout?,zok!,z?endl;}

答:12

14

16

ok!

4.

#include<iostream.h>voidmain(){

intw(5);

do{

switch(w%2){

case1:w--;break;case0:w++;break;}

w-;

cout?w<<endl;}while(w>0);}

答:3

1

-1

5.

#include<iostream.h>voidmain(){

inta(4),b(5),i(0),j(0);19switch(a)

(

case4:switch(b)

(

case4:i++;break;

case5:j++;break;

default:i++;j++;

)

case5:i++;j++;

break;

default:i++;j++;

}

cout?i?,,*?j?endl;}

答:1,2

6.

#include<iostream.h>voidmainO

intb(10);

for(inti=9;i>=0;i一一)

switch(i)

(

case1:case4:case7:b++;break;case2:case5:case8:break;case3:

case6:case9:b+=2;}

)

cout<<b?endl;

)

答:19

7.

ttinclude<iostream.h>voidmainO

(

inta(6);

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

(

for(intj=l;j<=a-i;j++)cout?,

for(j=l;j<=2*i-l;j-H-)cout?,Af;

cout?endl;20

)

)

答:A

AAA

AAAAA

AAAAAAA

AAAAAAAAA

AAAAAAAAAAA

8.

ttinclude<iostream.h>

#defineMAX(x,y)(x)>(y)?(x):(y)

voidmainO

(

typedefintIN;

INa(3),b(4),c;

c=MAX(a,b)*2;

cout?c<<endl;

)

答:8

3.5編程題

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

答:編程如下:

ftinclude<iostream.h>

voidmain()

ints=0;

for(inti=l;i<100;i+=2)

s+二i;

cout?s<<endl;

)

求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù)。

答:編程如下:

假定兩個整數(shù)分別為15和25,求它們的最大公約數(shù)和最小公倍數(shù)。#include

<iostream.h>

voidmainO

(

intm,n,t;

m=15;

n=25;

if(m<n)

(

t=m;21

m=n;

n=t;

)

intmO=m,nO=n;

while(n!=0)

t=m%n;

m=n;

n=t;

)

cout<〈〃最大公約數(shù)為〃<Xm<Xendl;

cout<<〃最小公倍數(shù)為〃<<mO*nO/ni<<endl;}

求下列分?jǐn)?shù)序列前15項(xiàng)之和。

2/1,3/2,5/3,8/5,13/8,???答:編程如下:

#include<iostream.h>

voidmain()

(

inta;

doublei=2,j=l,sum=0,t;

for(a=l;a<15;a++)

(

sum+=i/j;

t=i;

i+=j;

j=t;

cout?,,SUM=,/?sum<<endl;

4.按卜列公式,求e的近似值。e=l+l/l!+1/2!+1/3!+…+l/n!答:編程如

下:

ttinclude<iostream.h>

#include<math.h>

voidmainO

(

doublex(1),s(0);

for(inti=l;fabs(x)>le-8;i++)

{

x*=(-1.0)*(2*i-3)/(2*i-l);

s+=x;22

)

s*=4;

cout?,zpi=zz<<s<<endl;

}

5.求下列式子之和,假定"10。

S=l+(l+2)+(1+2+3)+???+(l+2+3+??-+n)

答:編程如下:

^include<iostream.h>

voidmainO

(

ints(0),si(0);

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

sl十二i;

s+=si;

)

cout?s?endl;

)

3.6簡單回答下列問題

分程序是復(fù)合語句嗎?復(fù)合語句與分程序的區(qū)別是什么?

答:分程序是復(fù)合語句。復(fù)合語句與分程序的區(qū)別在于含有說明語句的復(fù)合語句稱為分

程序。

if語句中,else子句的功能是什么?

答:該子句的功能是當(dāng)if子句和所有elseif子句的條件都為。時,則執(zhí)行else子

句。.

在開關(guān)語句中,是否每個case子句后面的〈語句序列》中都應(yīng)該有break語句?

答:通常case子句后面的〈語句序列》中都有break語句,根據(jù)需要也可以沒有break

語句。.

循環(huán)語句的循環(huán)體中出現(xiàn)的continue語句的作用是什么?

答:結(jié)束本次循環(huán),轉(zhuǎn)到循環(huán)頭判斷是否繼續(xù)循環(huán)。

文件包含命令的功能嗎?該命令一定要放在程序首部嗎?

答:該預(yù)處理命令是將指定的包含文件內(nèi)容放在該命令出現(xiàn)的地方。通常放在程序開

頭,

便于后邊語句的使用。

第4章指針和引用

練習(xí)題4

4.1判斷題

X1.指針是變量,它具有的值是某個變量或?qū)ο蟮牡刂分?,它還具有一個地址值,這

兩個地址值是相等的。

23

V2.指針的類型是它所指向的變量或?qū)ο蟮念愋汀?/p>

X3.定義指針時不可以賦初值。

V4.指針可以賦值,給指針賦值時一定要類型相同,級別一致。

X5.指針可以加上或減去一個int型數(shù),也可以加上一個指針。

V6.兩個指針在任何情況下相減都是有意義的。

J7.數(shù)組元素可以用下標(biāo)表示,也可以用指針表示。

X8.指向數(shù)組元素的指針只可指向數(shù)組的首元素。

V9.指向一維數(shù)組的指針是一個二級指針。

X10.指針數(shù)組的元素可以是不同類型的指針。

V11.字符指針是指向字符串的指針,可以用字符串常量給字符指針賦值。X

12.引用是一種變量,它也有值和地址值。

V13.引用是某個變量的別名,引用是被綁定在被引用的變量上。

J14.創(chuàng)建引用時要用一個同類型的變量進(jìn)行初始化。

V15.指針是變量,它可以有引用,而引用不能有引用。

4.2單選題

1.下列關(guān)于定義一個指向double型變量的指針,正確的是(B)。

A.inta(5);double*pd=a;B.doubled(2.5),*pd=&d;

C.doubled(2.5),*pd=d;D.doublea(2.5),pd=d;

2.下列關(guān)于創(chuàng)建一個int型變量的引用,正確的是(A)。

A.inta(3),&ra=a;B.inta⑶,&ra=&a;

C.doubled(3.1);int&rd=d;D.inta(3),ra=a;

3.下列關(guān)于指針概念的描述中,錯誤的是(B)。

A.指針中存放的是某變量或?qū)ο蟮牡刂分?/p>

B.指針的類型是它所存放的數(shù)值的類型

C.指針是變量,它也具有一個內(nèi)存地址值

D.指針的值(非常量指針)是可以改變的

4.下列關(guān)于引用概念的描述中,錯誤的是(A)。

A.引用是變量,它具有值和地址值

B.引用不可以作數(shù)組元素

C.引用是變量的別名

D.創(chuàng)建引用時必須進(jìn)行初始化

5.已知:inta[5],*p=a;則與++*p相同的是(D)。

A.*++pB.a[0]

C.*p++D.++a[0]

6.已知:inta[]={I,2,3,4,5},*p=a;在下列數(shù)組元素地址的表示中,正確的是

(C)?

A.&(a+l)B.&(p+l)

C.&p[2]D.*p++

7.已知:inta[3][4],(*p)[4];下列賦值表達(dá)式中,正確的是(A).

A.p=a+2B.p=a[l]

C.p=*aD.p=*a+2

8.已知:intb[3][5]={0};下列數(shù)組元素值的表示中,錯誤的是(D)。

A.**(b+l)B.(*(b+l))[2]

C.*(*(b+l)+l)D.*(b+2)

9.已知:inta=l,b=2,*p[2];下列表達(dá)式中正確的是(C)。

24

A.p=&aB.p=&b

C.p[O]=&a,p[l]=&bD.p[]={&a,&b};

10.已知:inta(5),&ra=a;下列描述中,錯誤的是(D)。

A.ra是變量a的引用,即為變量的別名B.ra的值為5

C.ra的地址值為&aD.改變ra的值為10,變量a值仍為5

4.3填空題

1.單目運(yùn)算符&*作用在指針名的左邊,表示取該變量的值。

2級指針,指向一維數(shù)組的指針是二級指針,指向一級指針的指針是二級指針,一維

一級指針數(shù)組名是

二級指針的地址值,二維數(shù)組的數(shù)組名是二級指針的地址值。

3.在一個二維數(shù)組b[3][5]中,b[0]與&b⑴與是等價的。

4.指針的運(yùn)算有4種,它們是賦值運(yùn)算、一個指針加減整型數(shù)的運(yùn)算、兩個指針相減

和比較運(yùn)算。

5,引用的地址值是被引用的變量的地址值。

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

1.

ttinclude<iostream.h>

voidmain()

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

int*p=&a[2];

intm(5),n;

for(inti(2);i>=0;i-一)

(

n=(*(p+i)<*a)?*(p+i):*a;

cout?n?endl;

)

}

答:1

2

3

2.

#include<iostream.h>

voidmainO

(

char*pl,*p2;

pl=z,abcqrv/z;

p2二〃abcpqo〃;

while(*p1&&*p2&&*p2++=*p1++)

intn=*(plT)-*(p2T);

cout?n<<endl;

)25

答:1

3.

#include<iostream.h>

inta[>{10,9,6,5,4,2,1};

voidmain()

(

intn(7),i(7),x(7);

while(x>*(a+i))

(

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

i—;

)

*(a+i+l)=x;

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

cout?*(a+i)?J,*;

cout?a[i]?endl;

)

答:10,9,7,6,5,4,2,1

4.

#include<iostream.h>

inta[][3]={1,2,3,4,5,6,7,8,9};int*p[]={a[0],a[l],a[2]};

int**pp=p;

voidmainO

(

int(*s)[3]=a;

for(inti(1);i<3;i++)

for(intj(0);j<2;j++)

cout<<*(a[i]+j)<<','<<*(*(p+i)+j)<〈','

?(*(pp+i))<"<','<<*(*s+3*i+j)?endl;}

答:4,4,4,4

5,5,5,5

7,7,7,7

8,8,8,8

5.

^include<iostream.h>

inta[]={l,2,3,4,5,6,7,8,9);

voidmainO

(

int*pa=a;

cout?*pa?,,1;

cout<<*(pa++)?,,J;26

cout<<*++pa<<,,);

cout?*(pa--)<〈',';

pa+=4;

cout?*pa?,,*<<*(pa+2)?endl;}

答:1,1,3,3,6,8

6.

ttinclude<iostream.h>

voidmain()

(

charstr□[4]二{"345","789〃},*m[2];ints(0);

for(inti=0;i〈2;i++)

m[i]=str[i];

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

for(intj(0);j<4;j+=2)

s+=m[i][j]'O';

cout?s<<endl;

)

答:24

7.

#include<iostream.h>

voidmainO

(

doubledl=3.2,d2=5.2;

double&rdl=dl,&rd2=d2;

cout?rdl+rd2<<,,J?dl+rd2?endl;rdl=9.3;

cout?rdl+rd2<<,,J?dl+rd2<<endl;d2=0.8;

cout?2*rd2<<endl;

答:8.4,8.4

14.5,14.5

1.6

8.

#include<iostream.h>

voidmainO

(

int*p;

int*&rp=p;27

inta=90;

P=&a;

cout?,,a=z,?a<<,,*?,z*rp=/,<<*rp?endl;

intb=50;

rp=&b;

cout?,,b=z,?b<<,,??,z*rp=,z?*rp?endl;

)

答:a=90,*rp=90

b=50,*rp=50

4.5編程題(使用指針)

已知4個字符串,編程輸出它們中最小的一個。

答:編程如卜:

#include<iostream.h>

#include<string.h>

voidswap(charpl[],charp21]);

voidmain()

(

z,,,=,/z,

charsi[10]="while”,s2[10]=elseJs3[10]default,s4[10]="continue”;

if(strcmp(sl,s2))

swap(si,s2);

if(strcmp(s3,s4))

swap(s3,s4);

if(strcmp(sl,s3))

swap(si,s3);

cout?sl<<endl;

}

voidswap(charpl[],charp2口)

(

charp[10];

strcpy(p,pl);

strcpy(pl,p2);

strcpy(p2,p);

將一個長度為n的字符串,編程實(shí)現(xiàn)其逆序輸事。

答:編程如下:

#include<iostream.h>

#include<string.h>

voidinverse(char口);

voidmain()

(

chars[50];

cout<〈〃輸入一個字符串:〃;28

cin?s;

inverse(s);

cout。〃反序后的字符串是〃<Xs?endl;

)

voidinverse(char

P口)

(

intn=strlen(p);

intlimit=n/2;

for(int

i=0;i<limit;i++)

(

chart=p[i];

p[i]=p[n-i-l];

已知一個二維int型數(shù)組,編程

求出它的最小的元素值。

答:編程如下:

itinclude<iostream.h>

voidmain()

(

intn[3][2]={{3,8},{-5,9},{2,4}};

intlim=n[0][0];

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

for(intj=0;j<2;j++)

if(n[i][j]<lim)

lim=n[i][j];

coutC〈”最小元素值為z/?lim<<endl;

)

己知字符型指針數(shù)組中存放若干個字符串,編程從鍵盤上修改其中某個字符串。

答:編程如下:

#include<iostream.h>

tfinclude<string.h>

char*str[5]二{〃abc〃,〃def〃,〃ghi〃,〃jkl〃,〃pqo〃};

char*modify(int,char[]);

voidmain()

(

intn;

chars[10];

cout<<〃修改第幾個字符串:〃;

cin>>n;

cout<<〃該字符串修改為:〃;

cin?s;29

cout?!ㄐ薷暮蟮淖址恰?lt;〈modify(n,s)<<encll;cout<<〃修改后字符指針數(shù)組中的

字符串如下:\n”;for(inti=0;i<5;i++)

cout?str[i]?endl;

)

char"modify(int

n,chars[])

(

return*(str+n-l)=s;

)

有n個小孩排成一圈。從第1個小

孩開始作1至3報數(shù),凡報數(shù)為3

的小孩從圈中出來,求最后出圈的小孩的順序號是多少?

答:編程如卜:

#include<iostream.h>

voidmain()

(

intn,num[100];

cout<<〃輸入排號人數(shù):〃;

cin?n;

int*p=num;

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

*(p+i)=i+1;

i=0;

intk=0,a=0;

while(a<n-l)

(

if(*(p+i)!=0)

k++;

if(k==3)

{

*(p+i)=0;

k=0;

a++;

i++;

if(i-n)

i=0;

)

while(*p==0)

p++;

cout<〈”最后留下的是第號"<<endl;}

4.6簡單回答下列問題30

指針與一般變量有何不同?

溫馨提示

  • 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

提交評論