C++程序设计课后习题参考答案.pdf
《C++程序设计课后习题参考答案.pdf》由会员分享,可在线阅读,更多相关《C++程序设计课后习题参考答案.pdf(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章一、选择题1.B;(type d e f ,type i d ,type name,都为保留字);2.C;(标识符,应该以字母或,下划线开头);3.C;(标识符中有的特殊符号,只能有下划线);二、填空题1.ci n,cout 2.ne w,d e le te 3.i nt a(5 5);三、改错题L没有定义变量num;2.*p不能当作“左值”。3.p 为常量指针,不能吧p 作 为“左值”,p=&y,错误。四、编程题1 .分别用字符和A S C I I 码形式输出整数值6 5 和 6 6.i nclud e usi ng name space std;voi d mai n 0(ch ar
2、 a=,A ,b=,B,;i nt asci i=5 3,asci i _ 2=5 4;A S C H 码 中 的,5 和 6cout”字符输出:z,(i nt)aw.*(i nt)b e nd l;coutz/A S C I I 码输H l:z/(ch ar)asci i _ 2(ch ar)asci i _ lz/,cout (ch ar)asci i l(ch ar)asci i 1 e nd l;)2 .编写一个i nt型变量分配1 0 0 个整形空间的程序。tti nclud e usi ng name space std;voi d mai nO(i nt*p;p=ne w i n
3、t 1 0 0 ;f or(i nt i =0;i 1 0 0;i+)(*(p+i)=i;)f or(i =0;i 1 0 0;i+)(cout*(p+i)z,)d e le te p;)3 .编写完整的程序,它读入1 5 个 f loat值,用指针把它们存放在一个存储快里,然后输出这些值和以及最小值。tti nclud e tti nclud e 用于数组排列的头文件usi ng name space std;voi d mai n()f loat*p;p=ne w f loat 1 5 ;cout 输入 1 5 个 f loat 类型的值:e nd l;f or(i nt i =0;i 1
4、 5 ;i+)(ci n*(p+i);)f or(i =0;i 1 5;i+)(cout*(p+i)z,,z,;)sort(p,p+1 5);cout n 最小的是:6*(p)e nd l;d e le te p;)4.声明如下数组:i nt a =1,2,3,4,5,6,7,8);先查找4的位置,讲数组a 复制给数组b,然后将数组a 的内容反转,再查找4的位置,最后分别输出数组a 和 b 的内容。i nclud e i nclud e tti nclud e f uncti onalusi ng name space std;voi d mai n()(i nt a =l,2,3,4,5,6
5、,7,8,b 8 ;cout“数组 a 中 4 的位置是:f i nd (a,a+8,4)6 nd 1;查找 4 的位置copy(a,a+8,b);将数组a 复制给数组bre ve rse _ copy(b,b+8,a);把数组b,逆向复制给a,完成a 的逆转cout 数组 a 反转后,4 的位置是:f i nd(a,a+8,4)e nd l;在查找 4的位置cout 数字a 的内容:”的 e nd l;f or(i nt i=0;i 8;i+)cout ,;cout n 数组 b 中的内容:e nd l;f or(i=0;i 8;i+)cout ,;第二章一、单项选择1.D;2.D;三、编程
6、题1 .使用多种方法编写将两个字符串连接在一起的程序。tti nclud e tti nclud e usi ng name space std;voi d mai nO使用stri ng 类定义字符串,完成字符串连接stri ng str 1 (C+”),str2(程序设计);stri ng str3;str3 =strl+str2;连接方式 1cout str3 e nd l;使用ch ar数组定义字符串,完成连接ch ar cl =c+,c2 =prog ram;ch ar c3 2 0 ;i nt i=0,k=0;f or(i=0;i 2 0;i+)初始化 c3c3 i =0f;i=0
7、;w h i le (cl i !=0 )(c3 k=cl i ;i+;k+;)i=0;w h i le(c2 i !=0 )(c3 k=c2 i ;i+;k+;)cout c3 e nd l;2.已知一个stri ng 的对象str的内容为 We are h e re!”,使用多种方法 输 出“h”。i nclud e#i nclud e#i nclud e i nclud ef uncti onal alg ori th m stri ng usi ng name space std;voi d mai n()(stri ng strl(,zWe are h e re!);cout str
8、l 7 e nd l;通过数组stri ng str2=strl.substr(7,1);通过得到子字符串cout str2 e nd l;ch ar*p=f i nd (strl.be g i n(),strl.e nd(),J h );通过 f i nd 函数i f (p)cout*p e nd l;第三章一、填空题L函数原型声明;2.i nli ne 3.对象、对象指针、引 用4.函数f unc返回引用5.i nt*f un(ch ar,i nt&);二、单项选择题1.A;2.C;3.C;三、改错题l.y=x*x-T;错误,T是类型,不是变量,不能参加运算;2.T max(T x,y)y
9、 没有类型3.voi d ch ang e (stri ng&s)中函数ch ang e的参数定义成了常量,只能使用参数,而无权修改他。所以应去掉。四、编程题1.编写一个求方程ax2 +bx+c=0的根的程序,用3个函数分别求当b2-4 ac大于零、等于零、和小于零时的方程的根。要求从主函数输入a,b,c的值并输出结果。t t i n c l u d e#i n c l u d e v o i d e q u a t i o n _ l (i n t a,i n t b,i n t c)d o u b l e x l,x 2,t e m p;t e m p =b*b -4*a *c;x l =
10、(-b +s q r t(t e m p)/x 2=(-b -s q r t(t e m p)/(2*a *1.0);(2*a *1.0);c o u t 两个不相等的实根“e n d l;c o u t z/x l =x l,z,x 2=x 2 e n d l;v o i d e q u a t i o n 2(i n t a,i n t b,i n t c)(d o u b l e x l,x 2,t e m p;t e m p =b*b -4*a *c;x l =(-b +s q r t (t e m p)/(2*a *1.0);x 2=x l;c o u t 两个相等的实根 e n d
11、 l;c o u t z,x l =x 2=x 2 e n d l;)v o i d e q u a t i o n 3(i n t a,i n t b,i n t c)(d o u b l e t e m p,r e a l l,r e a l 2,i m a g e l,i m a g e 2;t e m p =-(b*b -4*a *c);r e a l l =-b /(2*a *1.0);r e a l 2=r e a l l;i m a g e l =s q r t(t e m p);i m a g e 2=-i m a g e l;c o u t 两 个 虚 根e n d l;c
12、o u t z,x l =z/r e a l l,z+”i m a g e l,z jz,e n d l;c o u t,zx 2=z r e a l 2/z+i m a g e 2 j e n d l;)v o i d m a i n Oi n t a,b,c;d o u b l e t e m p;c o u t 输入 a,b,c 的值”a b c;c o u t 方程为:a,zx*x+z,b x+0)e q u a t i o n 1(a,b,c);i f(t e m p =0)e q u a t i o n _ 2(a,b,c);i f(t e m p 0)e q u a t i o
13、n _ 3(a,b,c);2.定义函数u p(c h),如字符变量c h 是小写字母就转换成大写字母并通过u p 返回,否则字符c h 不改变。要求在短小而完全的程序中显示这个程序是怎样被调用的。i n c l u d e u s i n g n a m e s p a c e s t d;c h a r u p (c h a r c)(i f(c =97&c =123)r e t u r n (c -32);e l s er e t u r n c;)v o i d m a i n()(i n t i;c h a r c 15 =A,v,e,t,E,T,对,4,Y,e,i,9,7;f o r
14、(i =0;i 15;i+)c o u t u p(c i )z/,c o u t e n d l;)3.编写主程序条用带实数r和整数n两个参数的函数并输出r的 n次塞。#i n c l u d e t t i n c l u d e d o u b l e p o w e r(d o u b l e a,i n t b)(i n t i;d o u b l e r e s u l t =1.0;f o r(i=0;i b;i+)r e s u l t =r e s u l t *a;r e t u r n r e s u l t;)v o i d m a i n Od o u b l e r
15、;i n t n;c o u t r =;c i n r;c o u t,zn =;c i n n;c o u t r”的 n 次幕是:p o w e r (r,n)e n d l;)4.编写有字符型参数C和整形参数N 的函数,让他们显示出由字符C组成的三角形。其方式为第1 行 有 1 个字符C,第 2 行有2 个字符C ,等等。#i n c l u d e u s i n g n a m e s p a c e s t d;v o i d p r i n t _ t r i a n g l e(c h a r c,i n t n)(i n t i,j;f o r(i=0;i n;i+)(f
16、o r(j=0;j=i;j+)(c o u t c;)c o u t e n d l;)v o i d m a i n()(p r i n t _ t r i a n g l e(,a,10);5.编写一个i e q i u 字符串长度的函数,s t r l e n O,再 用 s t r l e n O函数编写一个函数r e v e r s(s)的倒序递归程序,使字符串s 逆序。i n c l u d e t t 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 s t r l e n(c h a r *s t r)(i n t l
17、e n =0;w h i l e(s t r l e n !=0)(l e n+;)r e t u r n l e n;)v o i d r e v e r s(c h a r *b)(c h a r c;i n t j,l e n;l e n=s t r l e n(b);j=l e n/2-l;w h i l e(j =0)(c=*(b+j);*(b+j)=*(b+l e n-j-1);*(b+l e n-j-l)=c;J;)b l e n =Of;)v o i d m a i n()(c h a r s t r 二“1234567890;c o u t s t r z,-的长度:z,s
18、t r l e n(s t r)e n d l;c o u t s t r e n d l;倒序前r e v e r s(s t r);/c o u t s t r e n d l;倒序后)6.用函数模板实现3个数值中按最小值到最大值排序的程序。t t i n c l u d e u s i n g n a m e s p a c e s t d;t e m p l a t ev o i d s o r t (T a,T b,T c)(T a r r a y 3,t e m p;i n t i,j;a r r a y 0 =a;a r r a y 1 =b;a r r a y 2 =c;f o
19、 r(i=0;i 3;i+)(f o r(j=0;j a r r a y j+1)(t e m p =a r r a y j ;a r r a y j =a r r a y j+1;a r r a y j+1 =t e m p;)c o u t a r r a y 0 a r r a y 1 a r r a y 2 e n d l;)v o i d m a i n()s o r t (5,1,9);)7.利用函数模板设计一个求数组元素中和的函数,并检验之。t t i n c l u d e u s i n g n a m e s p a c e s t d;t e m p l a t eT s
20、 u m (T a ,i n t n)(i n t i;T s=0;f o r(i=0;i n;i+)s =s +a i ;r e t u r n s;)v o i d m a i n ()(i n t a 5 =l,2,3,4,5;i n t s =s u m(a,5);c o u t s e n d l;)8.重载上题中的函数模板,使他能够进行两个数组的求和。i n c l u d e u s i n g n a m e s p a c e s t d;t e m p l a t eT s u m (T a ,i n t n)(i n t i;T s=0;f o r(i=0;i n;i+)
21、s =s +a i ;r e t u r n s;)t e m p l a t e 重载上面的模板T s u m (T a ,i n t n,T b ,i n t m)(r e t u r n s u m(a,n)+s u m(b,m);)v o i d m a i n ()(i n t a 5 =l,2,3,4,5;i n t b 10 二 1,2,3,4,5,6,7,8,9,10;i n t s i =s u m(a,5);i n t s 2=s u m(b,10);i n t s 3=s u m (a,5,b,10);c o u t s l e n d l;c o u t s 2 e n
22、 d l;c o u t s 3 e n d l;第四章一、填空题1.数据成员、成员函数;2.类、返回类型、1;3.f u n:f u n(f u n&)、f u n:f u n (c o n s t f u n&);二、单项选择题l.C o 2.C o 3.没有答案,应该是 A:广A (v o i d 没 或 A:rA()。4.B。5.C o 6.C o 7.D三、改错题1.r e t u r n m;-错误,没又定义变量m;b a s e O(d e l e t e p p后应有一个2.A.i n i t(24,56);-错误,应该先定义A 对 象:Po i n t A;同时参数个数不同;
23、S e t x(a);无类型,也无返回值。四、完成程序题1.t t i n c l u d e u s i n g n a m e s p a c e s t d;c l a s s b a s e(p r i v a t e :私有数据成员i n t a,b;p u b l i c :v o i d i n i t(i n t x,i n t y)公有函数(a =x;b =y;)v o i d p r i n t ()(c o u t z,2*z,a -z,b =z,(2*a-b)e n d l;);v o i d m a i n()(b a s e a;a.i n i t (68,55);
24、a.p r i n t ();)2.t t i n c l u d eu s i n g n a m e s p a c e s t d;c l a s s Po i n t(p r i v a t e :i n t m,n;p u b l i c :Po i n t(i n t,i n t);整型变量,为参数的构造函数Po i n t(Po i n t&);复制构造函数的原型p r i n t ()c o u t,m =m,z,n =n e n d l;);Po i n t:Po i n t(i n t a,i n t b)(m =a;n =b;)Po i n t:Po i n t (Po
25、i n t&t)复制构造函数的定义(m =t.m;n =t.n;)v o i d m a i n O(Po i n t a(10,89);Po i n t b(a);a.p r i n t ();b.p r i n t ();)五、程序分析题L没有结果,因为没有m a i n函数如果加m a i n函数v o i d m a i n O(b a s e b(10,20);)输出:初始化.10,20D e s t o r y.10,202.输出:55六、编程题1.设计一个点类P o i n t,再设计一个矩形类,矩形类使用P o i n t类的两个坐标点作为矩形的对角顶点。并可以输出4个坐标值和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 课后 习题 参考答案
限制150内