《习题2及其解答(第二版)doc.doc》由会员分享,可在线阅读,更多相关《习题2及其解答(第二版)doc.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第2章 程序控制结构2.1选择题1已经知道 int i=0, x=1, 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设有函数关系为y= ,下面选项中能正确表示上述关系为 c 。(a) y = 1 ; (b) y = -1 ;if( x = 0 ) if( x != 0 )if( x = 0 ) y = 0 ; if( x 0 ) y = 1 ;else y = -1; else y = 0(c) if( x = 0 ) (d
2、) y = -1 ; if( x 0 ) y = -1 ; if( x = 0 ) else y = 0 ; if( x 0 ) y = -1 ; else y = 1 ; else y = 1 ;3假设i=2,执行以下语句后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; 下面while语句执行时循环次数为 d 。while( !x & i 3 ) x + ; i
3、 + ; (a) 4(b) 3(c) 2(d) 15已经知道int i=3;下面do_while 语句执行时循环次数为 b 。do i-; coutiendl;while i!= 1 ;(a) 1(b) 2(c) 3(d) 无限6下面for语句执行时循环次数为 b 。 for ( int i=0,j=5;i=j; ) cout i j endl;i+; j-;(a) 0(b) 5(c) 10(d) 无限7以下死循环的程序段是 b 。(a) for( int x = 0 ; x = 0 ) ;(c) int a = 5 ; while( a ) a - ; ;(d) int i = 3 ; fo
4、r( ; i ; i - ) ;2.2阅读以下程序,写出执行结果 1. #include void main() int a,b,c,d,x; a = c = 0; b = 1; d = 20; if( a ) d = d-10; else if( !b ) if( !c ) x = 15; else x = 25; cout d endl; 【答案】 202. #include void main() int a = 0, b = 1; switch( a ) case 0: switch( b ) case 0 : cout a= a b= b endl; break; case 1 :
5、cout a= a b= b endl; break; case 1: a+; b+; cout a= a b= b endl; 【答案】a= 0 b= 1a= 1 b= 23. #include void main() int i = 1; while( i=10 ) if( +i % 3 != 1 ) continue; else cout i endl; 【答案】 4 7 104. #include void main() int i = 0 , j = 5; do i+; j-; if ( i3 ) break; while ( j0 ); cout i= i t j= j endl;
6、 【答案】 i= 4 j= 15. #include void main() int i,j; for( i=1, j=5; ij; i+ ) j-; cout i t j endl; 【答案】 3 36. #include void main() int i, s = 0; for( i=0; i5; i+ ) switch( i ) case 0: s += i; break; case 1: s += i; break; case 2: s += i; break; default: s += 2; cout s= s endl; 【答案】 s= 77. #include void ma
7、in() 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= 162.3 思考题1. C+中有什么形式的选择控制语句?归纳它们语法形式、应用场合。根据一个实际问题使用不同的条件语句编程。2. 什么叫循环控制?归纳比较C+中各种循环控制语句的语法、循环条件和循环结束条件的表示形式及执行流程。3. 根据一个实际问题,用不同的循环语句编程,分析其优缺点。4. 用if语句和goto语句组织循环,改写思考题2.3第3小题编写的程
8、序。分析在什么情况下可以适当使用goto语句。2.4编程题1输入某学生成绩,假设成绩在85分以上输出“very good,假设成绩在60分到85分之间输出“good,假设成绩低于60分输出“no good。【解答】#include void main() float score; cout score; if ( score=85 ) cout =60 ) cout Good!; else cout No good!;2输入三个数,按从小到大的顺序输出。【解答】#include void main() int a, b, c, t; cout a b c; if( ab ) t = a; a
9、= b; b = t; if( ac ) t = a; a = c; c = t; if( bc ) t = b; b = c; c = t; cout a t b t c endl;3输入三角形的三条边,判别它们能否形成三角形,假设能,那么判断是等边、等腰、还是一般三角形。【解答】#include void main() float a, b, c ; cout 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 等
10、腰三角形! endl; else cout 一般三角形! endl; else cout 不能形成三角形! endl ;4输入百分制成绩,并把它转换成五级分制,转换公式为: 【解答】#include void main() float score; char grade; cout 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
11、: grade = d; break; case 5: case 4: case 3: case 2: case 1: case 0: grade = e; break; else cout 数据输入错误! endl; goto end; cout grade endl;end: ; /分号不能省5编程序模拟剪刀、石头和纸游戏。游戏规那么为:剪刀剪纸,石头砸剪刀,纸包石头。玩游戏者从键盘上输入s表示剪刀或r表示石头或p表示纸,要求两个游戏者交替输入,计算机给出输赢的信息。【解答】#include void main() char first,second; cout first; cout s
12、econd; switch ( first ) case s: switch ( second ) case s: cout Scissor ties scissor. endl; goto end; case r: cout Scissor is crushed by rock. endl; goto end; case p: cout Scissor cuts paper. endl; goto end; default : cout second input error! endl ; goto end; case r: switch ( second ) case s: cout Ro
13、ck crushes scissor. endl; goto end; case r: cout Rock ties rock. endl; 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. endl; goto end; case r: cout Paper wraps the rock
14、. endl; goto end; case p: cout Paper ties paper. endl; goto end; default : cout second input error! endl; goto end; default : cout First input error! endl; goto end; end: ;6.输入一个整数,输出该整数的所有素数因子。例如,输入120,输出为2、2、2、3和5。【解答】#include void main() int m,i = 2; cout m; while( i=m ) if( m % i = 0 ) cout i ,;
15、 m = m / i; else i+;7.使用迭代公式编程序求某一正整数a的平方根。【解答】#include #include void main() const float eps = 1e-8; float a,x0,x; cout a; x0 = a / 2; x = ( x0 + a/x0 )/2; while( fabs( x-x0 )eps ) x0 = x; x =( x0 + a/x0 )/2; cout x endl;8.已经知道X=0,10,20,180,求sinx,cosx和tanx的值。【解答】#include #include #include void main(
16、) const double pi = 3.14159265; int i; double x,y1,y2,y3; cout setw(2) 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) y1 setw(15) y2 setw(15) y3 endl; 9.在100到200中找出同时满足用3除余2,用5除余3和用7除余2的所有整数
17、。【解答】#include void main() int i; for( i=100; i=200; i+ ) if ( ( i % 3 = 2) & ( i % 5 = 3 ) & ( i % 7 = 2 ) ) cout i endl; 10.求100到999中的水仙花数。所谓水仙花数是指一个三位数,它的每位数字的立方之和等于该数。例如,因为153=1+5+3,所以153为水仙花数。【解答】#include void main() int i,a,b,c; for( i=100; i=999; i+ ) a = i/100; b = ( i-a*100 ) / 10; c = i - a
18、*100 - b*10; if ( i = a*a*a + b*b*b + c*c*c ) cout i endl; 11.求1000之内的所有完数。所谓完数是指一个数恰好等于它的所有因子之和。例如,因为6=1+2+3,所以6为完数。【解答】#include void main() int i,j,s; for( i=1; i=1000; i+ ) s = 0; for( j=1; ji; j+ ) if ( i % j = 0 ) s = s + j; if ( i = s ) cout i endl; 12.编一程序显示如以下图案:* * * * * * * * * * * * * * *
19、 * * * * * *【解答】#include void main() int i,j,k; for( i=1; i=5; i+ ) for( k=1; k=5-i; k+ ) cout ; for( j=1; j=2*i-1; j+ ) cout *; cout endl; 13.已经知道XYZ+YZZ=532,其中X,Y和Z为数字,编一程序求出X,Y和Z。【解答】#include void main() int x,y,z,i; for( x=1; x=9; x+ ) for( y=1; y=9; y+ ) for( z=0; z=9; z+ ) i = 100*x + 10*y + z + 100*y + 10*z + z; if ( i = 532 ) cout x= x t y= y t z= z endl;