版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度飛機(jī)租賃與飛行員培訓(xùn)服務(wù)合同3篇
- 2025屆江蘇蘇州市四校高三12月聯(lián)考語(yǔ)文試題(學(xué)生版)
- 兒童身體協(xié)調(diào)性訓(xùn)練考核試卷
- 公路客運(yùn)服務(wù)投訴處理與改進(jìn)考核試卷
- 2025版木屋建筑工程質(zhì)量保修合同示范文本4篇
- 2025版學(xué)校小賣部環(huán)保購(gòu)物袋定制與銷售合同2篇
- 2025年分期美食體驗(yàn)券購(gòu)買合同
- 2025年養(yǎng)老保險(xiǎn)擔(dān)保合同
- 2025年嬰童用品贈(zèng)與合同
- 2025年倉(cāng)庫(kù)貨物清點(diǎn)協(xié)議
- 中央2025年國(guó)務(wù)院發(fā)展研究中心有關(guān)直屬事業(yè)單位招聘19人筆試歷年參考題庫(kù)附帶答案詳解
- 2024年09月北京中信銀行北京分行社會(huì)招考(917)筆試歷年參考題庫(kù)附帶答案詳解
- 外呼合作協(xié)議
- 小學(xué)二年級(jí)100以內(nèi)進(jìn)退位加減法800道題
- 保險(xiǎn)公司2025年工作總結(jié)與2025年工作計(jì)劃
- 2024年公司領(lǐng)導(dǎo)在新年動(dòng)員會(huì)上的講話樣本(3篇)
- 眼科護(hù)理進(jìn)修專題匯報(bào)
- GB/T 33629-2024風(fēng)能發(fā)電系統(tǒng)雷電防護(hù)
- 深靜脈血栓(DVT)課件
- 2023年四川省廣元市中考數(shù)學(xué)試卷
- GB/T 19885-2005聲學(xué)隔聲間的隔聲性能測(cè)定實(shí)驗(yàn)室和現(xiàn)場(chǎng)測(cè)量
評(píng)論
0/150
提交評(píng)論