面向对象程序设计课后答案(完整版)

合集下载

面向对象程序设计课后答案(完整版)

面向对象程序设计课后答案(完整版)

面向对象程序设计课后答案(完整版)第二章2-4#includeusing namespace std;Add(int a,int b);int main(){int x,y,sum;cout>x>>y;sum = add(x,y);cout >*p;p++;}p = p-20;for( i=0;i0) countp++;if(*p>age ;try{checkagescore(name,age);}catch( string){cout<<"exception :name is exit"<<endl;continue;}catch(int){cout<<"exception :age is not proper"<<endl;continue;}cout<<"name:"<<name<<" age :"< }return 0;}第三章3-1(1)A (2)C (3)B (4)C (5)C(6)B (7)B (8)C (9)C3-7(1)main()函数中p1.age = 30;语句是错误的。

age 是类的私有成员(2)构造函数应当给常数据成员和引用成员初始化,将构造函数改为:A(int a1,int b1):a(a1),b(b1){}或A(int a1 ):a(a1),b(a){}再将main中的A a(1,2); 改为A a(1);(3)(1)在Test 类中添加语句:void print();void Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}改为void Test::Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}main函数中Init(38,15);改为:A.Init(38,15);Print();改为:A.Print();3-8(1)Constructing AConstructing BDestructing BDestructing A(2)double a,double bpoint & pp.x3-9class box{int len1,len2,len3;public:box(int l1,int l2,int l3){len1 = l1;len2 = l2; len3 = l3;} long volumn(){return len1*len2*len3;}};3-10class Test{int m1,m2;public:void Init(int a,int b){m1 = a;m2 = b;}void Pring(){cout<<m1<<" "<<m2<<endl;}};3-11略3-12}第四章4-6(1)D (2)D (3)D (4)D (5)B(6)D4-7(1)static int count = 0;这样初始化静态成员值是不对的将其改为static int count;在类外,main函数前加int Sample::count = 0;(2)#include//#includeusing namespace std;class Ctest{private:int x; const int y1;public:const int y2;Ctest(int i1,int i2):y1(i1),y2(i2) {y1 =10;//y1 为常量不能赋值x = y1;}int readme() const;};int Ctest::readme ()const{int i;i = x;x++; //常函数内不能改变成员值return x;}int main(){Ctest c(2,8);int i = c.y2;c.y2 = i;//y2为常量,不能改值i = c.y1;//y1私有,类外不能访问return 0;}将出错语句全部注释4-8(1)题中印刷错误,将class C构造函数改为: C(){cout<<"constructor C:";}运行结果为:constructor Aconstructor Bconstructor C(2)40(3)3434-9#include#includeclass Date{int year;int month;int day;public:Date(int y,int m,int d){year=y;month=m;day=d;}void disp(){cout<<year<<" "<<month<<" "<<day<<endl;}friend int count_day(Date &d,int k);friend int l(int year);friend int h(Date &d1,Date &d2);};int count_day(Date &d,int k){static int day_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,3 1},{31,29,31,30,31,30,31,31,30,31,30,31}};// 使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年int j,i,s;if(l(d.year))j=1;//闰年,取1else j=0;//非闰年,取0if(k)//K非0时{s=d.day;for(i=1;i<d.month;i++)//d.month为输入的月份s+=day_tab[j][i-1];}else//K为0时{s=day_tab[j][d.month]-d.day;for(i=d.month+1; i<=12; i++)s+=day_tab[j][i-1];}return s;//S为相差的天数}int l(int year){if(year%4==0&&year%100!=0||year%400==0) // 是闰年return 1;else // 不是闰年return 0;}int h(Date &d1,Date &d2){int days,day1,day2,y;if(d1.year<d2.year)//第一个日期年份小于第二个日期年份{days=count_day(d1,0);for(y=d1.year+1;y<d2.year;y++)if(l(y))//闰年。

C++面向对象程序设计课后答案

C++面向对象程序设计课后答案

Char k:4; Unsigned short i:8; Unsigned long m; }; Main(0 { struct A a; a.t=’b’; printf(“%x”,a.t); } 答:输出是 2
习题3
3-1 New delete与malloc free的联系与区别是什么? 答;在程序开发中的内存的动态分配与管理是一个让开发者头痛的问 题,在C中,一般通过malloc和free来进行内存分配和回收,而在 C++中,new和delete已经完全包含malloc和free的功能,并且更为强大。 它们的区别是malloc和free是库函数而不是运算符,不在编译器控制权 限之内,而new和delete是运算符。New出来的指针式直接带类型信息, 而malloc返回是void指针。 3-2 描述内存分配以及它们的区别。 答:内存分配的“堆”和“栈”。主要区别是:(1)管理方式和碎片问题: 对于栈来说,由编译器自动管理;对于堆来说,释放工作由程序员控 制,容易产生内存碎片。(2)分配效率:栈的效率要比堆的高得多; (3):增长方式不同:栈内存是从高地址到低地址增长,而堆是相反 的;(4)空间大小的不同:一般来讲,在32位系统下,内存可以达到 4GB空间,但对于栈来讲,一般都是有一定的空间大小的。 3-3 请定义一个变量,初始化为34759,并以八进制与十六进制输出。 如果将该整数定义成无符号短整数,当以有有符号数输出时,结果是什 么? 答;程序如下: #include<iostream> using namespace std; void main() { int i=34759;
习题1
-1 面向对象程序设计与面向过程程序设计相比有什么优点? 答:优点有:(1)写程序不再是从计算机的角度考虑问题,而是站在 人类思维的角度;(2)程序的可拓展性比其他不是面向对象的好; (3)能最大限度波爱护已有程序的代码。 -2 简述C++语言程序的特点。 答:C++语言是在C语言的基础上发展而来,但它比C语言更容易学习和 掌握,它与C的最大区别是把函数放进了结构中,并引入了新的关键词 类。C++完美的体现了面向对象的各种特性。 1-3 C++与C语言的关系如何?它们的本质区别是什么? 答:C++语言是基于C语言的基础上发展起来的。它们的关系十分密切, 很多语句之间是通用的。它们的本质区别是C语言是面向过程的编程语 言,而C++是面向对象的编程语言。 -3 组件编程有什么优点? 答:组件编程的优点是它把对象技术应用于系统设计,对面向对象的程 序设计的实现过程做了进一步抽象。它强调真正的软件可重用性和高度 的互操作性。

C++面向对象程序设计教程课后习题答案

C++面向对象程序设计教程课后习题答案

tem = a[i]; a[i] = a[j]; a[j] = tem;
}
}
……
整理课件
9
*5.编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可
以是整型、单精度实型、双精度实型,用重载函数实现。
参考程序:
……
void Sort(float a[], int n)
// 对a[0]...a[n-1]进行排序
// 定义变量
for (i = 0; i < n- 1; i++)
for (j = i + 1; j < n; j++)
if (a[i] > a[j])
{
// a[i]比a[j]更大
tem = a[i]; a[i] = a[j]; a[j] = tem;
}
}
……
整理课件
11
*5.编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可
double c[] = {1.2, 3.1, 2.6, 5.8, 6.8, 9.8, 0.8, 6.2};// 定义c
int i, n = 8;
// 定义变量
Sort(a, n); cout << "a:"; for (i = 0; i < n; i++)
cout << a[i] << " "; cout << endl;
Fun(a);
// 调用Fun()
return 0;
// 返回值0, 返回操作系统
}
该程序执行后输出的结果是 。
A)1

C++面向对象程序设计习题答案

C++面向对象程序设计习题答案

《C++面向对象程序设计》习题答案(总29页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除《C++程序设计》习题解答目录第2部分习题解答................................................................................................... 错误!未定义书签。

第1章面向对象程序设计概述.................................. 错误!未定义书签。

第2章面向过程程序设计...................................... 错误!未定义书签。

第3章类和对象.............................................. 错误!未定义书签。

第4章继承与派生............................................ 错误!未定义书签。

第5章多态性与虚函数........................................ 错误!未定义书签。

第6章友元与静态成员........................................ 错误!未定义书签。

第7章运算符重载............................................ 错误!未定义书签。

第8章泛型编程.............................................. 错误!未定义书签。

第9章输入/输出............................................. 错误!未定义书签。

第10章异常处理............................................. 错误!未定义书签。

C#面向对象程序设计课后答案

C#面向对象程序设计课后答案

习题参考答案Chapter 11_1 对象客观世界中的事物都是对象,包括有形的物理对象,可感知的逻辑实体,以及概念化的抽象实体。

它有自己的属性,能够执行特定的操作。

类具有相同属性和操作的一组对象的集合;它描述的不是单个对象,而是“一类”对象的共同特征。

其重要性在于它是面向对象技术中最重要的结构,它支持信息隐藏和封装,进而支持对抽象数据类型(ADT)的实现。

1_2略1_3参考图如下图11_4 UML与面向对象UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。

它溶入了软件工程领域的新思想、新方法和新技术。

它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。

标准建模语言UML 适用于以面向对象技术来描述任何类型的系统,而且适用于系统开发的不同阶段,从需求规格描述直至系统完成后的测试和维护。

Chapter 22_1 程序的功能一般通过方法代码来实现。

每个方法都是从其第一行代码开始执行,直至最后一行代码结束,期间可以通过代码来调用其他的方法,从而完成各式各样的操作。

C#程序的起点是由Main方法定义的,程序总是从Main方法的第一行代码开始执行,在Main方法结束时停止运行。

2_2略(注:不同版本的V isual Studio的菜单项有所区别)2_3 略(注:不同版本的V isual Studio引用的程序集有所区别)2_4C#源代码会被编译为一种通用的中间语言(IL)代码,该语言类似于低级语言,但其代码与具体的硬件平台无关;之后CLR再针对特定的平台将IL程序翻译为机器指令,加载所需要的资源并管理执行。

2_5//动态链接库程序using System;namespace p2_5{class Adder{public static int Add(int a, int b){return a+b;}}}//控制台应用程序using System;using p2_5;namespace P2_6{class Program{static void Main(){Console.WriteLine("请输入两个数:");int a = int.Parse(Console.ReadLine());int b = int.Parse(Console.ReadLine());Console.WriteLine("{0}+{1}={2}", a, b, Adder.Add(a+b));}}}Chapter 33_1 略3_2第一:值类型的变量直接包含自身的所有数据,每创建一个变量,就在内存中开辟一块区域;只有通过变量才能修改它所包含的数据。

面向对象程序设计java程序设计课后习题答案

面向对象程序设计java程序设计课后习题答案

第一章1.public class BegintoLearn{public static void main(String args[]) {System.out.println("I’d like to study Java ! ");}}2.public class TraStar{public static void main(String args[]) {System.out.println("*");System.out.println("* *");System.out.println("* * *");System.out.println("* * * *");System.out.println("* * * * *");}}第二章1.public class ProNum{public static void main(String args[]) {float p;long q;int m=10,n=5;System.out.println("m="+m+" n="+n);m=m+3;n=n+5;System.out.println("m="+m+" n="+n);p=(float)(m+n)/2;System.out.println("p="+p);q=(m*m*n*n);System.out.println("q="+q);}}2.class SphereClass {public static void main(String args[]) {int r=3;double v;v=3.14*r*r*r*4/3;System.out.println("V="+v)}}第三章1. import java.io.*;public class InNum{public static void main(String args[]) throws IOException{ int num1,num2;String str;BufferedReader buf;buf=new BufferedReader(new InputStreamReader(System.in));System.out.print("Input first integer:");str=buf.readLine();num1=Integer.parseInt(str);System.out.print("Input second integer:");str=buf.readLine();num2=Integer.parseInt(str);System.out.println("The sum is "+(num1+num2));}}2.import java.io.*;public class Grade{public static void main(String args[]) throws IOException{ int score;char ch;String str;BufferedReader buf;buf=new BufferedReader(new InputStreamReader(System.in));System.out.print("Input the score(0-100):");str=buf.readLine();score=Integer.parseInt(str);if (score>=90)ch='A';else if (score>=75)ch='B';else if (score>=60)ch='C';elsech='D';System.out.print("The Grade is "+ch);}}3.public class ShuLie{public static void main(String args[]){int a ,q ,n;q=(150-135)/5;a=(135-20*q)/5;for (n=0;n<10;n++)System.out.print((a+n*q)+" ");}}4.public class Pyramid{public static void main(String args[]){int i,j,k;for(i=0;i<=4;i++){for ( j=0;j<20-i;j++)System.out.print(" ");for (k=0;k<=2*i;k++)if (k<=i)System.out.print(" "+(2*k+1));elseSystem.out.print(" "+(2*(2*i-k)+1));System.out.println();}}}5.import java.io.*;public class PrimeNumber{public static void main(String args[]) throws IOException{ int n=0;int m;String str;boolean mark=false;BufferedReader buf;buf=new BufferedReader(new InputStreamReader(System.in));System.out.print("Input the m:");str=buf.readLine();m=Integer.parseInt(str);for(int i=3;i<=m;i+=2){for(int j=2;j<i;j++){if(i%j==0){mark=true;break;}}if (!mark){System.out.print(" "+i);n++; //outputanewlineif(n%10==0) //after10numbersSystem.out.println();}mark=false;}System.out.println();}}6.import java.io.*;public class Factor12{public static void main(String args[]) throws IOException{ int m;String str;BufferedReader buf;buf=new BufferedReader(new InputStreamReader(System.in));System.out.print("Input the m:");str=buf.readLine();m=Integer.parseInt(str);System.out.print(m+"\'s factors are: ");System.out.println( );for(int i=1;i<=m;i++)if (m%i==0)System.out.print(" "+i);}}7.public class MSteel{public static void main(String args[]){int d=0;float m=2000;while (m>=5) {m=m/2;d++;System.out.print(d+": ");System.out.println(m);}System.out.print("You need "+d+" days");}}8.public class AlmostPi{public static void main(String args[]){int n;long m;double s,t;n=1;m=0;s=0;do{t=(double)n/(2*m+1);m++;n=-n;s=s+t;} while (4*s-3.14159> 0.0000001 || 4*s-3.14159< -0.0000001);System.out.println(m);}}9.public class LSRnd{public static void main(String args[]){int mun,n,max1,min1;max1=0;min1=100;for (n=1;n<=10;n++){mun=(int)(100*Math.random());System.out.print(mun+" ");if (mun>max1)max1=mun;if (mun<min1)min1=mun;}System.out.println();System.out.println("The largest number is: "+max1);System.out.println("The smallest number is: "+min1);}}10.import java.io.*;public class StrArry{public static void main(String args[]) throws IOException{int m;String str;Stringmonth[]={"January","February","March","April","May","June","July","August","september","October","November","December"};BufferedReader buf;buf=new BufferedReader(new InputStreamReader(System.in));System.out.print("Input the m:");str=buf.readLine();m=Integer.parseInt(str);if (m>=1 && m<=12)System.out.println(month[m-1]);elseSystem.out.print("Your Input is wrong");}}第四章1.import java.util.*;public class Person{private String name;private char sex;private int year,month;public Person( ){}public Person(String nm,char sx,int y,int m) {name=nm;sex=sx;year=y;month=m;}public void printPerson( ) {Calendar now=Calendar.getInstance();int age=now.get(Calendar.YEAR)-year;System.out.println("Name: "+name+",Sex: "+sex+", Age: "+age);}public static void main(String args[]){Person pe1=new Person("Tom",'m',1980,10);pe1.printPerson();}}2.public class Rectangle{double width,length,girth,area;public Rectangle(){};public Rectangle(double wd,double le) {width=wd;length=le;}public void setWidth(double wd) {width=wd;}public void setLength(double le) {length=le;}public double getWidth( ) {return width;}public double getLength( ) {return length;}public double girth(){return 2*(width+length);}public double area(){return width*length;}public void printRectangle(){System.out.println("Width="+width+" ,Length="+length);}public static void main(String args[]){Rectangle re1=new Rectangle(10,20);Rectangle re2=new Rectangle();re2.setWidth(3);re2.setLength(4);re1.printRectangle();System.out.println("Girth="+re1.girth()+",Area="+re1.area());re2.printRectangle();System.out.println("Girth="+re2.girth()+",Area="+re2.area());}}3.public class Matrix{ private int mx[][],m,n; public Matrix(int r,int c) { m=r;n=c;mx=new int[m][n];iniMatrix();}public Matrix(){m=3;n=3;mx=new int[3][3];iniMatrix();}public void iniMatrix(){ int i,j;for(i=0;i<=m-1;i++)for(j=0;j<=n-1;j++)mx[i][j]=(int)(Math.random()*100); }public void tranMatrix(){int i,j,t;int mt[][]=new int[m][n];for(i=0;i<=m-1;i++)for(j=0;j<=n-1;j++)mt[i][j]=mx[i][j];t=m;m=n;n=t;mx=new int[m][n];for(i=0;i<=m-1;i++)for(j=0;j<=n-1;j++)mx[i][j]=mt[j][i];}public void printMatrix(){int i,j;for(i=0;i<=m-1;i++){for(j=0;j<=n-1;j++)System.out.print(" "+mx[i][j]);System.out.println();}}public void addMatrix(Matrix b) {int i,j;for(i=0;i<=m-1;i++)for(j=0;j<=n-1;j++)mx[i][j]=mx[i][j]+b.mx[i][j];} public static void main(String args[]){Matrix ma=new Matrix(4,3);Matrix mb=new Matrix(4,3);System.out.println("The matrix_A:"); ma.printMatrix();System.out.println("The matrix_B:"); mb.printMatrix();System.out.println("Matrix_A +Matrix_B:");ma.addMatrix(mb);ma.printMatrix();System.out.println("Transpose Matrix_B:");mb.tranMatrix();mb.printMatrix();}}4.public class Substring{public static void main(String args[]){String str1=new String("addActionListener");String str2=new String("Action");int n;n=str1.indexOf(str2);if(n>=0){System.out.println("String_2 is in String_1");System.out.println("The substring before String_2 is "+str1.substring(0,n));System.out.println("The substring behind String_2 is "+str1.substring(n+str2.length( )));}}} 五、写出程序运行后的结果1. 2.。

C++面向对象程序设计课后答案

C++面向对象程序设计课后答案

C++面向对象程序设计课后答案习题11-1面向对象程序设计与面向过程程序设计相比有什么优点?答:优点有:(1)写程序不再是从计算机的角度考虑问题,而是站在人类思维的角度;(2)程序的可拓展性比其他不是面向对象的好;(3)能最大限度波爱护已有程序的代码。

1-2简述C++语言程序的特点。

答:C++语言是在C语言的基础上发展而来,但它比C语言更容易学习和掌握,它与C的最大区别是把函数放进了结构中,并引入了新的关键词类。

C++完美的体现了面向对象的各种特性。

1-3 C++与C语言的关系如何?它们的本质区别是什么?答:C++语言是基于C语言的基础上发展起来的。

它们的关系十分密切,很多语句之间是通用的。

它们的本质区别是C语言是面向过程的编程语言,而C++是面向对象的编程语言。

1-3组件编程有什么优点?答:组件编程的优点是它把对象技术应用于系统设计,对面向对象的程序设计的实现过程做了进一步抽象。

它强调真正的软件可重用性和高度的互操作性。

习题22-1 结构与联合有何区别?答:联合是有别于以前任何一种数据类型的特殊数据类型,它是多个成员的一个组合体,但与结构体不同,联合体的成员被分配在同一段内存空间中,它们的开始地址相同,使得同一段内存由不同的变量共享。

2-2 struct和class区别是什么?答:C++中,struct和class基本是一直的,唯一不同在于,struct中缺省权限public,class缺省权限private,即在struct和class没有写public 时,struct默认为public,class默认为private。

2-3 什么是内联函数?内联函数的优点是什么?答:C++提供一种提高效率的方法,即变异时将调用函数的代码直接嵌入到主函数中,而不是将流程转出去,这种嵌入到主函数的函数叫内联函数。

使用内联函数可以节省运行时间,提高函数的执行效率。

2-4 什么是函数重载?编译系统如何区别同名函数的不同版本?答:C++允许用同一函数名定义多个函数,这函数的参数个数和参数类型不同,这就是函数的重载。

(完整版)C++面向对象程序设计(谭浩强)课后习题答案text-P67

(完整版)C++面向对象程序设计(谭浩强)课后习题答案text-P67

班级:B11512 姓名:陈德桥学号:30 1.以下是根据题意订正后的程序和运行结果:#include<iostream>using namespace std;class Time{public:void set_time(void);void show_time(void);int hour;int minute;int sec;};Time t;int main(){t.set_time();t.show_time();return 0;}void Time::set_time(void){cout<<"set_time:"<<endl;cin>>t.hour;cin>>t.minute;cin>>t.sec;}void Time::show_time(void){cout<<"show_time:"<<endl;cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;}2.以下是根据题目要求对例2.1进行改写后的程序和运行结果:#include<iostream>using namespace std;class Timeprivate:int hour;int minute;int second;public:void settime(int h,int m,int s){tl.hour=h,tl.minute=m,tl.second=s;}void showtime(){cout<<"showtime:"<<endl;cout<<tl.hour<<":"<<tl.minute<<":"<<tl.second<<endl;}}tl;int main(){tl.settime(22,24,0);tl.showtime();return 0;}3. .以下是根据题目要求对例2.1进行改写后的程序和运行结果:#include<iostream>using namespace std;class Time{private:int hour;int minute;int second;public:void settime(int h,int m,int s);void showtime();}tl;int main(){tl.settime(22,24,0);tl.showtime();return 0;void Time::settime(int h,int m,int s){tl.hour=h,tl.minute=m,tl.second=s;}void Time::showtime(){cout<<"showtime:"<<endl;cout<<tl.hour<<":"<<tl.minute<<":"<<tl.second<<endl;}4.以下根据要求对本章2、3、3进行完善后的程序和运行结果:#include<iostream>#include<string>using namespace std;class Student{public:void display(){cout<<"num:"<<num<<endl;cout<<"name:"<<name<<endl;cout<<"sex:"<<sex<<endl;}void set_value1(int n);void set_value2(string m);void set_value3(char s);private:int num;string name;char sex;}Stu;int main(){Stu.set_value1(12);Stu.set_value2("liu");Stu.set_value3('F');Stu.display();return 0;}void Student::set_value1(int n)Stu.num=n;}void Student::set_value2(string m) {=m;}void Student::set_value3(char s) {Stu.sex=s;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章2-4#include <iostream>using namespace std;Add(int a,int b);int main(){int x,y,sum;cout<<"please input x and y:";cin>>x>>y;sum = add(x,y);cout <<x<<"+"<<y<<"="<<sum<<endl;}Add(int a,int b){return a+b;}2-5(1)this is a C++ program.(2)x=50.6 y=10 z=Ax=216.34 y=10 z=Ax=216.34 y=2 z=Ax=216.34 y=2 z=E(3)x y z500 1000 0500 1500 1500500 200 15002-6#include <iostream>using namespace std;int main(){int *p,*init;int countp=0;int countn=0;p = new int[20];init = p;for(int i=0;i<20;i++){cin>>*p;p++;}p = p-20;for( i=0;i<20;i++){if(*p>0) countp++;if(*p<0) countn++;cout<<*p<<" ";p++;}cout<<"正数有:"<<countp<<endl; cout<<"负数有:"<<countn<<endl;p = init;delete[] p;return 0;}2-7不做要求#include <iostream>//#include <string>using namespace std;void checkagescore(string name,int age) {if (name == "exit") throw name;if(age<0||age>50)throw age;int main(){string name;int age;for(int i=0 ;i<5 ;i++ ){cin.ignore ();getline(cin,name );cin>>age ;try{checkagescore(name,age);}catch( string){cout<<"exception :name is exit"<<endl;continue;}catch(int){cout<<"exception :age is not proper"<<endl;continue;}cout<<"name:"<<name<<" age :"<<age<<endl;}return 0;}第三章3-1(1)A (2)C (3)B (4)C (5)C(6)B (7)B (8)C (9)C3-7(1)main()函数中p1.age = 30;语句是错误的。

age 是类的私有成员(2)构造函数应当给常数据成员和引用成员初始化,将构造函数改为:A(int a1,int b1):a(a1),b(b1){}或A(int a1 ):a(a1),b(a){}再将main中的A a(1,2); 改为A a(1);(3)(1)在Test 类中添加语句:void print();void Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}改为void Test::Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}main函数中Init(38,15);改为:A.Init(38,15);Print();改为:A.Print();3-8(1)Constructing AConstructing BDestructing BDestructing A(2)double a,double bpoint & pp.x3-9class box{int len1,len2,len3;public:box(int l1,int l2,int l3){len1 = l1;len2 = l2; len3 = l3;} long volumn(){return len1*len2*len3;}};3-10class Test{int m1,m2;public:void Init(int a,int b){m1 = a;m2 = b;}void Pring(){cout<<m1<<" "<<m2<<endl;}};3-11略3-12}第四章4-6(1)D (2)D (3)D (4)D (5)B(6)D4-7(1)static int count = 0;这样初始化静态成员值是不对的将其改为static int count;在类外,main函数前加int Sample::count = 0;(2)#include <iostream>//#include <cstdlib>using namespace std;class Ctest{private:int x; const int y1;public:const int y2;Ctest(int i1,int i2):y1(i1),y2(i2){y1 =10;//y1 为常量不能赋值x = y1;}int readme() const;};int Ctest::readme ()const{int i;i = x;x++; //常函数内不能改变成员值return x;}int main(){Ctest c(2,8);int i = c.y2;c.y2 = i;//y2为常量,不能改值i = c.y1;//y1私有,类外不能访问return 0;}将出错语句全部注释4-8(1)题中印刷错误,将class C构造函数改为:C(){cout<<"constructor C:";}运行结果为:constructor Aconstructor Bconstructor C(2)40(3)3434-9#include<iostream.h>#include<stdio.h>class Date{int year;int month;int day;public:Date(int y,int m,int d){year=y;month=m;day=d;}void disp(){cout<<year<<" "<<month<<" "<<day<<endl;}friend int count_day(Date &d,int k);friend int l(int year);friend int h(Date &d1,Date &d2);};int count_day(Date &d,int k){static int day_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};// 使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年int j,i,s;if(l(d.year))j=1;//闰年,取1else j=0;//非闰年,取0if(k)//K非0时{s=d.day;for(i=1;i<d.month;i++)//d.month为输入的月份s+=day_tab[j][i-1];}else//K为0时{s=day_tab[j][d.month]-d.day;for(i=d.month+1; i<=12; i++)s+=day_tab[j][i-1];}return s;//S为相差的天数}int l(int year){if(year%4==0&&year%100!=0||year%400==0) // 是闰年return 1;else // 不是闰年return 0;}int h(Date &d1,Date &d2){int days,day1,day2,y;if(d1.year<d2.year)//第一个日期年份小于第二个日期年份{days=count_day(d1,0);for(y=d1.year+1;y<d2.year;y++)if(l(y))//闰年days+=366L;else//非闰年days+=365L;days+=count_day(d2,1);}else if(d1.year==d2.year){day1=count_day(d1,1);day2=count_day(d2,1);days=day2-day1;}elsedays=-1;return days;}void main(){ int year1,year2,month1,month2,day1,day2;cout<<"输入日期1"<<endl;cin>>year1>>month1>>day1;cout<<"输入日期2"<<endl;cin>>year2>>month2>>day2;Date d1( year1, month1, day1),d2( year2, month2, day2);int ds=h(d1,d2);{cout<<"输出结果:"<<endl;}if(ds>=0){d1.disp(); printf("与");d2.disp(); printf("之间有%d天\n\n",ds);}else//第一个日期小于第二个日期cout<<"时间错误!"<<endl;}4-10#include<iostream.h>#include<string.h>class Student{int number;char name[20];public:Student(int i=0,char *s="\0") //构造学生对象{ number=i;strcpy(name,s);}void Print() //输出结果{ cout<<"Number:"<<number<<endl;cout<<"Name:"<<name<<endl;}friend bool greaterthan(Student &st1,Student &st2);};bool greaterthan(Student &st1,Student &st2){return st1.number>st2.number; //返回成员number的比较结果}int main(){Studentst[5]={Student(65,"Li"),Student(78,"Zhang"),Student(80,"wang"),Student(92,"zhao"), Student(50,"zhen")};int max = 0;int min = 0;for(int i=1;i<5;i++){ if(!greaterthan(st[max],st[i]))max = i;if(!greaterthan(st[i],st[min]))min = i;}cout<<"最大成绩:"<<endl;st[max].Print ();cout<<"最小成绩:"<<endl;st[min].Print ();return 0;}4-11#include <iostream>#include <string>using namespace std;class Book{char *name;char*author;int sale;public:Book(){ name = '\0';author = '\0';sale = -1;}Book(char* a ,char* b,int c){name = new char[strlen(a)+1];strcpy(name,a);author = new char[strlen(b)+1];strcpy(author,b);sale = c;}void print(){cout<<"autor "<<author<<endl;cout<<"name "<<name<<endl;cout<<"price "<<sale<<endl;}~Book(){if(!name ) delete[] name;if(!author)delete[] author;}};int main(){Book b1("c++","li ai hua",12);Book b2;return 0;}第五章5-8改错题答案不唯一(1) class DC {int x;public:DC(){x =100;}};(2)编译无错,但逻辑错误,可改为:class BC{protected:int x;public:BC(int i=0){x = i}};class DC:private BC{public:DC(int i):BC(i){}};(3)将DC构造函数改为:DC(int i):BC(i){y = 0;}5-9(1) base class(2) (10,5)(3,9-18,33)(13,19)(13,19-18,33)(13,19)5-10#include <iostream>using namespace std;class Shape{int x,y;public:Shape(int ix,int iy){x = ix; y = iy;}virtual void show(){cout<<"pos: "<<x<<' '<<y<<endl;}};class Circle :public Shape{int radius;public:Circle(int ix,int iy,int r):Shape(ix,iy),radius(r){}void show() {Shape::show ();cout<<"circle: "<<radius<<endl;}};class Rect :public Shape{int width,higth;public:Rect(int ix,int iy,int iw,int ih):Shape(ix,iy),width(iw),higth(ih){} void show() {Shape::show ();cout<<"width and higth: "<<width<<' '<<higth<<endl;} };int main(){Shape s1(1,1);Rect r1(2,2,8,8);Circle c1(3,3,9);r1.show ();c1.show();return 0;}5-11#include<iostream.h>class vehicle // 定义汽车类{protected:int date; // 年份float price; //价格public:vehicle(int date,float price);int get_date();float get_price();float date_load();void show();};class car:public vehicle // 定义小车类{int passenger_load; // 载人数public:car(int date,float price,int passengers=4);int get_passengers();void show();};class truck:public vehicle // 定义卡车类{float payload; // 载重量public:truck(int date,float price,float max_load=24000.00); float efficiency();void show();};vehicle::vehicle(int date,float price){vehicle::date=date;vehicle::price=price;}int vehicle::get_date(){return date;}float vehicle::get_price(){return price;}void vehicle::show(){cout << "年份:" << date << "年" << endl;cout << "价格:" << price << "元" << endl;}car::car(int date, float price,int passengers) :vehicle (date, price){passenger_load=passengers;}int car::get_passengers (){return passenger_load;}void car::show(){cout <<" 车型:小车" << endl;vehicle::show();cout << "载人:" << passenger_load << "人" << endl;cout << endl;}truck:: truck(int date, float price,float max_load):vehicle(date,price) {payload=max_load;}float truck::efficiency(){return payload;}void truck::show(){cout <<"车型:卡车" << endl;vehicle:: show ();cout << "载重:" << efficiency() << endl;cout << endl;}void main (){car car1(2001,2000,5);truck tru1(2002,8000,340000);cout << "输出结果" << endl;car1. show ();tru1. show ();}第六章6-4d=3D::fun();6-5C::print(),cinfo=2C::print(),cinfo=2D::print(),dinfo=4B类不能定义对象,否则编译通不过,因为B未定义基类A中的虚函数print(),它也是个虚基类。

相关文档
最新文档