c++程序设计课后练习答案.docx
《c++程序设计课后练习答案.docx》由会员分享,可在线阅读,更多相关《c++程序设计课后练习答案.docx(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章一、选择题1. B; (typedef , typeid , typename,都为保留字);2. C;(标识符,应当以字母或,下划线开头);3. C;(标识符中有的特殊符号,只能有下划线);二、填空题1. cin, cout2. new, delete3. int a (55);三、改错题1.没有定义变量num;*p=65 错2 . const int *p=&x;是声明指向常量的指针,*p不能当作“左值”, 误。3 .p为常量指针,不能吧p作为“左值”,p=&y,错误。U!、编程题L分别用字符和ASCII码形式输出整数值65和66.ftinclude using namespace
2、std;void main()(char a=A , b=B;int ascii_l=53, ascii_2=54;/ASCH 码中的,5 和 6cout字符输出: (int)a, (int)b endl;coutz/ASCII 码输出:(char) ascii_2 (char) ascii_l cout (char)ascii_l(char)ascii_l endl;cout str,z的长度:strlen(str) endl;cout str endl ;倒序前revers (str);/cout str endl ;倒序后6.用函数模板实现3个数值中按最小值到最大值排序的程序。ftinc
3、lude using namespace std; templatevoid sort (T a, T b, T c) (T array3, temp; int i, j;array0= a;array1= b;array2 = c;for (i=0;i3;i+) (for (j=0;jarrayj+1)( temp = arrayj;arrayj = arrayj+1; arrayj+1 = temp;)cout array0 array1 array2 endl;)void main ()(sort (5, 1, 9);7 .利用函数模板设计一个求数组元素中和的函数,并检验之。ftincl
4、ude using namespace std;template T sum (T a, int n)int i;T s=0;for(i=0;i n;i+) s = s + ai;return s;void main ()(int a5 = l,2, 3,4, 5;int s = sum (a, 5);cout s endl;8 .重载上题中的函数模板,使他能够进行两个数组的求和。ftinclude using namespace std; templateT sum (T a, int n) int i;T s=0;for(i=0;i n;i+) s = s + ai;return s;)t
5、emplate 重载上面的模板T sum (T a, int n, T b, int m) return sum (a, n) +sum (b, m); void main () (int a5 = l,2, 3, 4, 5;int b10 = l,2, 3,4, 5, 6, 7,8,9,10);int si = sum (a, 5); int s2 二 sum(b, 10); int s3= sum (a, 5, b, 10); cout sl endl;cout s2 endl;cout s3 endl;第四章一、填空题1 .数据成员、成员函数;2 .类、析构函数不允许有参数和返回类型(可
6、是显示地说明参数为void)、一 个类有1个析构函数;3 . fun:fun(fun &)、fun:fun (const fun &);二、单项选择题l.Co 2. Co 3 ,没又答案,应当是 A:A (void)、或 A:A()。4. Bo 5. Co 6. Co 7. D三、改错题1. return m;错误,没又定义变量m;2. A. init (24, 56);错误,没有声明对象A, init函数参数不对应;Setx函数是int型但是没有返回值四、完成程序题1. ftinclude using namespace std; class baseprivate :/私有数据成员 int
7、 a, b;public :void init (int x, int y)/公有函数 a = x;b = y;void print ()(cout2 * az/ - /z b/z = z, (2*a-b) endl;);void main ()base a;a. init (68, 55);a. print ();2.ftincludeusing namespace std;class Point private : int m, n; public :Point(int, int);整型变量,为参数的构造函数Point (Point&) ;/复制构造函数的原型 print () coutz
8、/m = mzz, n = n endl; );Point:Point(int a, int b) (m = a;n = b;)Point: :Point (Point & t) 复制构造函数的定义 (m = t. m;n = t. n;void main ()Point a(10, 89);Point b (a);a. print ();b. print ();五、程序分析题1 .没有结果,因为没有main函数 假如加main函数void main()(base b (10, 20);)输出:初始化.10, 20Destory.10,202.输出: 55六、编程题1 .设计一个点类Point
9、,再设计一个矩形类,矩形类运用Point类的两个坐标点 作为矩形的对角顶点。并可以输出4个坐标值和面积。运用测试程序验证程序。ftincludeusing namespace std;class Point 点类private:int x, y;/私有成员变量,坐标public :Point ()无参数的构造方法,对xy初始化 x = 0;y = 0;)Point (int a, int b) 又参数的构造方法,对xy赋 值(x = a;y = b;)void setXY(int a, int b)设置坐标的函数 (x = a;y = b;)int getX()得到x的方法return x;)
10、int getY()得到有的函数(return y;);class Rectangle矩形类 (private:Point pointl, point2, point3, point4;私有成员 变量,4个点的对象 public :Rectangle();类Point的无参构造函数已经对每个 对象做初始化啦,这里不用对每个点多初始化了Rectangle (Point one, Point two) 用 点对象做初始 化的,构造函数,1和4为对角顶点(pointl = one;point4 = two; init ();)Rectangle(int xl, int yl, int x2, int
11、 y2)用两 对坐标做初始化,构造函数,1和4为对角顶点pointl. setXY(xl, yl);point4. setXY (x2, y2);init ();)void init ()给另外两个点做初始化的函数 (pointl. getY()point4. getY ()pointl. getY()point2. getY ()point3. getY ()point4. getY (););)point2. setXY(point4. getX(),point3. setXY (pointl. getX(),)void printPoint()打印四个点的函数cout,zA: ( poi
12、ntl. getX() endl;coutz,B: ( point2. getX() , endl;cout/zC: ( point3. getX() , endl;coutz/D: ( 0)return area; elsereturn -area;;void main ()|Point pl (-15, 56), p2 (89, -10);定义两个点Rectangle rl (pl, p2);用两个点做参数,声明一个矩形对象rlRectangle r2(l, 5, 5, 1);用两队左边,声明一个矩形对象r2 cout矩形rl的4个定点坐标: endl;rl. printPoint ();
13、cout(矩形 rl 的面积:rl. getAreaO endl; coutn矩形r2的4个定点坐标: endl;r2. printPoint ();cout矩形 r2 的面积:/z r2. getAreaO endl;2 .运用内联函数设计一个类,用来表示直角坐标系中的随意一条直线并输出它 的属性。.ftinclude ftinclude class Line (private:int xl, yl, x2, y2;public :Line ();Line (int =0, int =0, int =0, int=0 );void printPoint (); double getLengt
14、h(););inline Line: :Line(int a, int b, int c, int d) (xl = a;yl = b;x2 = c; y2 = d;)inline void Line:printPoint() coutA: xl , yl endl;coutz/B: z/ x2 zz, y2 endl;inline double Line:getLength() (double length;length = sqrt (x2-xl)*(x2-xl) + (y2-yl)*(y2-yl); return 1ength; void main () (Line line(10, 8
15、0,-10, 12);line.printPoint ();cout line. getLengthO endl;第五章一、填空题L常成员函数;2 .常量成员函数;3 . const二、单项选择题1. B; 2. A; 3. C; 4. A;三、改错题1. static int getn() return number;错误静态成员函数,只允许访问静态成员变量,number不是静态成员变量2. void main ()(test *two2 = new test (4, 5), new test (6 ,8);for( i=0; i2; i+) delete twoi;四、完成程序题ttinc
16、lude using namespace std; class testint x;public :test (int a)(x = a;)int GetX ()(return x;);void main ()(int i;填空一,声明变量itest *p, a2 3 = 1, 2, 3, 4, 5, 6;for ( p=&a0 0, i=0; i=6; i+, p+)填空 2,初始化 p, i (if(p-a0)%3 = 0)cout endl;coutGetX() ;五、编程题1 .声明复数的类,complex,运用友元函数add实现复数加法。ftinclude ftinclude usi
17、ng namespace std;class Complex(private:double real, image;public :Complex () Complex(double a,double b) (real = a;image = b;2 .编写一个int型变量支配100个整形空间的程序。ftinclude using namespace std;void main () (int *p;p = new int 100;for (int i = 0;i 100;i+) *(p+i)=i;for(i = 0;i 100;i+)(cout*(p+i), delete p;3 .编写完整
18、的程序,它读入15个float值,用指针把它们存放在一个存储快里,然后输出这些值和以及最小值。ftinclude ftinclude /用于数组排列的头文件 using namespace std;void main ()(float *p;p = new float15;cout输入 15 个 float 类型的值: endl;for(int i = 0;i *(p+i);)for (i = 0;i 15;i+)( cout*(p+i), ;sort (p, p+15);coutn 最小的是:*(p) endl;delete p;void setRl (double a, double b)
19、 real = a; image = b;)double getReal() return real;)double getlmage() return image;)void print ()(if (image0)cout复数:real + imageendl;if (image0)cout复数:real - image i endl; _friend Complex add (Complex , Complex); 声明友元 函数);Complex add (Complex cl, Complex c2)定义友元函数 Complex c3;c3. real = cl. real + c2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 程序设计 课后 练习 答案
限制150内