C++課后習題答案2-習題及其解答_第1頁
C++課后習題答案2-習題及其解答_第2頁
C++課后習題答案2-習題及其解答_第3頁
C++課后習題答案2-習題及其解答_第4頁
C++課后習題答案2-習題及其解答_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2 及其解答選擇題在下列選項使i 的值變成 1的語句是 ( c )1已知 int i=0, x=1, y=0 ;(b) 5(c) 10(d) 無限(a) if( x&&y ) i+ ;(c) if( x|y ) i+ ;12 設有函數(shù)關(guān)系為 y= 01(b) if( x=y ) i+ ;(d) if( !x ) i+ ;x0,下面選項中能正確表示上述關(guān)系為( c )x0x0(a) y = 1 ;if( x >= 0 )if( x = 0 ) y = 0 ;else y = -1;(c) if( x <= 0 )if( x < 0 ) y = -1 ;else

2、y = 0 ;else y = 1 ;(b) y = -1 ;if( x != 0 )if( x > 0 ) y = 1 ;else y = 0;(d) y = -1 ;if( x <= 0 )if( x < 0 ) y = -1 ;else y = 1 ;3 假設 i=2 ,執(zhí)行下列語句后i 的值為( b )switch( i ) case 1 : i + ;case 2 : i - ;case 3 : + i ; break ;case 4 : - i ;default : i + ;(a) 1(b) 2(c) 3(d) 44 已知 int i=0 , x=0; 下面 w

3、hile 語句執(zhí)行時循環(huán)次數(shù)為( d ) 。 while( !x && i< 3 ) x+ ; i+ ; (a) 4(b) 3(c) 2(d) 15 已知 int i=3; 下面 do_while 語句執(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 ) 。 int i;for ( i=0, j=5;i=j; ) cout << i << j << endl;i+; j-;(

4、a) 07 .以下死循環(huán)的程序段是(b )o(a) int x; for( int x=0 ; x<3 ; ) x+ ; ;(b) int k = 0; do +k ; while( k>=0 );(c) int a=5 ; while( a ) a- ; ;(d) int i=3 ; for( ; i ; i - ) ;閱讀下列程序,寫出執(zhí)行結(jié)果1.#include<iostream>using namespace std;int main() int a,b,c,d,x;a = c = 0; b = 1; d = 20;if( a ) d = d-10;else i

5、f( !b )if( !c )x = 15;else x = 25;cout << d << endl;【解答】202.#include<iostream>using namespace std;int main() int a = 0, b = 1;switch( a ) case 0: switch( b ) case 0 : cout<<"a="<<a<<" b="<<b<<endl; break;case 1 : cout<<"a

6、="<<a<<" b="<<b<<endl; break;case 1: a+; b+; cout<<"a="<<a<<" b="<<b<<endl;【解答】a= 0 b= 1a= 1 b= 2#include<iostream>3using namespace std;int main() int i = 1;while( i<=10 )if( +i % 3 != 1 ) continue;else

7、 cout << i << endl;【解答】47104#include <iostream>using namespace std;int main() int i = 0 , j = 5;do i+; j-;if ( i>3 ) break; while ( j>0 );cout << "i=" << i << 't'<< "j=" << j << endl;【解答】i= 4 j= 15#include<ios

8、tream>using namespace std;int main() int i,j;for( i=1, j=5; i<j; i+ ) j-; cout<<i<<'t'<<j<<endl;【解答】336#include<iostream>using namespace std;int main() int i, s = 0;for( i=0; i<5; i+ )switch( i ) case 0: s += i; break;case 1: s += i; break;case 2: s +=

9、i; break;default: s += 2;cout<<"s="<<s<<endl;【解答】s= 77#include<iostream>using namespace std;int main() int i, 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思考題1.

10、C+鐘有什么形式的選擇控制語句歸納它們語法形式、應用場合。根據(jù)一個實際問題使用不同的條 件語句編程?!窘獯稹空Z句使用方式使用場合if語句if(表達式)語句1;else語句2;需要對給定的條件進行判斷,并根據(jù)判斷 的結(jié)果選擇不同的操作。適用于復雜的條件表達式判斷。switch 語句switch(表達式) case常量表達式1:語句1;case常量表達式2:語句2;case常量表達式n;語句n;default:語句 n+1;根據(jù)整型表達式的不同值決定程序分支的情況。適用于判斷表達式簡單,需要多個分支處理的情況。演示程序:程序(1)什么叫循環(huán)控制歸納比較 C+鐘各種循環(huán)控制語句的語法、循環(huán)條件和循環(huán)

11、結(jié)束條件的表示形式及執(zhí) 行流程?!窘獯稹縡or語句for(表達式1;表達式2;表達式3) 循環(huán)體;(1)表達式1稱為初始化表達式,不是 循環(huán)體執(zhí)行部分。(2)表達式3稱為后置表達式,作為循 環(huán)體的最后一個執(zhí)行表達式。(3)循環(huán)條件:表達式2值為非0 (真) 循環(huán)結(jié)束條件:表達式2值為0 (假)-<1表達式】1 truefor語句稱為步長循環(huán)語句, 通常用于確定循環(huán)次數(shù)的情況。由于語句的3個表達式均可以 缺省,也可以用于條件循環(huán),即循 環(huán)次數(shù)不確定的情況。通環(huán)俗F表區(qū)式3 1r語句的執(zhí)行胸彳3 .根據(jù)一個實際問題,用不同的循環(huán)語句編程,分析其優(yōu)缺點?!窘獯稹柯?。4 .用if語句和goto語

12、句組織循環(huán),改寫思考題的第 3小題編寫的程序。分析在什么情況下可以適 當使用goto語句?!窘獯稹吭诓黄茐某绦蚧玖鞒炭刂频那闆r下,可以適當使用goto語句實現(xiàn)從語句結(jié)構(gòu)內(nèi)部向外的必要跳轉(zhuǎn),即按特定條件結(jié)束結(jié)構(gòu)語句塊的執(zhí)行。程序略。5 .有以下程序#include<iostream>using namespace std;int main() char c;cin>>c;if(c=V|c='Y')int a=1;elseint a=0;cout<<"a="<<a<<endl;編譯錯誤為:error

13、C2065: 'a' : undeclared identifier,指示語句行cout<<"a="<<a<<endl;變量a沒有定義。請分析原因,并做出修改?!窘獯稹砍绦蛟趇f和else分支中分別聲明了各自的局部變量a,而執(zhí)行輸出語句時,聲明的變量a作用域已經(jīng)結(jié)束,所以編譯器認為輸出語句的a沒有定義。正確的程序是:#include<iostream>using namespace std;int main() char c;int a;cin>>c;if(c='y'|c='

14、Y')a=1;elsea=0;cout<<"a="<<a<<endl;6 . 有以下程序,希望判斷兩個輸入的整數(shù)是否相等。程序通過編譯,但不能達到預期結(jié)果。請分析程序能夠通過C+褊譯而不能得到期望結(jié)果的原因。#include<iostream>using namespace std;int main() int a,b;cout<<"a: " cin>>a;cout<<"b: " cin>>b;if( a=b )cout<&l

15、t;a<<" 等于 "<<b<<endl;elsecout<<a<<" 不等于 "<<b<<endl;程序運行后,輸入 a 的值為4, b 的值為9,顯示結(jié)果如下:a: 4b: 99 等于 9【解答】在if語句的判斷表達式(a=b)中,賦值號“=”應該是邏輯等“="。從語法上,C+曲勺if語句把a=b 這個賦值表達式視為邏輯表達式,沒有編譯錯誤。a=b的值決定于b。若b的輸入值不等于0, if作為邏輯真(true ),否則作為邏輯假(false )。所以,題目中

16、輸入 b的值雖然不等于a,但表達式a=b為邏 輯 true ,執(zhí)行了 if 語句的第 1 個分支。編程題1 輸入某學生成績, 若成績在 85 分以上輸出 “ very good” , 若成績在 60 分到 85 分之間輸出“ good” ,若成績低于60 分輸出“ no good ” ?!窘獯稹?include<iostream>using namespace std;int main() double score;cout << "please input score:"cin >> score;if ( score>=85 )

17、cout << "Very good!"else if ( score>=60 ) cout << "Good!"else cout << "No good!"2 .輸入三個整數(shù),按從小到大的順序輸出它們的值?!窘獯稹?include<iostream>using namespace std;int main() int a, b, c, t;cout << "a, b, c="cin >> a >> b >> c

18、;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>using namespace std;int main() double a, b, c ;cout <

19、;< "a, b, c = " ;cin >> a >> b >> c ;if ( a+b > c && b+c > a && c+a > b ) if ( a = b && b = c )cout << "等邊三角形!" << endl;else if ( a = b | a = c | b = c )cout << "等腰三角形! " << endl;else cout <

20、;< "一般三角形! " << endl;elsecout << " 不能形成三角形! " << endl ;4輸入百分制成績,并把它轉(zhuǎn)換成五級分制,轉(zhuǎn)換公式為:A (優(yōu)秀)90100B (良好)8089grade (級別)C (中等) 70 79D (合格)6069E (不合格)059【解答】#include<iostream>using namespace std;int main() double score; char grade;cout << "score="

21、;cin >> score;if ( score >= 0 && score <= 100 ) switch ( int( score ) /10 ) case 10:case 9: grade = 'a' break;case 8: grade = 'b' break;case 7: grade = 'c' break;case 6: grade = 'd' break;case 5:case 4:case 3:case 2:case 1:case 0: grade = 'e

22、9; break;else cout <<" 數(shù)據(jù)輸入錯誤! "<< endl;goto end;cout << grade << endl;end: ;<< endl; goto end;case 'r': cout << "Scissor is crushed by rock." << endl; goto end;case 'p': cout << "Scissor cuts paper." <&

23、lt; endl; goto end; default : cout << "second input error!" << endl ; goto end;case 'r': switch ( second ) case 's': cout << "Rock crushes scissor." << endl; goto end;case 'r': cout << "Rock ties rock." << endl

24、; goto end;case 'p': cout << "Rock is wrapped by paper." << endl; goto end;default : cout << "second input error!" << endl; goto end; case 'p':switch ( second ) case 's': cout << "Paper is cut by scissor." << e

25、ndl; goto end;case 'r': cout << "Paper wraps the rock." << endl; goto end;case 'p': cout << "Paper ties paper." << endl; goto end;default : cout << "second input error!" << endl; goto end; default : cout << "

26、;First input error!" << endl; goto end; end: ; 6 . 輸入一個整數(shù),輸出該整數(shù)的所有素數(shù)因子。例如,輸入 120,輸出為 2、 2、 2、 3和 5 【解答】#include<iostream>using namespace std;int main() int m,i = 2;cout << "please input m:"cin >> m;while( i<=m )if( m % i = 0 ) cout << i << "

27、,"m = m / i; else i+; 7 .使用迭代公式Xn 1(Xn a/Xn)/2 (n 0,1,2, ;X0a/2)編程序求某一正整數(shù)a的平方根?!窘獯稹?include<iostream>#include<cmath>using namespace std;int main() const double eps = 1e-8;double a,x0,x;cout << "please input a:"cin >> a;x0 = a / 2;x = ( x0 + a/x0 )/2;while( fabs

28、( x-x0 )>eps ) x0 = x; x =( x0 + a/x0 )/2;cout << x << endl;8 .已知 X=0 ,10 , 20 ,,180 ,求 sin x,cos x 和 tan x 的值?!窘獯稹?include<iostream>#include<cmath>#include<iomanip>using namespace std;int main() const double pi = 3.;int i;double x,y1,y2,y3;cout << setw(2) <

29、< "x" << setw(15) << "sin(x)" << setw(15)<< "cos(x)" << setw(15) << "tg(x)" << endl;for( i=0; i<=18; i+ ) x = i*10*pi/180;y1 = sin( x );y2 = cos(x);y3 = y1/y2;cout << setw(2) << i << setw(15) &l

30、t;< y1 << setw(15)<< y2 << setw(15) << y3 << endl;9. 在 100到 200 中找出同時滿足用 3 除余2,用5 除余 3 和用 7 除余 2 的所有整數(shù)?!窘獯稹?include<iostream>using namespace std;int main() int i;for( i=100; i<=200; i+ ) if ( ( i % 3 = 2) && ( i % 5 = 3 ) && ( i % 7 = 2 ) ) c

31、out << i << endl;10. 求 100 到 999 中的水仙花數(shù)。所謂水仙花數(shù)是指一個三位數(shù),它的每位數(shù)字的立方之和等于該數(shù)。例如,因為153=1 3+53+33 ,所以 153 為水仙花數(shù)?!窘獯稹?include<iostream>using namespace std;int main() int i,a,b,c;for( i=100; i<=999; i+ ) a = i/100;b = ( i-a*100 ) / 10;c = i - a*100 - b*10;if ( i = a*a*a + b*b*b + c*c*c ) cout << i <<endl;11. 求 1000 之內(nèi)的所有完數(shù)。所謂完數(shù)是指一個數(shù)恰好等于它的所有因子之和。例如,因為6=1+2+3,所以 6 為完數(shù)。【解答】

溫馨提示

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

評論

0/150

提交評論