《电子工业出版社C程序设计基础第3版答案.pdf》由会员分享,可在线阅读,更多相关《电子工业出版社C程序设计基础第3版答案.pdf(133页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、9习题1及其解答1.1选择题L 一个最简单的C+程序,可以只有一个(c)。(a)库函数(b)自定义函数(c)main函数(d)空函数2.用C+语言编制的源程序要变为目标程序必须要经过(d)。(a)解释(b)汇编(c)编辑(1)编译3.C+程序中的简单语句必须以(b)结束。(a)冒号(b)分号4.有说明 int a=0;double x=5.16;(c)以下语句中,(c(a)x=a/x;(b)x=x/a;(c)5.执行C+程序时出现的“溢出”错误属于(a)编译6,下列选项中,(a)while(c)sizeof(b)连接(c)全部都是C+关键字的选项为(IF Staticcase extern(b
2、)(d)a=a%x;c)错误。运行c)o空格)属于编译错误。(d)x=x*a;break charswi tch f 1 oat7.按C+标识符的语法规定,合法的标识符是(a)o(a)_abc(b)new8.C+语句中,两个标识符之间(a)数字(b);(d)逻辑gointeger(C)7 1)不能作为C+的分隔符。(c):(d)(d)(d)花括号age9.下列正确的八进制整型常量表示是(b(a)OaO(b)0151 0.下列错误的十六进制整型常量表示是(a)0 x11(b)Oxaf)o(c)080C )o(c)Oxg(d)(d)0 x10Oxlf1 1.在下列选项中,全部都合法的浮点型数据的选
3、项为(b(a)-le3.5(c)0.2e-215.2e-4-12345.e-5(b)(d)12.34)o一 le+50.IE-125.0e(l+4)0.1 8e+21 2.下列正确的字符常量为(d)o(a)“a”1 3.下列选项中,(b)bame(c)a(d)MOVd)不能交换变量a和b的值。(a)t=b;b=a;(c)t=a;a=b;a=t;b二 I;(b)a=a+b;b=a-b;a=a-b;(d)a=b;b 二 a;1 4.关于下列语句叙述错误的是(int i=10,*p=&i;(a)p的值为的(c)*p表示变量i 的值a)o(b)(d)P指向整型变量ip的值是变量i 的地址1 5.有以下
4、变量说明,下面不正确的赋值语句是(b)。int a=5,b=10,c;int*pl=&a,*p2=&b;(a)*p2=b;(b)pl=a;(c)p 2 =p l ;(d)c =*p l *(*p 2 );1 6 .有以下变量说明,卜面正确的语句是(b )。i n t a=1 0,b;i n t&p a=a,&p b=b;(a)&p b =a;(b)p b =p a;(c)p b =&p a;(d)*p b =*p a;1 7 .执行卜面语句序列后,a和b的值分别为(b )oi n t a =5,b =3 ,t ;i n t&r a =a ;i n t&r b =b ;t =r a ;r a =
5、r b ;r b =t ;(a)3和3 (b)3和5(c)5和31 8 .在下列运算符中,(d )优先级最高。(a)=(b)*=(c)+1 9.在下列运算符中,(d )优先级最低。(a)!(b)&(c)!=2 0.设i n t i=l,j=2;则表达式i+j的值为(a)1 (b)2 (c)32 1 .设i n t i =j=2;则表达式+i+j的值为(a)1 (b)2 (c)3(d)5和5(d)*(d)?:(d)4(d)4)o)ocd2 2 .在卜.列表达式选项中,(c )是正确。(a)+(a+)(b)a+b(c)a+b(d)a+b2 3 .己 知i n t i=0,j=l,k=2;则逻辑表达
6、式+i|卜-j&+k的值为(b )。(a)0 (b)1 (c)2 (d)32 4 .执行下列语句后,x的值是(d ),y的值是(c )oi n t x,y ;x =y =1;+x|+y ;(a)不确定(b)0 (c)1 (d)22 5.设x为整型变量,不用正确表达数学关系1VXV 5的C+逻辑表达式是(a )。(a)1 x 5(b)x=2|x=3|x=4(c)K x&x 5(d)!(x=5)2 6 .已 知i n t x=5;执行下列语句后,x的值为(c )。X +=X -=X *X;(a)2 5(b)4 0 (c)-4 0 (d)2 02 7 .设i n t a=l,b=2,c=3,d=4;
7、则以下条件表达式的值为(a )。a b?a:c d?c:d(a)1 (b)2 (c)3 (d)42 8 .以下逗号表达式的值为(d )o(x =4 *5,x *5),x +2 5(a)2 5(b)2 0 (c)1 0 0 (d)4 51.2 把下列数学表达式写成C+算术表达式111+1 +-x+y3.I n 3+1 a +a-bL 1 -V25.c o t/_-2.x x x (a x+b)+c +d +eJ l +cos 4 8。6.l g(a2+a b+b2)1 +xz,【解答】1.1/(1 +1/(1 +l/(x +y)2.x*(x*(x*(a*x+b)+c)+d)+e3.l o g(1
8、 +p o w(f a b s(a +b )/(a -b ),1 0)4.s q r t(1 +3.1 4 1 59/2 *c o s(4 8 *3.1 4 1 59/1 8 0 )5.l/t a n(1 -x*x )/(1 +x*x)或者 c o s(1 -x*x )/(1 +x*x )/s i n(1 -x*x )/(1 +x*x )6.I o g l 0(a*a+a*b+b*b)1.3 用逻辑表达式表示下列条件1.i被j整除 2.n是小于正整数k的偶数3.l x 1 0 4.x,y其中有一个小于z5.y e -1 0 0,1 0 ,并且 1 0,1 0 0 6 .坐标点(x,y)落在以(
9、1 0,20)为圆心,以3 5为半径的圆内7 .三条边a,b和c构成三角形8 .年份Y e a r能被4整除,但不能被1 0 0整除或者能被4 0 0整除【解答】1.i%j =0 2.(n k)&(n%2 二 二 0)3.l=x&x 1 0 4.x z|y=-1 0 0&y=1 0&y=1 0 0 )6.s q r t (p o w(x-1 0),2)+p o w(y-2 0),2)c&b+c a&c+a b8.(y e a r%4 =0)&(y e a r%1 0 0!=0)I I(y e a r%4 0 0=0)1.4 阅读下列程序,写出执行结果1.#i n c l u d e u s i
10、 n g n a m e s p a c e s t d;i n t m a i n O i n t a =1,b =2;b o o l x,y;c o u t (a+)+(+b)e n d l;c o u t a%b b;y =a一&b;c o u t x e n d l;c o u t y e n d l;)【解 答】2012.#i n c l u d e u s i n g n a m e s p a c e s t d;i n t m a i n()i n t x,y,z,f;x =y =z =1;f 二 一x I|y-&z+;c o u t x =c o u t y =c o u t
11、 z 二 x e n d l;y e n d l;z e n d l;c o u t f =e n d l;)【解 答】x=0y=0z=2f=l3.#i n c l u d e#i n c l u d e u s i n g n a m e s p a c e s t d;i n t m a i n()i n t a=1 2 3;i n t&r a=a;i n t *p a=&a;c o u t s e t w(5)d e c a s e t w (5)o c t r a s e t w(5)h e x*p a e n d 1;)【解 答】1 2 3 1 7 3 7 b1.5 思考题1.什么叫
12、数据类型?变量的类型定义有什么作用?【解答】数 据“类型”是对数据的抽象。类型相同的数据有相同的表示形式、存储格式以及相关的操作。定义一个变量时,计算机根据变量的类型分配存储空间,并以该类型解释存放的数据。2 .普通数据类型变量和指针类型变量的定义、存储、使用方式上有何区别?请编写一个程序验证之。【解答】验证程序:变量类型定义存储使用方式数据类型标识符数据值通过名访问即直接访问对变量内容操作指针类 型*标识符地址值通过指针变量的地址值间址访问对象#inclu deu s ing names p ace s t d;i nt mai n()int a,b,c;cou t *a,b,c=cin a
13、 b c;对普通数据类型变量赋值int *p a=&a,*p b=&b,*p c=&c;用变量地址值初始化指针变量cou t z/a,b,c=z/a z,,/,b/,,/c endl;名访问,输出a,b,c的值cou t Cp a,p b,p c=p a ,p b ,p cendl;输出指针变量的地址值间址访问,输出p a,p b,p c指向的变量的赋值cou t z*p a,*p b,*p c=*p a ,”*p b ,*p c endl;3.什么叫数据对象的引用?对象的引用和对象的指针有什么区别?请用一个验证程序说明之。【解答】引用是为数据对象定义别名。引用与指针有以下几点区别:(1)引用
14、名不是内存变量,而指针变量要开辟内存空间。(2)引用名需要在变量定义与变量名绑定,并且不能重定义:指针变量可以在程序中赋给不同的地址值,改变指向。(3)程序中用变量名和引用名访问对象的形式和效果样;指针变量通过间址访问对象。验证程序:#inclu deu s ing names p ace s t d;int main()int a;cou t a=;cin a;int ra=a;int *p a=&a;cou t a 的值:/aendl;cou t *a 的地址:*&a endl;cou t *ra 的值:/zraendl;cou t ra 的地址:”&ra endl;cou t Cp a所
15、指向的变量的值:”*p aendl;cou t*p a 的地址:”p aendl;4.数据对象在C+中有什么不同的访问方式?请编写一个程序验证之。【解答】数据对象在C+中的访问方式有:验证程序:#inclu deu s ing names p ace s t d;int main()(int a;cou t Xa=;cin a;a=a+5;cou t&a endl;cou t *(&a)endl;int *p a=&a;cou t*p aendl;i nt&ra=a;cou t ra a&a x(2)(a+b)!=x(3)a I|(b+x)(4)a=(b*x)(5)a-b x(6)(a/x=b
16、)7.阅读以下程序,分析下面语句序列中每一个字符“*”和 的 意 义,写出输出结果。#inclu de u s ing names p ace s t d;int main()int a=1 0,b=2 0;int *p =&a,*q =&b;*p =*p *q;int&ra=a;ra=a;int *&rt =q;*rt =3 0;cou t a=a X nb=b n*p=*p ”n*q=*q X nra=ra n*rt=I;I,【解答】字符和“&”的意义见程序中添加的注释。#inclu de u s ing names p ace s t d;int mainO i n t a=1 0,b=
17、2 0;i n t *p =&a,*q二&b;/是指针类型说明符,“&”是取址运算符*p=*p *q;第1、2、4个 是 间 址 访 问 符:,第3个 算 术 乘 运 算 符i n t&r a=a;/“&”是引用说明符r a=a;i n t *&r t=q;/是指针类型说明符,是引用说明符*r t =3 0;/是间址访问符输出语句中的是间址访问符co u t a=an b=bn*p=*p X n*q=*q/,n r a=/ra,/n*r t=z,*r t en dl;程序输出结果为:a=2 0 0b=3 0*p=2 0 0*q=3 0r a=2 0 0*r t=3 01 .6 编程题L输入一个
18、三位整数,将它反向输出。【解答】4 i n cl u de u s i n g n am es p ace s t d;i n t m ai n O i n t x,i,j,k;co u t z/p l eas e i n p u t x:;ci n x;i 二 x/1 0 0;j =x/1 0%1 0;k =x%1 0;co u t k j i en dl;)2.输入平面上某点横坐标x和纵坐标y,若该点在由图3.1 表示的方块区域内,则输出1;否则,输出 O o图 1.1 1 正方形【解答】#i n cl u de u s i n g n am es p ace s t d;i n t m
19、ai n()do u bl e x,y,b;co u t y;b=(-2=x )&(x=2 )&(-2=y )&(y=2 );co u t b en dl;)3.输入三个整数,求出其中最小数(要求使用条件表达式)。【解答】#i n cl u de u s i n g n am es p ace s t d;i n t m ai n()i n t a,b,c,t em p,m i n;co u t ”p l eas e i n p u t a,b,c:”;ci n a b c;t em p =(ab)?a:b;m i n =(t em p c)?t em p:c;co u t “m i r F
20、m i n en dl;习 题 2 及其解答2.1选择题1.已 知i n t i=0,x=l,y=0 ;在下列选项使i的值变成1的语句是(c)。(a)i f(x&y )i+;(c)i f(x|y );(b)i f(x=y )i+;(d)i f(!x )i+;1 x 0(a)y =1 ;i f(x =0 )i f(x =0 )y =0 ;el s e y =-1;(c)i f(x =0 )i f(x 0 )y =1 ;el s e y =0;(d)y =-1 ;i f(x =0 )i f(x 0 )y =-1 ;el s e y =1el s e y =1 ;3,假设i=2,执行下列语句后i的值
21、为(b)os w i t ch(i )cas e 1 :i +;cas e 2 :i ;cas e 3 :+i ;br eak ;cas e 4 :-i ;defau l t :i +;)(a)1(b)2 (c)3(d)44 .已知i n t i=0,x=0;下面w h i l e语句执行时循环次数为(d)。w h i l e(!x&i 3 )x+;i+;(a)4 (b)35 .已知i n t i=3;下面do w h i l e语句do i ;co u t i en dl;w h i l e(a)1 (b)26 .下面fo r语句执行时循环次数为(i n t i;fo r (i=0,j=5;
22、i=j;)co u t i j en dl;i+;j ;)(a)0 (b)57.以下死循环的程序段是(b)o(a)i n t x;fo r(i n t x=0 ;x=0 );;);2.2阅读下列程序,写出执行结果1.#i n cl u deu s i n g n am es p ace s t d;i n t m ai n O i n t a,b,c,d,x;a=c=0;b=1;d=2 0;i f(a)d=d-1 0;el s e i f(!b)i f(1 c)x =1 5;el s e x =2 5;co u t d en dl;【解答】2 02.#i n cl u deu s i n g
23、n am es p ace s t d;i n t m ai n()i n t a=0,b=1;s w i t ch(a)cas e 0:s w i t ch(b)cas e 0 :co u t,/a=,z a/b=b en dl ;br eak;cas e 1 :co u t,a=*a,/b=z,b en dl;br eak;)cas e 1:a+;b+;co u t X a=b=,/b en dl ;【解答】a=0 b=1a=1 b=2#i n cl u deu s i n g n am es p ace s t d;i n t m ai n()i n t i =1;w h i l e(i
24、=1 0 )i f(+i%3 !=1 )co n t i n u e;el s e co u t i en dl;【解答】471 0LS i n cl u de u s i n g n am es p ace s t d;i n t m ai n O i n t i =0 ,j =5;do i+;J-;i f(i 3 )br eak;w h i l e(j 0 );co u t i=i t j=j en dl;【解答】i=4 j=1#i n cl u deu s i n g n am es p ace s t d;i n t m ai n()i n t i,j ;fo r(i=l,j=5;i
25、j;i+)j ;co u t i,tf j en dl;【解答】3 3#i n cl u deu s i n g n am es p ace s t d;i n t m ai n()i n t i,s =0;fo r(i=0;i 5;i+)s w i t ch(i )cas e 0:s +=icas e 1:s +=icas e 2:s +=idefau l t:s 十=2br eak;br eak;br eak;)co u t z/s=z,s en dl;)【解答】s=77.#i n cl u deu s i n g n am es p ace s t d;i n t m ai n()i n
26、 t i,j,x =0;fo r(i=0;i=3;i+)x+;fo r(j=0;j=3;j+)i f(j%2 )co n t i n u e;x+;)x+;co u t x=x =90,B-(90,80 ,C-(8 0,7 0 ,D-(7 0,6 0 ,E-6 0#i n c l u d e u s i n g n a m e s p a c e s t d;i n t m a i n()c h a r g d;c o u t=,A*&g d=a&g d=,e*)c o u t I n v a l i d g r a d e!P l e a s e r e t r y:;c i n g d;i
27、f(gd=A I gd=,a*)cout,znScored 90T00!n”;else if(gd二 二 B|gd二 二 b)cout?znScored 80-89!n,;else if(gd二 二 C|gd=c)cout=90,B-(90,80,C-(80,70,D-(70,60,E-60#includeusing namespace std;int main()char gd;cout=A&gd=a&gd=e)cout 1 t r u e循环体f a l s程序中常用于根据条件执行操作而不需关心循环次数的情况。先判断形式循环,条件不成立时不进入循环体。1while语句的执行流程d o-w
28、h i l e语句d o循环体w h i l e (表达式);循环条件:表达式值为非0(真)循环结束:条件:表达式值为0(假)程序中常用于根据条件执行操作而不需关心循环次数.后判断形式循环,至少执行1次循环体。一般情况,w h i l e语 句和d ow h i l e语句可以互换使用。循环体|f a l s ed o _ w h i 1 e语句执行流程f o r语句f o r (表达式1 ;表达式2 ;表达式3 )循环体;(1)表达式1称为初始化表达式,不是循环体执行部分。(2)表达式3称为后置表达式,作为循环体的最后一个执行表达式。(3)循环条件:表达式2值为非0 (真)循环结束条件:表达
29、式2值为0(假)1f o r语句称为步长循环语句,通常用于确定循环次数的情况。由于语句的3个表达式均可以缺省,也可以用于条件循环,即循环次数不确定的情况。表达式】Y1 t r u ef a l s循环体1表达式S11f o r语句的执行流程3.根据一个实际问题,用不同的循环语句编程,分析其优缺点。【解答】略。4.用i f语句和got。语句组织循环,改写思考题的第3小题编写的程序。分析在什么情况下可以适当使用goto语句。【解答】在不破坏程序基本流程控制的情况可以适当使用goto语句实现从语句结构内部向外的必要跳转,即按特定条件结束结构语句块的执行。程序略。5.有以卜程序#includeusin
30、g namespace std;i n t m a i n O c h a r c;c i n c;i f (c=y|c=,Y*)i n t a=l;e l s ei n t a=O;c o u t z,a=/a e n d l ;编译错误为:e r r o r C2 0 6 5:*a:u n d e c l a r e d i d e n t i f i e r,指示变量a没有定义。请分析原因,并做出修改。【解答】变量a的定义不应该放在i f-e l s e语句体中。说明语句和执行语句的执行时机不同。变量说明要求在编译时定义存储空间,而i f-e l s e是执行语句,程序运行后才执行。正确
31、的程序是:#i n c l ud e us i n g n a m e s p a c e s t d;i n t m a i n O c h a r c;i n t a;c i n c;i f (c=-y|c二 二 Y,)a=l;e l s ea=0;c o ut a=a e n d l;6.有以下程序,希望判断两个输入的整数是否相等。程序通过编译,但不能达到预期结果。请分析程序能够通过C+编译而不能得到期望结果的原因。#i n c l ud e us i n g n a m e s p a c e s t d;i n t m a i n O i n t a,b;c o ut y za:c
32、i n a;c o ut*b:;c i n b;i f(a=b )c o ut a 等于 b e n d l;e l s ec o ut a 不等于 b e n d l ;程序运行后,输入a的值为4,b的值为9,显示结果如下:a:4b:99等于9【解答】在i f语句的判断表达式(a=b)中,赋值号“二”应 该 是 逻 辑 等。从语法上,C+的i f语句把a二b这个赋值表达式视为逻辑表达式,没有编译错误。a=b的值决定于b。若b的输入值不等于0,i f作为逻辑真(t r ue),否则作为逻辑假(f a l s e)。所以,题目中输入b的值虽然不等于a,但表达式a二b为逻辑t r ue,执行了 i
33、 f语句的第1个分支。2.4编程题1 .输入某学生成绩,若成绩在85分以上输出“ve r y g o o d ,若成绩在6 0分到8 5分之间输出“g o o d”,若成绩低于60分输出“n o g o o d”。【解答】#i n c l ud e us i n g n a m e s p a c e s t d;i n t m a i n()d o ub l e s c o r e;c o ut ”p l e a s e i n p ut s c o r e:*;c i n s c o r e;i f (s c o r e=85 )c o ut =60 )c o ut Go o d!”;e
34、l s e c o ut No g o o d!”;)2 .输入三个整数,按从小到大的顺序输出它们的值。【解答】#i n c l ud e us i n g n a m e s p a c e s t d;i n t m a i n()i n t a,b,c,t;c o ut a,b,c二 ;c i n a b c;i f(a b)t=a;a=b;b=t;i f(a c)t=a;a=c;c=t;i f(b c)t=b;b=c;c=t;c o ut a t b t c e n d l;)3 .输入三角形的三条边,判别它们能否形成三角形,若能,则判断是等边、等腰、还是般二角形。【解答】#i n c
35、 l ud e us i n g n a m e s p a c e s t d;i n t m a i n()d o ub l e a,b,c ;c o ut ”a,b,c =“;c i n a b c ;i f (a+b c&b+c a&c+a b )i f (a =b&b =c )c o ut 等边三角形!“e n d l;e l s e i f (a =b|a -c I I b -c )c o ut 等腰三角形!e n d l;e l s e c o ut ”一般三角形!e n d l;)e l s ec o ut ”不能形成三角形!e n d l ;)4.输入百分制成绩,并把它转换成
36、五级分制,转换公式为:A(优秀)90-100B(良好)80-89grade(级别)=C(中等)70-79D(合格)60-69E(不合格)0-59【解答】#i n c l ud e us i n g n a m e s p a c e s t d;i n t m a i n()d o ub l e s c o r e;c h a r g r a d e;c o ut =0&s c o r e =1 0 0 s w i t c h (i n t(s c o r e )/1 0 )c a s e 1 0:c a s e 9:c a s e 8:c a s e 7:c a s e 6:c a s e
37、5:c a s e 4:c a s e 3case 2:case 1:case 0:grade=e;break;)else cout“数据输入错误!endl;goto end;)cout grade endl;e n d:;分号不能省)5.编程序模拟剪刀、石头和纸游戏。游戏规则为:剪刀剪纸,石头砸剪刀,纸包石头。玩游戏者从键盘上输入s(表示剪刀)或r(表示石头)或p(表示纸),要求两个游戏者交替输入,计算机给出输赢的信息。【解答】#includeusing namespace std;int main()char first,second;cout ”First input(s,r or p)
38、cin first;cout ”Second input(s,r or p):cin second;switch(first)case s:switch(second)casecases:cout Scissor ties scissor.endl;goto end;r:cout Scissor is crushed by rock.endl;goto end;case pcout Scissor cuts paper.end;goto end;default:cout second input error!z/endl;goto end;)case r:switch(second)case
39、s:cout ”Rock 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;)cas e p*:s w it ch(s eco n d)cas eco u tcas er :co u tcas ep :co u t“P ap er“P ap er“P ap eris cu t by s cis s o r.”
40、en dl;g o t o en d;w r ap s t he r o ck.en dl;g o t o en d;t ies p ap er.en dl;g o t o en d;def au lt :)def au lt :co u t co u tFir s t“s eco n d in p u t e r r o r!en dl;g o t o en d;in p u t er r o r!en dl;g o t o en d;e n d:;)6.输入一个整数,输出该整数的所有素数因子。例如,输入1 2 0,输出为2、2、2、3和5。【解答】#in clu deu s in g n
41、ames p ace s t d;in t main()in t m,i=2;co u t ”p leas e in p u t m:;cin m;w hile(i=m)if(m%i=0 )co u t i ,;m=m/i;)els e i+;)7.使用迭代公式乙 =(xn+a/xn)/2(n=0,1,2,=/2)编程序求某正整数a的平方根。【解答】#in clu de#in clu deu s in g n ames p ace s t d;in t main()co n s t do u ble ep s =le-8;do u ble a,xO,x;co u t ”p leas e in
42、p u t a:;cin a;xO =a/2;x=(xO +a/xO )/2;w hile(f abs(x-x0 )ep s )xO =x;x=(xO +a/xO )/2;co u t x en dl;)8.已知 X=0,1 0 ,2 0,,1 8 0 ,求 s in x,co s x和 t an x 的值。【解答】#in clu de#in clu de#in clu deu s in g n ames p ace s t d;in t main()co n s t do u ble p i=3.1 4 1 5 9 2 6 5;in t i;do u ble x,y l,y 2,y 3;co
43、 u t s et w(2)x s et w(1 5)s in(x)”s et w(1 5)co s(x)s et w(1 5)“t g(x)en dl;f o r(i=0;i=1 8;i+)x=i*1 0*p i/1 8 0;y l=s in(x);y 2 =co s(x);y 3 =y l/y 2;co u t s et w(2)i s et w(1 5)y l s et w(1 5)y 2 s et w(1 5)y 3 en dl;)9.在1 0 0到2 0 0中找出同时满足用3除余2,用5除余3和用7除余2的所有整数。【解答】#in clu deu s in g n ames p ac
44、e s t d;in t main()in t i;f o r(i=1 0 0;i=2 0 0;i+)if (i%3 =2)&(i%5 =3 )&(i%7 =2 )co u t i en dl;10.求 100到999中的水仙花数。所谓水仙花数是指一个三位数,它的每位数字的立方之和等于该数。例如,因为153=1+5 3+3 3,所以153为水仙花数。【解答】#includeusing namespace std;int mainO 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*
45、b*b+c*c*c)cout i endl;)11.求 1000之内的所有完数。所谓完数是指-个数恰好等于它的所有因子之和。例如,因为6=1+2+3,所以6 为完数。【解答】#includeusing namespace std;int main()int i,j,s;for(i=l;i=1000;i+)s=0;for(j=l;ji;j+)if(i%j=0)s=s+j;if(i=s)cout i endl;)12.编程序显示由符号组成的三角形图案。例如,程序运行后,屏幕显示:How many lines?用户输入:5屏幕显示:What character?用户输入:*则输出如下图案。*【解答】
46、#in clu deu s in g n ames p ace s t d;in t main()in t i,j,k,n;char ch;co u t z/Ho w man y 1 in es?n;cin n;co u t,W hat char act er?r T;cin ch;f o r(i=l;i=n;i+)f o r(k=l;k=n-i;k+)co u t ;f o r (j=l;j=2*i-l;j+)co u t ch;co u t en dl;)1 3.已知X Y Z+Y Z Z=5 3 2,其中X,Y和Z为数字,编一程序求出X,Y和Z的值。【解答】#in clu deu s i
47、n g n ames p ace s t d;in t main O in t x,y,z,i;f o r (x=l;x=9;x+)f o r(y=l;y=9;y+)f o r (z=0;z=9;z+)i=1 0 0*x+1 0*y +z +1 0 0*y +1 0*z +z;if (i=5 3 2 )co u t x=t y=y =z en dl;)习题3及其解答3.1选择题1 .以下正确的函数原型为(d)。(a)f l(in t x;in t y );(b)v o id f l(x,y );(c)v o id f l(in t x,y );(d)v o id f l(in t,in t )
48、;2 .有函数原型v o id f u n 2(in t );下面选项中,不正确的调用是(c)。(a)in t a=2 1;f u n 2(a);(c)in t b=1 0 0;f u n 2 (&b);(b)in t a=1 5;f u n 2(a*3 );(d)f u n 2(2 5 6 );3.有函数原型v o id f u n 3(in t *);下面选项中,正确的调用是(c)。(a)do u ble x=2.1 7;f u n 3 (&x);(b)in t a=1 5 ;f u n 3(a*3.1 4 );(c)in t b=1 0 0;f u n 3(&b);(d)f u n 3(
49、2 5 6 );4 .有函数原型v o id f u n 4(in t&);下面选项中,正确的调用是(c)。(a)in t a=2.1 7;f u n 4(&a);(b)in t a=1 5;f u n 4(a*3.1 4 );(c)in t b=1 0 0;f u n 4(b);(d)f u n 4(2 5 6 );5 .有声明v o id f u n 5(in t *&);in t a,*p =&a;下面选项中,正确的调用是(b)o(a)f u n 5(&a);(b)f u n 5(p );(c)f u n 5(*a);(d)f u n 5(*p )6 .有声明in t f u n 6(i
50、n t ),(*p f)(in t)=f u n 6;下面选项中,正确的调用是(C)o(a)in t a=1 5;in t n=f u n 6(&a);(c)co u t(*p f)(2 5 6 );in t a=1 5;co u t (&p f)(a);co u t *p f(2 5 6 );(b)(d)7 .在V C中,若定义一个函数的返网类型为v o id,以下叙述正确的是(c)o(a)函数返回值需要强类型转换(c)函数本身没有返回值8 .函数参数的默认值不允许为(c)0(a)全局常量(b)直接常量9 .使用重载函数编程序的目的是(a)。(a)使用相同的函数名调用功能相似的函数(c)提高