《C++程序設(shè)計(jì)基礎(chǔ)》(第 4 版)(上)習(xí)題與解答_第1頁(yè)
《C++程序設(shè)計(jì)基礎(chǔ)》(第 4 版)(上)習(xí)題與解答_第2頁(yè)
《C++程序設(shè)計(jì)基礎(chǔ)》(第 4 版)(上)習(xí)題與解答_第3頁(yè)
《C++程序設(shè)計(jì)基礎(chǔ)》(第 4 版)(上)習(xí)題與解答_第4頁(yè)
《C++程序設(shè)計(jì)基礎(chǔ)》(第 4 版)(上)習(xí)題與解答_第5頁(yè)
已閱讀5頁(yè),還剩135頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《C++程序設(shè)計(jì)基礎(chǔ)》(第4版)(上)

習(xí)題與解答

第1章基本數(shù)據(jù)與表達(dá)式

1.1選擇題

1.一個(gè)最簡(jiǎn)單的C++程序,可以只有一個(gè)(C)o

(A)庫(kù)函數(shù)(B)自定義函數(shù)(C)main函數(shù)(D)空函數(shù)

2.用C++語(yǔ)言編寫的源程序要成為目標(biāo)程序必須要經(jīng)過(guò)(D)o

(A)解釋(R)匯編(「)編輯(D)編譯

3.C++程序中的簡(jiǎn)單語(yǔ)句必須以(B)結(jié)束。

(A)冒號(hào)(B)分號(hào)(C)空格(D)花括號(hào)

4.假設(shè)有說(shuō)明inta=0;doublex=5.16;?則在以下語(yǔ)句中,((:)屬于編譯錯(cuò)誤。

(A)x=a/x;(B)x=x/a;(C)a=a%x;<D)x=x*a;

5.執(zhí)行C++程序時(shí)出現(xiàn)的“溢出”錯(cuò)誤屬于(C)錯(cuò)誤。

(A)編譯(B)連接(C)運(yùn)行(D)邏輯

6.在下列選項(xiàng)中,全部都是C++關(guān)鍵字的選項(xiàng)為(C)?

(A)whileIFStatic(B)breakchargo

(C)sizcofcaseextern<D)switchfloatinteger

7.按C++標(biāo)識(shí)符的語(yǔ)法規(guī)定,合法的標(biāo)識(shí)符是(A)。

(A)_abc(B)new(C)n(D)"age"

8.在C++語(yǔ)句中,兩個(gè)標(biāo)識(shí)符之間(A)不夠作為C++的分隔符。

(A)數(shù)字(B);(C):(D)+

9.下列正確的八進(jìn)制整里常量表示是(B).

(A)OaO<B)015(C)080(D)0x10

10.下列錯(cuò)誤的十六進(jìn)制整型常量表示是(C)o

(A)0x11(B)Oxaf(C)Oxg(D)Oxlf

11.在下列選項(xiàng)中,全部都合法的浮點(diǎn)型數(shù)據(jù)的選項(xiàng)為(B)o

(A)-Ie3.515.2c-4(B)12.34-le+50.1E-12

(C)0.2e-2-12345.e-5(D)5.0e(1+4)0.18e+2

12.在下列選項(xiàng)中,正確的字符常量為(D).

(A)"a"<B)'name'(C)a(D))\ior

13.在下列選項(xiàng)中,(D)不能交換變量a和b的值。

(A)l=b;b=a:a=t;(B)a=a+b;b=a-b;a=a-b;

(C)t=a;a=b;b=t;(D)a=b:t>=a:

14.關(guān)于下列語(yǔ)句,敘述錯(cuò)誤的是(A).

inti=10.*p=&i;

(A)p的值為10<B)p指向整型變量i

(C)*p表示變量i的值(D)p的值是變量i的地址

15.有以下變量說(shuō)明,下面不可砸的賦值語(yǔ)句是(B

inta=5,b=IO,c;int*pl=&a,*p2=&h;

(A)*p2=b;<B)pl=a;

(C)p2=pl;(D)c=*pl*(*p2);

16.有以下變量說(shuō)明,下面正確的語(yǔ)句是(B),.

inta=IO,b;int&pa=a,&pb=b;

(A)&pb=a;<B)pb=pa;(C)pb=&pa;(D)力pb=*pa;

17.執(zhí)行下面語(yǔ)句序列后,a和b的值分別為(B)□

inta=5,b=3,l;

int&ra=a;

int&rb=b;

t=ra;ra=rb:rb=t;

<A)3和3(B)3和5(C)5和3(D)5和5

18.在下列運(yùn)算符中,(D)優(yōu)先級(jí)最高。

(A)<=(B)*=(C)+(D)*

19.在下列運(yùn)算符中,(D)優(yōu)先級(jí)最低。

(A)!(B)&&(C)!=(D)?:

20.已知inti=l,j=2;,則表達(dá)式i+++j的值為(C).

(A)1(B)2(C)3(D)4

21.已知inti=l,j=2;,則表達(dá)式++i+j的值為(D).

(A)1(B)2(C)3(D)4

22.在下列表達(dá)式選項(xiàng)中,(C)是正確。

(A)++(a++)(B)a++b(C)a+++b(D)a++++b

23.已知inti=O.j=Lk=2;,則邏的表達(dá)式++i||--j&&++k的值為(BK

(A)0(B)1(C)2(D)3

24.執(zhí)行下列語(yǔ)句后,x的值是(D),y的值是().

intx,y;

x=y=l;++x||++y;

(A)不確定(B)0(C)1(D)2

25.設(shè)x為整型變量,不熊正確表達(dá)數(shù)學(xué)關(guān)系1<XV5的C++邏輯表達(dá)式是(A).)

<A)1<x<5(B)x==2||x==3||x==4

(C)l<x&&x<5(D)!(x<=l)&&!(x>=5)

26.已知intx=5;,執(zhí)行下列語(yǔ)句后,x的值為(C

x+=x-=x*x;

(A)25(B)40(C)-40(D)20

27.設(shè)inia=l,b=2,c=3,d=4;,則以下條件表達(dá)式的值為(A

a<b?a:c<d?c:d

(A)1(B)2(C)3(D)4

28.以下逗號(hào)表達(dá)式的值為(D

(x=4*5.x*5),x+25

(A)25(B)20(C)100(D)45

1.2根據(jù)下列數(shù)學(xué)表達(dá)式寫出C++算術(shù)表達(dá)式

2..r{.r[.t(ax+/?)+<?]+J}+<?

4.J1+5cos48。

6.lg(rr+?£?+Zr)

【解答】

1.1/(1+1/(1+l/(x+y)))

2.x*(x*(x*(a*x+b)+c)+d)+e

3.Iog(1+pow(fabs((a+b)/(a-b))?10)

4.sqrt(I+3.14159/2*cos(48*3.14159/180))

5.l/tan((I-x*x)/(I+x*x))

或者cos((I-x*x);(I+x*x))/sin((I-x*x)/(I+x*x))

6.log10(a*a+a*b+b*b)

1.3用邏輯表達(dá)式表示下列條件

1./被j整除2.〃是小于正整數(shù)%的偶數(shù)

3.lSv<10A.x.1y其中有一個(gè)小于z

5.y?[-100-10],并且ye[10,100]

6.坐標(biāo)點(diǎn)(x,y)落在以(10,20)為圓心,以35為半徑的圓內(nèi)

7.三條邊a,?和c構(gòu)成三角形

8.年份Year能被4整除,但不能被100整除,或者能被400整除

【解答】

l.i%j==02.(n<k)&&(n%2==0)

3.l<=x&&x<104.x<z||y<z

5.!(y>=-100&&y<=-IO)&&!(y>=10&&y<=IOO)

6.sqri(pow((x-10),2)十pov/((y-20),2))<35

7.a+b>c&&b+c>a&&c+a>b

8.(year%4==0)&&(year%100!=0)||(year%400==0)

1.4閱讀下列程序,寫出運(yùn)行結(jié)果

#includc<iostrcam>

usingnamespacestd:

intmain()

inta=1,b=2;

boolx,y;

cout?(a++)+(++b)?cndl;

cout?a%b?endk

x=!a>b;

y=a-&&b;

cout?x?endl;

cout?y?endk

)

【解答】

4

2

0

1

2.

#include<ioslream>

usingnamespacestd;

intmain()

{

intx,y,z,f;

x=y=z=1;

f=-x||y--&&z++;

cout?"x="?x?endl;

cout?"y="?y?endl;

cout?"z=M?z?endk

cout?"f="?f?endk

)

【解答】

x=0

y=0

z=2

UI

3.

/include<ioslream>

#include<iomanip>

usingnamespaces(d;

intinain()

(

inta=123;

int&ra=a;

int*pa=&a;

cout?setw(5)?dec<<a?setw(5)?oct?ra?setw(5)?hex?*pa?endl;

【解答】

1231737b

1.5思考題

1.什么是數(shù)據(jù)類型?變量的類型定義有什么作用?

【解答】

數(shù)據(jù)“類型”是對(duì)數(shù)據(jù)的抽象。類型相同的數(shù)據(jù)有相同的表示形式、存儲(chǔ)格式以及相關(guān)的操作。定義一

個(gè)變量時(shí),計(jì)算機(jī)根據(jù)變量的類型分配存儲(chǔ)空間,并以該類型解釋存放的數(shù)據(jù)。

2.普通數(shù)據(jù)類型變量和揖針類型變量的定義、存儲(chǔ)和使用方式有何區(qū)別?請(qǐng)編寫一個(gè)程序驗(yàn)證之。

【解答】

變量類型定義存儲(chǔ)使用方式

數(shù)據(jù)類型標(biāo)識(shí)符數(shù)據(jù)值通過(guò)名訪問(wèn)即直接訪問(wèn)對(duì)變量?jī)?nèi)容操作

指針類型*標(biāo)識(shí)符地址值通過(guò)指q?變量的地址值間址訪問(wèn)對(duì)象

驗(yàn)證程序:

#include<iostreain>

usingnamespacestd;

intmain()

{inta,b,c;

cout?,,a.b,c=

cin?a?b?c;〃對(duì)普通數(shù)據(jù)類型變量賦值

int*pa=&a.*pb=&b.*pc=&c:"用變量地址值初始化指針變量

cout?Ma,b,c="?a?H,,,?b?",H?c?cndl:/名訪問(wèn),輸出a,b,c的值

cout?"pa,pb,pc="?pa?","?pb?","?pc?endl;/7輸出指針變量的地址值

〃問(wèn)址訪問(wèn),輸出pa,pb,pc指向的變量的賦值

coiH?',*pa.*pb,*pc="?*pa?'\"?*pb?","?*pc?cndl:

3.什么是數(shù)據(jù)對(duì)象的引月?對(duì)象的引用和對(duì)象的指針布.什么區(qū)別?請(qǐng)用一個(gè)驗(yàn)證程序說(shuō)明之。

【解答】

引用是為數(shù)據(jù)對(duì)象定義別名。引用與指針有以下幾點(diǎn)區(qū)別:

(1)引用名不是內(nèi)存變晝,而指針變量要開辟內(nèi)存空間。

(2)引用名需要在變量定義與變量名綁定,并且不能重定義:指針變量可以在程序中賦給不同的地址

值,改變指向。

(3)程序中用變量名和引用名訪問(wèn)對(duì)象的形式和效果一樣:指針變量通過(guò)間址訪問(wèn)對(duì)象。

驗(yàn)證程序:

#include<iostream>

usingnamespacestd;

intmain()

{inta;

cout?"a=";

cin?a;

intra=a;

int*pa=&a:

cout?"a的值:,'?a?endl:

cout?"a的地址:M?&a?endl;

cout?"ra的值:"?ra?endl:

cout?Mra的地址:"《&ra?endl;

cout?"pa所指向的變量的值:"<<*pa?endl;

cout?"pa的地址:"?pa?cndl;

4.數(shù)據(jù)對(duì)象在C++中有幾種不同的訪問(wèn)方式?請(qǐng)編寫一個(gè)程序驗(yàn)證之。

【解答】

數(shù)據(jù)對(duì)象在C++中的訪問(wèn)方式有:名訪問(wèn),引用(別名)訪問(wèn),問(wèn)址訪問(wèn).

驗(yàn)證程序:

#include<iostream>

usingnamespacesld;

intmain()

{inta;

cout?"a=";

cin?a:

a=a+5;〃名訪問(wèn)

cout?&a?endk〃輸出變量地址

cout?*(&a)?cndl;〃地址訪問(wèn),輸出變量值

int*pa=&a;〃說(shuō)明指針變量,指向變量a

cout?*pa?endl;〃間址訪問(wèn),輸出變量值

int&ra=a;〃ra是a的引用

cout?ra?endl;〃引用訪問(wèn),輸出變量a的值

5.為「約束對(duì)數(shù)據(jù)對(duì)象的值進(jìn)行只讀操作,C++采用什么方式?請(qǐng)進(jìn)行簡(jiǎn)要?dú)w納。

【解答】

約束數(shù)據(jù)對(duì)象只讀形式如下:

約束對(duì)象說(shuō)明形式

標(biāo)識(shí)常量cons(類型常址標(biāo)識(shí)符=常址表達(dá)式;

指針常量類型*const指針;

指向格量的指針const類型”指針;或者類型pnsi*指針;

指向常量的指針常量const類型*const指針;或者類型const*8nst指針;

常引用const類型&引用名=對(duì)象名;

6.什么是表達(dá)式?表達(dá)式值的類型由什么因素決定?使用大同運(yùn)算符連接以下3個(gè)變量,請(qǐng)寫出5

個(gè)以上獲得值為【rue的表達(dá)式。

inia=l,b=2;doublex=0.5;

【解答】

表達(dá)式是由數(shù)據(jù)和運(yùn)算符,按求值規(guī)則,表達(dá)一個(gè)值的式子。

表達(dá)式值的類型的決定因素為操作數(shù)的類型。

(1)如果運(yùn)算符左右操作數(shù)類型相同,運(yùn)算結(jié)果也是相同類型。

(2)如果運(yùn)算符左右操傳數(shù)類型不同,首先把類型較低(存儲(chǔ)要求,示數(shù)能力較低)的數(shù)據(jù)轉(zhuǎn)換成類

型較高的數(shù)據(jù),然后運(yùn)算。

(3)賦值表達(dá)式的類型由被賦值變量的類型決定。當(dāng)把一個(gè)表達(dá)式的位賦給一個(gè)變量時(shí),系統(tǒng)首先強(qiáng)

制把運(yùn)算值轉(zhuǎn)換成變量的類型,然后執(zhí)行寫操作。

6個(gè)值等于true的衣這式:

(1)b>a&&a>x(2)(a+b)!=x(3)a||(b+x)

(4)a==(b*x)(5)a-b<x(6)(a/x==b)

7.閱讀以下程序,分析下面語(yǔ)句序列中每一個(gè)字符“*”和的含義,并寫出輸出結(jié)果。

#include<iostream>

usingnamespacestd:

intmain()

(

inta=10,b=20;

int*p=&a.*q=&b:

*P=*P**q;

int&ra=a;

ra=a;

int?&rt=q;

*rt=30;

cout?"a="?<i?"\nb="?b?"\n*p=",?*p?"\n*q="?*q

<<"\nra="?ra?"\n*rt="?*rt?endl;

)

【解答】

字符“*”和的意義見程序中添加的注釋。

#include<iostream>

usingnamespacestd.

intmain()

(

inta=10,b=20;

int*p=&a.*q=&b;仍*"是指針類型說(shuō)明符,是取址運(yùn)算符

*p=*p**q;〃第1、2、4個(gè)“*”是間址訪問(wèn)符,第3個(gè)“*”算術(shù)乘運(yùn)算符

int&ra=a;〃"&''是引用說(shuō)明符

ra=a;

int*&rt=q:〃“內(nèi)是指針類型說(shuō)明符,是引用說(shuō)明符

*1=30;仍*”是間址訪問(wèn)符

〃輸出語(yǔ)句中的”是間址訪問(wèn)符

cout?"a="?a?"\nb="?b?"\ji*p="??p?"\ii*q="?*q

?"\nra="?ra?"\n*rl="?*rt?cndl;

)

程序輸出結(jié)果為:

a=200

b=30

*p=200

*q=30

ra=200

*rt=30

1.6編程題

1.輸入一個(gè)3位整數(shù),將它反向輸出。

【解答】

#include<iostreani>

usingnamespacestd:

inimain()

(

inixj,j,k;

cout?"pleaseinputx:";

cin?x;

i=x/100;

j=x/10%!0;

k=x%IO;

cout?k?j?i?endl:

)

2.輸入平面上某點(diǎn)橫出標(biāo)x和縱坐標(biāo)》若該點(diǎn)位于圖1.11所示的方塊區(qū)域內(nèi),則輸出I;否劃,輸

出0。

【解答】

#include<iostream>

usingnamespacestd;

intmain()

(

doublex,y,b;

cout?"pleaseinputx,y:";

cin>>x>>y;圖1.11方形區(qū)域

b=(-2<=x)&&{x<=2)&&(-2<=y)&&(y<=2);

cout?b?endl,

)

3.輸入3個(gè)整數(shù),求出其中最小數(shù)(要求使用條件表達(dá)式,

【解答】

#include<iostrcarn>

usingnamespacestd;

intmain()

(

inta.b.cjempjnir:

cout?"pleaseinpula,b,c:";

cin?a?b?3;

temp=(a<b)?a:b;

min=(temp<c)?temp:c;

cout?"min="?min?endl;

)

第2章程序控制結(jié)構(gòu)

2.1選擇題

I.已知inii=0,x=l,y=。;,在下列選項(xiàng)中,使i的值變成I的語(yǔ)句是(C)。

(A)if(x&&y)i++;(B)if(x==y)i++;

(C)if(x||y)i++;(D)if(!x)i++;

-1x<0

2.設(shè)有函數(shù)關(guān)系為產(chǎn)0x=0,下列選項(xiàng)中,能正確表示上述關(guān)系的是(C)。

Ix>0

(A)y=I;(B)y=-l;

if(x>=0)if(x!=0)

if(x==0)y=0;if(x>0)y=I;

elsey=-1;elsey=0

(C)if(x<=0)(D)y=-l;

if(x<O)y=-l;if(x<=0)

elsey=0;if(x<0)y=-1;

elsey=1;elsey=0;

3.假設(shè)i=2,執(zhí)行下列語(yǔ)句后i的值為B)o

switch(i)

{

case1:i++;

case2:i—;

case3:++i;brea<;

case4:—i;

default:i++;

)

(A)1(B)2(C)3(D)4

4.已知inti=O,x=0;,在下面while語(yǔ)句執(zhí)行時(shí)循環(huán)次數(shù)為(D)。

while(!x&&i<3){x++;i++;}

(A)4(B)3(C)2(D)1

5.已知inti=3;,在下面do_while語(yǔ)句執(zhí)行時(shí)的循環(huán)次數(shù)為(B)。

do{i—;cout?i?eridl;}while(i!=1);

(A)I<B)2(C)3(D)無(wú)限

6.下面for語(yǔ)句執(zhí)行時(shí)的循環(huán)次數(shù)為(B)(,

inti,j;

for(i=0,j=5;i=j;)

{cout?i?j?ndl;i++;j-;)

(A)0(B)5(C)10(D)無(wú)限

7.以下程序段形成死循環(huán)的是(B)o

(A)intx;for(x=0;x<3;){x++;);

(B)inik=0;do{++k;}while(k>=0);

(C)inta=5;while(a){a—;);

(D)inti=3;£dr(;i;i-);

2.2閱讀下列程序,寫出運(yùn)行結(jié)果

i.

#include<iostream>

usingnamespaces【d:

intmain()

]

inta,b,c,d,x;

a=c=0;b=l;d=20:

if(a)

d=d-10;

else

if(5b)

if(!c)

x=15;

elsex=25:

cout?d?cndl;

I

【解答】

20

2.

#include<iostream>

usingnamespacestd;

intmain()

{

inta=0,b=1;

switch(a)

(

case0:

switch(h)

(

case0:cout?"a=M?a?"b="?b?endl;break:

case1:cout?"a="<<a?"b="?b?endl;break;

1

case1:

a++:b++;cout?"a="?a?"b="?b?endl;

)

)

【解答】

a=0b=1

a=1b=2

3.

#include<iostream>

usingnamespaces(d;

intmain()

(

inti=I;

whilc(i<=10)

{

if(++i%3!=I)

continue;

else

cout?i?endl;

}

)

【解答】

4

7

10

4.

#include<iostream>

usingnamespaces(d;

intmain()

(

inti=0.j=5;

do

{

i++;j--;

if(i>3)break;

}while(j>0);

cout?"i=',?i?endl?"j=M?j?endl;

)

【解答】

i=4j=1

5.

#include<iostream>

usingnamespacestd;

intmain()

{

inti,j;

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

{j-;)

cout?i?,\t'?j?endl;

)

【解答】

33

6.

#include<iostream>

usingnamespacestd;

intmain()

inti,s=0;

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

switch(i)

{

case0:s+=i;break;

case1:s+=i;break;

case2:s+=i;break;

default:s+=2;

}

cout?"s=H?s?endl;

)

【解答】

s=7

7.

#include<iostreani>

usingnamespacestd:

intmain()

{

inti,j,x=0;

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

(

x++;

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

{

if(j%2)

contiiue;

x++;

)

x++;

}

cout?"x="?x?endl;

}

【解答】

x=16

2.3思考題

i.C++語(yǔ)言中有什么形式的選擇控制語(yǔ)句?歸納它們的語(yǔ)法形式、應(yīng)用場(chǎng)合。根據(jù)?個(gè)實(shí)際問(wèn)題使用

不同的條件語(yǔ)句編程。

【解答】

語(yǔ)句使用方式使用場(chǎng)合

if語(yǔ)句if(表達(dá)式)語(yǔ)句1;需要對(duì)給定的條件進(jìn)行判斷,并根據(jù)判斷

else語(yǔ)句2;的結(jié)果選擇不同的操作。

適用于豆雜的條件表達(dá)式判斷。

switch語(yǔ)句switch(表達(dá)式)根據(jù)整型表達(dá)式的不同值決定程序分支

lease常量表達(dá)式1:語(yǔ)句1;的情況。

case常量表達(dá)式2:語(yǔ)句2;適用于判斷表達(dá)式簡(jiǎn)的,需要多個(gè)分支處

理的情況。

case常班表達(dá)式n;語(yǔ)句n;

[default:語(yǔ)句n+l:]

1

演示程序:

程序(1)

〃此程序用i%出等級(jí)對(duì)應(yīng)的分?jǐn)?shù)段

//A->=90,B-(90,80],C-(80,70],D-(70,60]?E-<60

#incIude<iostream>

usingnamespacestd;

intmain()

{chargd;

cout?',Enterthegnide:";

cin?gd;

〃直到輸入有效等級(jí),否則程序不繼續(xù)運(yùn)行

while(!((gd>='A'&&gd<='E')||(gd>='a,&&gd<='e')))

{cout?"Invalidgrade!Pleaseretry:";

cin?gd;

)

if(gd=='A'||gd=='a,)cout?,'\nScored90-100!\n";

elseif(gd=='B*|gd=='b')cout?"\nScored80-89!\n";

elseif(gd=='C'||gd=='c')cout?"\nScored70-79!\n";

elseit(gd==D'||gd==d)cout?"\nScored6()-69!\n";

elseif(gd=='E'||gd=='c,)cojl?"\nScorcunder60!\n";

elsecout?"Unexpecterror!\n";〃防止意外錯(cuò)誤

)

程序(2)

〃此程序用swilch輸出等級(jí)對(duì)應(yīng)的分?jǐn)?shù)段

//A->=90,B-(90,80],C-(80,70],D-(70.60]?E-<60

#include<iostream>

usingnamespacesld;

intmain()

{chargd;

cout?MEnterthegrade:";

cin?gd:

〃直到輸入有效等級(jí),否則程序不繼續(xù)運(yùn)行

while(!((gd>-A'&&gd<='E')||(gd>-a'&&gd<=,e')))

{coul?"lnvalidgrade!Pleaseretry:',;

cin?gd:

switch(gd)

(case'A':

case'a':cout?"'.nScored90-100!\n";break;

case'B':

case'b':cout?'"lnScored80-89!\n";break;

case'C':

case'c':cout?"\nScored70-79!\n";break;

case'D':

case'd':cout?"\nScored60-69!\n":break:

case'E':

case'e':cout?"\nScoreunder6()!\n";break;

defaulccout?"Unexpecterror!\n";〃防止意外錯(cuò)誤

)

)

2.什么叫做循環(huán)控制?歸納比較C++語(yǔ)言中各種循環(huán)控制語(yǔ)句的語(yǔ)法、循環(huán)條件和循環(huán)結(jié)束條件的表

示形式及執(zhí)行流程。

【解答】

循環(huán)控制是在特定的條件下,程序重復(fù)執(zhí)行些特定動(dòng)作。

語(yǔ)句語(yǔ)法執(zhí)行流程使用場(chǎng)合

while語(yǔ)句while(表達(dá)式)程序中常用于根據(jù)條件執(zhí)行

fals

循環(huán)體:Y掾作而不需關(guān)心循環(huán)次數(shù)的情況。

1trne先判斷形式循環(huán),條件不成立

循環(huán)條件:表達(dá)式值為非0(真)循環(huán)體時(shí)不進(jìn)入循環(huán)體。

循環(huán)結(jié)束條件:表達(dá)式值為(X假)

r

vhile語(yǔ)句的執(zhí)行流程

do-whileindo程序中常用r根據(jù)條件執(zhí)行

句循環(huán)體循環(huán)體操作而不需關(guān)心循環(huán)次數(shù)。

while(表達(dá)式);后判斷形式循環(huán),至少執(zhí)行1

次循環(huán)體。

尸。

循環(huán)條件:表達(dá)式值為非0(真)1一般情況,while語(yǔ)句和do

循環(huán)結(jié)束條件:表達(dá)式值為0(假)do_whUe語(yǔ)句執(zhí)行流程while語(yǔ)句可以互換使用.

for語(yǔ)句for”表達(dá)式1);俵達(dá)式2M表達(dá)式3])for語(yǔ)句稱為步長(zhǎng)循環(huán)語(yǔ)句,

!

循環(huán)體;通常用于確定循環(huán)次數(shù)的情況。

表達(dá)式*

由于語(yǔ)句的3個(gè)表達(dá)式均可以

fals(

(1)表達(dá)式1稱為初始化表達(dá)式,不是y缺省,也可以用于條件循環(huán)即循

循環(huán)體執(zhí)行部分。|true環(huán)次數(shù)不確定的情況。

(2)表達(dá)式3稱為后置表達(dá)式,作為循il環(huán)體

環(huán)體的最后一個(gè)執(zhí)行表達(dá)式。I

(3)循環(huán)條件:表達(dá)式2值為非。(真〉表達(dá)式S

循環(huán)結(jié)束條件:表達(dá)式2值為0(假)

r

for語(yǔ)句的執(zhí)行流程

3.根據(jù)一個(gè)實(shí)際問(wèn)題,用不同的循環(huán)語(yǔ)句編程,分析其優(yōu)缺點(diǎn)。

【解答】

略。

4.用if語(yǔ)句和goto語(yǔ)句組織循環(huán),改寫上面第3題編寫的程序,并分析在什么情況下可以適當(dāng)使用

goto語(yǔ)句0

【解答】

在不破壞程序基本流程控制的情況下,可以適當(dāng)使用goto語(yǔ)句實(shí)現(xiàn)從語(yǔ)句結(jié)構(gòu)內(nèi)部向外的必要跳轉(zhuǎn),

即按特定條件結(jié)束結(jié)構(gòu)語(yǔ)句塊的執(zhí)行。

程序略。

5.有以下程序,希望判斷兩個(gè)輸入的整數(shù)是否相等。程序通過(guò)編譯,但不能達(dá)到預(yù)期結(jié)果。請(qǐng)分析程

序能夠通過(guò)C++編譯而不能得到期望結(jié)果的原因。

#include<iostream>

usingnamespacestd:

intmain()

(

inta,b;

cout?"a:cin?a;

cout?"b:cin?b;

if(a=b)

cout?a?"等于""b?endl;

else

cout?a?"不等T',?b?endi:

)

運(yùn)行程序,輸入a的值為4,b的值為9,顯示結(jié)果如下:

a:4

b:9

9等于9

【解答】

在if語(yǔ)句的判斷表達(dá)式(a=b)中,賦值號(hào)”少應(yīng)該是邏輯等“=="。從語(yǔ)法上,C++的if語(yǔ)句把a(bǔ)=b這個(gè)

賦值表達(dá)式視為邏輯表達(dá)式,沒(méi)有編譯錯(cuò)誤。a=b的值決定于b。若b的輸入值不等于0,if語(yǔ)句的判斷表

達(dá)式作為邏輯真(true),否則作為邏輯假(false)。所以,題目中輸入b的值雖然不等于a,但表達(dá)式a=b

為邏輯iruc,執(zhí)行了if語(yǔ)句的第1個(gè)分支。

2.4編程題

1.輸入某學(xué)生成績(jī),若成績(jī)?cè)?5分以匕則輸出“verygood";若成績(jī)?cè)?0?85分之間,則輸出“good”;

若成績(jī)低于60分,則輸出“nogood”。

【解答】

#include<iostreain>

usingnamespacestd;

intniain()

doublescore:

cout?"pleaseinputscore:'1;

cin?score;

if(score>=85)cout?"Verygood!”;

elseif(score>=60)cout?"Good!";

elsecout?"Nogood!";

)

2.輸入3個(gè)整數(shù),按從小到大的順序輸出它們的值。

【解答】

#include<iostream>

usingnamespacestd;

intmain()

(

inta.b,c,t;

com?"a,b.c=";

cin?a?b?c;

if(a>b){t=a;a=b:b=U}

if(a>c){t=a;a=c;c=l;}

if(b>c)(t=b;b=c;c=t;}

cout?a?'\t'?b?'\t'?c?endl;

)

3.輸入三角形的3條邊,判別它們能否形成三角形,若能,則判斷是等邊、等腰三角形,還是一般

三角形。

【解答】

#include<iostream>

usingnamespacestd;

intniain()

I

doublea.b,c;

cou(?"a.b,c=;

cin?a?b?c;

if(a+b>c&&b+c>a&&c+a>b)

(

if(a==b&&b==c)

cout<<"等邊三角形!"<<endl;

elseif(a==b||a==c||b==c)

coul?”等腰三角形!"<<endl;

ekecoin一般三角形!"<<endl;

)

else

cout?"不能形成三角形!"<<endl;

)

4.輸入百分制成績(jī),并杷它轉(zhuǎn)換成五級(jí)分制,轉(zhuǎn)換公式為:

A(優(yōu)秀)90?100

B(良好)80?89

C(中等)70?79

D(合格)60?69

grade(級(jí)別)=

【解答】

#include<iostream>

usingnamespacestd;

intmain()

(

doublescore;chargrade;

cout?"score=";

cin?score:

if(score>=0&&score<=100)

(

switch(int(score)/10)

(

case10:

case9:grade='a*;break;

case8:grade='b';break:

case7:grade='c';break;

case6:grade='d';break:

case5:

case4:

case3:

case2:

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論