華工C課后答案_第1頁
華工C課后答案_第2頁
華工C課后答案_第3頁
華工C課后答案_第4頁
華工C課后答案_第5頁
已閱讀5頁,還剩57頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

習(xí)題1及其解答

1、1選擇題

1、一個最簡單得C++程序,可以只有一個(C)。

(a)庫函數(shù)(b)自定義函數(shù)(c)main函數(shù)(d)空函數(shù)

2、用C++語言編制得源程序要變?yōu)槟繕?biāo)程序必須要經(jīng)過(d)o

(a)解釋(b)匯編(c)編輯(d)編譯

3、C++程序中得簡單語句必須以(b)結(jié)束。

(a)冒號(b)分號(c)空格(d)花括號

4、有說明inta=0;doublex=5、16;以下語句中,(c)屬于編譯錯誤。

(a)x=a/x;(b)x=x/a;(c)a=a%x;(d)x=x*a;

5、執(zhí)行C++程序時出現(xiàn)得“溢出”錯誤屬于(c)錯誤。

(a)編譯(b)連接(c)運(yùn)行(d)邏輯

6、下列選項中,全部都就是C++關(guān)鍵字得選項為(c)o

(a)whileIFStatic(b)breakchargo;

(c)sizeofcaseextern(d)switchfloatinteger

7、按C++標(biāo)識符得語法規(guī)定,合法得標(biāo)識符就是(a)0

(a)_abc(b)new(c)7i(d)age

8.C++語句中,兩個標(biāo)識符之間(a)不能作為C++得分隔符。

(a)數(shù)字(b);(c):(d)

9.下列正確得八進(jìn)制整型常量表示就是(b)o

(a)OaO(b)015(c)080(d)0x10

10.下列錯誤得十六進(jìn)制整型常量表示就是(C)0

(a)0x11(b)Oxaf(c)Oxg(d)Oxlf

11.在下列選項中,全部都合法得浮點型數(shù)據(jù)得選項為(b)o

(a)Te3、515、2e-4(b)12、34Te+50、IE-12

(c)0、2e~2-12345>e-5(d)5、0e(l+4)0、18e+2

12.下列正確得字符常量為(d)o

(a)(b)'name'(c)a(d),\ior

13.下列選項中,(d)不能交換變量a與b得值。

(a)t=b;b=a;a=t;⑹a=a+b;b=a-b;a=a-b;

(c)t=a;a=b;b=t;(d)a=b;b=a;

14.關(guān)于下列語句敘述錯誤得就是(a)o

inti=I0,*p=也i;

(a)p得值為10(b)p指向整型變量i

(c)*p表示變量i得值(d)p得值就是變量i得地址

15.有以下變量說明,下面不正確得賦值語句就是(b)o

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

(a)*p2=b;(b)pl=a;

(c)p2=pl;(d)c=*pl*(*p2)

16.有以下變量說明,下面正確得語句就是(b)o

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

(a)&pb=a;(b)pb=pa;(c)pb=&pa;(d)*pb=*pa;

17.執(zhí)行下面語句序列后,a與b得值分別為(b)o

inta=5,b=3,t;

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)先級最高。

(a)<=(b)*=(c)+(d)*

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

(a)!(b)&&(c)(d)?:

20.設(shè)inti=l,j=2;則表達(dá)式i+++j得值為(c)o

(a)1(b)2(c)3(d)4

21.設(shè)inti=l,j=2;則表達(dá)式++i+j得值為(d)o

(a)1(b)2(c)3(d)4

22.在下列表達(dá)式選項中,(c)就是正確。

(a)++(a++)(b)a++b(c)a+++b(d)a++++b

23.已知inti=0,j=l,k=2;則邏輯表達(dá)式++i||—j&&++k得值為(b).

(a)0(b)1(c)2(d)3

24、執(zhí)行下列語句后,x得值就是(d),y得值就是(c)。

intx,y;

x=y=1;++x||++y;

(a)不確定(b)0(c)1(d)2

25、設(shè)x為整型變量,不能正確表達(dá)數(shù)學(xué)關(guān)系l〈xV5得C++邏輯表達(dá)式就是(a)。

(a)1<x<5(b)x==21|x==31|x—4

(c)Kx&&x<5(d)!(x〈=l)&&!(x>=5)

26、已知intx=5;執(zhí)行下列語句后,x得值為(c)。

X+=X-=X*X;

(a)25(b)40(c)-40(d)20

27、設(shè)inta=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、以下逗號表達(dá)式得值為(d)。

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

(a)25(b)20(c)100(d)45

1、2把下列數(shù)學(xué)表達(dá)式寫成C++算術(shù)表達(dá)式

1.2,x{x[x(ax+b)+c]+d}+e

3、ln(l+||'°)4、

5、cot6、1g(a2+ab+b2)

【解答】

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

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

3、log(1+pow(fabs((a+b)/(a-b)),10)

4、sqrt(1+3、14159/2*cos(48*3、14159/180))

5、l/tan((1-x*x)/(1+x*x))

或者cos((1-x*x)/(1+x*x))/sin((1-x*x)/(1+x*x))

6、logl0(a*a+a*b+b*b)

1、3用邏輯表達(dá)式表示下列條件

1、i被j整除2、n就是小于正整數(shù)k得偶數(shù)

3、lWx<104、x,y其中有一個小于z

5、y[TOO,TO],并且y[10,100]

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

7、22條邊a,b與c構(gòu)成三角形

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

【解答】

1、i%j==02、(n<k)&&(n%2==0)

3^l<=x&&x<104、x<z|Iy<z

5、!(y>=-100&&y<=-10)&&!(y>=10&&y<=100)

6、sqrt(pow((x-10),2)+pow((y-20),2))<35

7、a+b>c&&b+c>a&&c+a>b

8、(year%4==0)&&(year%l001=0)||(year%400-0)

1、4閱讀下列程序,寫出執(zhí)行結(jié)果

1.

^include<iostream>

usingnamespacestd;

intmain()

{inta=1,b=2;

boolx,y;

cout?(a++)+(++b)<<endl;

cout?a%b<<endl;

x=!a>b;

y-a—&&b;

cout?x?endl;

cout?y?endl;

)

【解答】

4

2

0

1

2.

ttinclude<iostream>

usingnamespacestd;

intmain()

{intx,y,z,f;

x二y二z二1;

f二一x||y--&&z++;

cout?"x=,"<<x<<endl;

cout?"y=〃<<y<<endl;

cout?"z=,z<<z<<endl;

cout?"f="<<f<<endl;

)

【解答】

x=0

y二0

z=2

f=l

3.

-include<iostream>

#include<iomanip>

usingnamespacestd;

intmain()

{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ù)“類型”就是對數(shù)據(jù)得抽象。類型相同得數(shù)據(jù)有相同得表示形式、存儲格式以及相關(guān)得操作。定

義一個變量時,計算機(jī)根據(jù)變量得類型分配存儲空間,并以該類型解釋存放得數(shù)據(jù)。

2.普通數(shù)據(jù)類型變量與指針類型變量得定義、存儲、使用方式上有何區(qū)別?請編寫一個程序驗證之。

【解答】

變量類型定義存儲使用方式

數(shù)據(jù)類型標(biāo)識符數(shù)據(jù)值通過名訪問即直接訪問對變量內(nèi)容操作

指針類型*標(biāo)識符地址值通過指針變量得地址值間址訪問對象

驗證程序:

#include<iostream>

usingnamespacestd;

intmain()

{inta,b,c;

cout?zza,b,c=〃;

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

int*pa=&a,*pb=&b,*pc=&c;〃用變量地址值初始化指針變量

cout〈〈〃a,b,c=/z?c?endl;〃名訪問,輸出a,b,c得值

cout?,zpa,pb,pc="?pa?",v?pb<<,z,z,<<pc<<endl;〃輸出指針變量得地址值

〃間址訪問,輸出pa,pb,pc指向得變量得賦值

cout?z,*pa,*pb,*pc=//<<*pa?z*,〃<<*pc〈〈endl;

}

3.什么叫數(shù)據(jù)對象得引用?對象得引用與對象得指針有什么區(qū)別?請用一個驗證程序說明之。

【解答】

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

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

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

改變指向。

(3)程序中用變量名與引用名訪問對象得形式與效果?樣;指針變量通過間址訪問對象。

驗證程序:

nclude<iostream>

usingnamespacestd;

intmain()

{inta;

cout〈<“a=〃;

cin>>a;

intra=a;

int*pa=&a;

cout?/za得值:*?a<<endl;

cout?/za得地址:;

cout?/zra得值:/z?ra?endl;

cout?z,ra得地址:z,<<&ra?endl;

cout<<z,pa所指向得變量得值:"<<*pa<<endl;

cout?/zpa得地址:“<<pa?endl;

)

4.數(shù)據(jù)對象在C++中有什么不同得訪問方式?請編寫一個程序驗證之。

【解答】

數(shù)據(jù)對象在C++中得訪問方式有:名訪問,引用(別名)訪問,間址訪問。

驗證程序:

#include<iostream>

usingnamespacestd;

intmain()

{inta;

coutVa=";

cin>>a;

a=a+5;〃名訪問

cout?&a?endl;〃輸出變量地址

cout?*(&a)<<endl;〃地址訪問,輸出變量值

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

cout?*pa?endl;〃間址訪問,輸出變量值

int&ra=a;//ra就是a得引用

cout?ra?endl;〃引用訪問,輸出變量a得值

)

5.為了約束對數(shù)據(jù)對象得值做只讀操作,C++采用什么方式?請做出簡要?dú)w納。

【解答】

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

約束對象說明形式

標(biāo)識常量const類型常量標(biāo)識符二常量表達(dá)式;

指針常量類型*const指針;

指向常量得指針const類型*指針;或者類型const*指針;

指向常量得指針常量const類型*const指針;或者類型const*const指針;

常引用const類型&引用名=對象名;

6.什么叫表達(dá)式?表達(dá)式值得類型由什么因素決定?使用不同運(yùn)算符連接以下3個變量,請寫出5個以

上獲得值等于true得表達(dá)式。

inta=l,b=2;doublex=0、5;

【解答】

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

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

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

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

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

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

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

6個值等于true得表達(dá)式:

(l)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.閱讀以下程序,分析下面語句序列中每一個字符與得意義,寫出輸出結(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="<〈a〈<"\nb==”<<*p〈〈“\n*q=

<<//\nra=z,?ra?,/\n*rt=/z?*rt?end1;

}

【解答】

字符與“&”得意義見程序中添加得注釋。

^include<iostream>

usingnamespacestd

intmainO

{inta=10,b=20;

int*p=&a,*q=&b;//“*”就是指針類型說明符,“&”就是取址運(yùn)算符

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

int&ra=a;//“&”就是引用說明符

ra=a;

int*&rt=q;//“*”就是指針類型說明符,“&”就是引用說明符

*rt=30;//“*”就是間址訪問符

//輸出語句中得“*”就是間址訪問符

cout〈<"a=〃<<a<<"\nb=〃<<b<<”\n*p==〃<<*q

?z/\nra=z,?ra?/z\n*rt=,,?*rt?endl;

}

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

a=200

b=30

*p=200

*q=30

ra=200

*rt=30

1、6編程題

1、輸入一個三位整數(shù),將它反向輸出。

【解答】

#include<iostream>

usingnamespacestd;

intmain()

{intx,i,j,k;

cout?”pleaseinputx:";

cin?x;

i=x/100;

j=x/10%10;

k=x%10;

cout<<k<<j?i?endl;

}

2、輸入平面上某點橫坐標(biāo)x與縱坐標(biāo)y,若該點在由圖3、1表示得方塊區(qū)域內(nèi),則輸出1;否則,輸出0。

圖1、H正方形

【解答】

^include<iostream>

usingnamespacestd;

intmainO

{doublex,y,b;

cout?”pleaseinputx,y:";

cin?x?y;

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

cout?b?endl;

)

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

【解答】

#include<iostream>

usingnamespacestd;

intmain()

{inta,b,c,temp,min;

cout<<"pleaseinputa,b,c:〃;

cin?a?b?c;

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

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

cout?"min="<<min<<endl;

)

習(xí)題2及其解答

2、1選擇題

1.已知inti=0,x=l,y=0;在下列選項使i得值變成1得語句就是(c)。

(a)if(x&&y)i++;(b)if(x==y)i++;

(c)if(x||y)i++;(d)if(!x)i++;

2.設(shè)有函數(shù)關(guān)系為y二,下面選項中能正確表示上述關(guān)系為(c)。

(a)y=1;(b)y=T;

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

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

elsey=-1;elsey=0;

(c)if(x<=0)(d)y=-1;

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

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

elsey=1;elsey=1;

3.假設(shè)i=2,執(zhí)行下列語句后i得值為(b)。

switch(i)

{case1:i++;

case2:i—;

case3:++i;break;

case4:—i;

default:i++;

)

(a)1(b)2(c)3(d)4

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

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

(a)4(b)3(c)2(d)1

5.已知inti=3;下面dowhile語句執(zhí)行時循環(huán)次數(shù)為(b)。

do(i-;cout<<i<<endl;}while(i!=1);

(a)1(b)2(c)3(d)無限

6.下面for語句執(zhí)行時循環(huán)次數(shù)為(b)。

inti;

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

{cout?i<<j?endl;

i++;j—;

(a)0(b)5(c)10(d)無限

7.以下死循環(huán)得程序段就是(b)。

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

(b)intk=0;do{++k;}while(k>=0);

(c)inta=5;while(a){a一;};

(d)inti=3;for(;i;i-);

2、2閱讀下列程序,寫出執(zhí)行結(jié)果

1.

#include<iostream)

usingnamespacestd;

intmain()

{inta,b,c,d,x;

a=c=0;b=1;d=20;

if(a)d=d-10;

elseif(!b)

if(!c)

x=15;

elsex=25;

cout?d?endl;

)

【解答】

20

2.

#include<iostream>

usingnamespacestd;

intmain()

{inta=0,b=1;

switch(a)

{case0:switch(b)

{case0:cout<X〃a=〃<<a<〈"b=z,<<b<<endl;break;

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

)

case1:a++;b++;cout〈〈"a="?a?"b=〃<<b<<endl;

}

)

【解答】

a=0b=1

a=1b=2

#include<iostream>

usingnamespacestd;

intmain()

{inti=1;

while(i<=10)

if(++i%31=1)

continue;

elsecout<<i?endl;

)

【解答】

4

7

10

ttinclude<iostream>

usingnamespacestd;

intmain()

{inti=0,j=5;

do

{i++;j—;

if(i>3)break;

}while(j>0);

cout<<"i="<<i'\t'<<〃j="?j?endl;

)

【解答】

i=4j=1

1.

#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;

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

switch(i)

{case0:s+=ibreak;

case1:s+=ibreak;

case2:s+=ibreak;

default:s+=2

)

cout<<z,s=/z<<s?endl;

)

【解答】

s=7

ttinclude<iostream>

usingnamespacestd;

intmain()

{inti,j,x二0;

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

{x++;

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

{if(j%2)continue;

x++;

x++;

)

cout?〃x=“?x?endl;

)

【解答】

x=16

2、3思考題

1、C++中有什么形式得選擇控制語句?歸納它們語法形式、應(yīng)用場合。根據(jù)一個實際問題使用不同

得條件語句編程。

【解答】

語句使用方式使用場合

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

else語句2:得結(jié)果選擇不同得操作。

適用于復(fù)雜得條件表達(dá)式判斷。

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

{case常量表達(dá)式1:語句1;得情況。

case常量表達(dá)式2:語句2;適用于判斷表達(dá)式簡單,需要多個分支處

理得情況。

case常量表達(dá)式n;語句n;

[default:語句n+1;]

}

演示程序:

程序⑴

〃此程序用if輸出等級對應(yīng)得分?jǐn)?shù)段

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

#include<iostream>

usingnamespacestd;

intmainO

{chargd;

cout?,zEnterthegrade:";

cin?gd;

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

while(!((gd>=,A*&&gd〈二'E')||(gd>='a'&&gd〈='e')))

{cout?zzInvalidgrade!Pleaseretry:,z;

cin>>gd;

)

if(gd==,A*Igd==,a)cout〈<"\nScored90To0!\n〃;

elseif(gd==,B*I|gd=='b')cout?/z\nScored80-89!\n”;

elseif(gd二二'C'I|gd二二'c')cout<<z,\nScored70-79!\n〃;

elseif(gd==,D*I|gd==,d')cout<</z\nScored60-69!\n”;

elseif(gd二二'E'||gd二二'e')cout?*\nScoreunder60!\n〃;

elsecout?/zUnexpecterror!\n〃;〃防止意外錯誤

}

程序⑵

〃此程序用switch輸出等級對應(yīng)得分?jǐn)?shù)段

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

#include<iostream>

usingnamespacestd;

intmain()

{chargd;

cout?z,Enterthegrade:";

cin>>gd;

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

while(!((gd>=,A1&&gd<=*E*)I|(gd>=,a&&gd<='e')))

{cout?/*Invalidgrade!Pleaseretry:";

cin>>gd;

)

switch(gd)

{case'A':

case'a':cout?,,\nScored90T00!\n〃;break;

case'B':

case'b':cout?z/\nScored80-89!\n/,;break;

case'C':

caseJc":cout<<z,\nScored70-79!\n^;break;

case'D':

case*d*:cout<<z,\nScored60-69!\n,z;break;

case'E':

case'e':cout<<z,\nScoreunder60!\n”;break;

defau11:cout?z,Unexpecterror!\n";//防止意外錯誤

)

}

2、什么叫循環(huán)控制?歸納比較C++中各種循環(huán)控制語句得語法、循環(huán)條件與循環(huán)結(jié)束條件得表示形

式及執(zhí)行流程。

【解答】

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

語句語法執(zhí)行流程使用場合

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

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

循環(huán)條件:表達(dá)式值為非0(真)先判斷形式循環(huán),條件不成立

循環(huán)結(jié)束條件:表達(dá)式值為0(假)時不進(jìn)入循環(huán)體。

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

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

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

循環(huán)條件:表達(dá)式值為非0(真)次循環(huán)體。

循環(huán)結(jié)束條件:表達(dá)式值為0(假)一般情況,while語句與do

while語句可以互換使用。

for語句for([表達(dá)式I];[表達(dá)式2];[表達(dá)式3D1for語句稱為步長循環(huán)語句,

循環(huán)體;表達(dá)式I通常用于確定循環(huán)次數(shù)得情況。

(1)表達(dá)式1稱為初始化表達(dá)式,不就是由于語句得3個表達(dá)式均可以

fals

循環(huán)體執(zhí)行部分。r缺省,也可以用于條件循環(huán),即循

(2)表達(dá)式3稱為后置表達(dá)式,作為循環(huán)1true環(huán)次數(shù)不確定得情況。

體得最后一個執(zhí)行表達(dá)式。循環(huán)體

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

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

1

1

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

3、根據(jù)一個實際問題,用不同得循環(huán)語句編程,分析其優(yōu)缺點。

【解答】

略。

4、用if語句與goto語句組織循環(huán),改寫思考題得第3小題編寫得程序。分析在什么情況下可以適

當(dāng)使用goto語句。

【解答】

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

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

程序略。

5、有以下程序

#include<iostream>

usingnamespacestd;

intmainO

{charc;

cin>>c;

if(c二二'y*I\c=-Y')

inta=1;

else

inta=0;

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

)

編譯錯誤為:errorC2065:'a':undeclaredidentifier,指示變量a沒有定義。請分析原因,并做出修

改。

【解答】

變量a得定義不應(yīng)該放在if-else語句體中。說明語句與執(zhí)行語句得執(zhí)行時機(jī)不同。變量說明要求在編

譯時定義存儲空間,而if-else就是執(zhí)行語句,程序運(yùn)行后才執(zhí)行。正確得程序就是:

#include<iostream>

usingnamespacestd;

intmain()

{charc;

inta;

cin?c;

if(c==y"|c='Y')

a=l;

else

a=0;

cout<</za=,z?a<<end1;

)

6、有以下程序,希望判斷兩個輸入得整數(shù)就是否相等。程序通過編譯,但不能達(dá)到預(yù)期結(jié)果。請分

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

#include<iostream>

usingnamespacestd;

intmainO

{inta,b;

cout〈<“a:〃;cin?a;

cout<<*b:cin?b;

if(a二b)

cout〈〈a<X〃等于;

else

cout<〈a<<〃不等于〃<<b<〈endl;

}

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

a:4

b:9

9等于9

【解答】

在if語句得判斷表達(dá)式(a=b)中,賦值號“二”應(yīng)該就是邏輯等“二”。從語法上,C++得if語句把

a二b這個賦值表達(dá)式視為邏輯表達(dá)式,沒有編譯錯誤。a=b得值決定于b。若b得輸入值不等于0,if作為

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

執(zhí)行了if語句得第1個分支。

2、4編程題

1.輸入某學(xué)生成績,若成績在85分以上輸出“verygood",若成績在60分到85分之間輸出“good”,

若成績低于60分輸出"nogood”。

【解答】

#include<iostream>

usingnamespacestd;

intmain()

{doub1escore;

cout?”pleaseinputscore:";

cin>>score;

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

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

elsecout<<"Nogood!”;

)

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

【解答】

#include<iostream>

usingnamespacestd;

intmain()

{inta,b,c,t;

cout<<“a,b,c=“;

cin?a>>b?c;

if(a>b){t=a;a=b;b=t;)

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

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

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

)

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

【解答】

#include<iostream>

usingnamespacestd;

intmain()

{doublea,b,c;

cout<<“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==bIia==cI:b==c)

cout<<〃等腰三角形!"<<endl;

elsecout?〃一般三角形!"?endl;

}

else

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

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

【解答】

#include<iostream>

usingnamespacestd;

intmainO

{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:

case1:

case0:grade='e';break;

)

else

{cout?”數(shù)據(jù)輸入錯誤!〃<<endl;

gotoend;

)

cout?grade?endl;

end:;〃分號不能省

)

5.編程序模擬剪刀、石頭與紙游戲。游戲規(guī)則為:剪刀剪紙,石頭砸剪刀,紙包石頭。玩游戲者從鍵盤

上輸入s(表示剪刀)或r(表示石頭)或p(表示紙),要求兩個游戲者交替輸入,計算機(jī)給出輸扁得信息。

【解答】

nclude<iostream>

usingnamespacestd;

intmain()

{charfirst,second;

cout<<"Firstinput(s,rorp

cin?first;

cout<<"Secondinput(s,rorp):〃;

cin?second;

switch(first)

{case's':

switch(second)

{case's':cout?“Scissortiesscissor、"?endl;gotoend;

case'r,:cout?“Scissoriscrushedbyrock、〃?endl;gotoend;

case'p':cout?“Scissorcutspaper>"?endl;gotoend;

default:cout?“secondinputerror!<<endl;gotoend;

}

case'r':

switch(second)

{case's':cout?“Rockcrushesscissor、“?endl;gotoend;

case'rf:cout?“Rocktiesrock^”?endl;gotoend;

case'p':cout?“Rockiswrappedbypaper>"<<endl;gotoend;

default:cout?z,secondinputerror!”<<endl;gotoend;

}

case,p':

switch(second)

{c

溫馨提示

  • 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

提交評論