1、c+经典课后习题整理(1)设计一个Car类,他的数据成员要能描述一辆汽车的品牌、型号、出厂年份和价格,成员函数包括提供合适的途径来访问数据成员,在main()函数中定义类的对象并调用相应的成员函数#include#includeusing namespace std;class Carprivate: string Pingpai; string Xinghao; int Year; int Price;public:void set() coutshu ru xiang guan xin xiendl; coutPingpai; coutXinghao; coutYear; coutPric
2、e; void show() coutpingpai:Pingpaiendl; coutxinghao:Xinghaoendl; coutchuchangnianfen:Yearendl; coutjiage:Priceendl; ;int main() Car car; (); ();return 0;(2)设计一个学生类Student,拥有的数据成员是学号、姓名、电话号码、所属院系,成员函数包括访问和修改这些属性,在main()中定义对象,并输出相关信息#include #include using namespace std;class Student coresi+1.score) t
3、mp=si; si=si+1; si+1=tmp; cout分数由高到低排列:; for(i=0;i4;i+) coutsi.name si.scoreendl; cout最高分:s0.name s0.scoreendl; cout最低分:s3.name s3.scoreendl;int main() student s4=student(zhang,78),student(wang,80),student(li,92),student(chen,50); order(s);(4)编写程序,定义机动车类Vehicle,包括的数据成员有出厂日期和售价并定义成员函数可以设置这些数据成员,再定义pr
4、int()然后定义car类,增加乘客数量,truck类增加载重吨数.#include#includeusing namespace std;class Vehicleprivate:int year,month,day;int price;public:Vehicle() coutplease input date: ; coutyear,month,day,year;cinmonth;cinday;coutprice;coutVehicleendl; virtual void print1() coutdate:year,month,day,endl; coutprice:priceendl
5、;class Car:public Vehiclepublic:int amount;Car()coutamount;coutcarendl; void print2() print1(); coutamount:amountendl;class Truck:public Vehiclepublic:int ton;Truck()coutton;couttruckendl;void print3() print1(); coutton:tonendl;int main()Vehicle V1;();Car C1;();Truck T1;();return 0;(7-4)完整定义字符串类stri
6、ng,使用动态分配内存机制实现字符串存储,定义构造函数,析构函数,重载运算符“=”,+,“+=”实现两个字符串的赋值,连接等功能。#include#includeusing namespace std;class Stringpublic: String(); String(char *t); String(String &t); String(); String operator=(String t); String operator+( String t); String operator +=(String t); void Show() coutpendl; private: char
7、 *p;String:String() p = new char1; *p = 0;String:String(char *t) p = new charstrlen(t)+1; strcpy(p,t);String:String(String &t) p = new charstrlen+1; strcpy(p,;String String:operator +(String t) char *pt; pt = new charstrlen(p)+strlen+1; strcpy(pt,p); strcat(pt,; String temp(pt); deletept; return tem
8、p;String String:operator +=(String t) char *i; i=new charstrlen(p)+1; strcpy(i,p); delete p;p=new charstrlen+strlen(p)+1;strcpy(p,i);strcat(p,;return *this;String:String() deletep;String String:operator =(String t) if(this = &t) return *this; deletep; p = new charstrlen+1; strcpy(p,; return *this;vo
9、id main() String s1(hello!); String s2(when.); String s3;s3=s2+s1;s3+=s2;s2=s1;();();(8-4)根据程序定义一个求3个数之间最大值的函数模板max。#include#includetemplateT max(T a,T b,T c) return (aba:b)c(aba:b):c;int main() coutmax(11,29,22)endl; coutmax,endl; coutmax(c,b,a)endl; return 0;(5)有一个学生类student,包括学生姓名、成绩,设计一个友元函数,输出成
10、绩对应的等级:大于等于90:优;8090:良;7079:中;60!69:及格;小于60:不及格。#include #include class student char name10; int deg; public: student(char na,int d) strcpy(name,na); deg=d; friend void trans(student &s) if=90) cout 优=80) cout 良=70) cout 中=60) cout 及格endl; else cout 不及格endl; ; void main() student st=student(王华,78),s
11、tudent(李明,92),student(张伟,62),student(孙强,88); cout输出结果:endl; cout姓名 成绩 等级endl; for(int i=0;i4;i+) trans(sti); (6)编写一个程序,设计一个Point类,包括学号、姓名和成绩等私有数据成员,不含任何成员函数,只将main()设置为该类的友元函数。#includeclass point int no; char name10; int deg; public: friend void main();void main() point p; cout; cout; cout; cout输出结果
12、endl; cout学生:endl; cout学号:endl; cout成绩为:endl;(7)创建一个学生类,包括学号和成绩,编程输入和显示学生信息,建立一个人类,包括姓名,性别,年龄,并作为学生的基类. #includeclass Person char name10; char sex; int age;public: void input() coutname; coutsex; coutage; void display() cout姓名:name,性别:sex,年龄:ageendl; ;class Student:public Person char sno10; int scor
13、e;public: void input() Person:input(); coutsno; coutscore; void display() Person:display(); cout学号;sno,成绩:scoreendl; ;void main() Student s1; (); ();(8)按要求编程:某学校教授和讲师的月工资计算办法规定如下:教授每月固定工资为4000元。讲师每月工资与讲课学时数有关,计算方法是每学时50元,另加补助1000元。编程显示某个教员的月工资数目。#include class Teacherpublic: virtual int Salary()=0;
14、virtual void Print(int)=0;class Professor:public Teacherprivate: char name20; int lessons;public: Professor() coutname; 定一个int型数n,编程实现按不同进制输出,包括十进制数、八进制数、十六进制数。要求使用纯虚函数print()。十进制数 (dec) 十六进制数(hex)八进制数(oct)#include#includeint main()char ch16=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, output20;int input,temp,n
15、,i=0;coutinput;cout请输入要转换的进制(2=nn;input=fabs(input);while(input)temp=input%n;input=input/n;outputi+=chtemp;outputi=0;cout转换为n=0;i-)coutoutputi;coutendl;return 0; 两个或两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数进行最佳匹配,自动确定调用哪个函数,这就是函数的重载。 重写和重载,他们其实是实现类型多态(同一种方法,不同的对象会产生不同的结果)特性的基本技术之一.重写也叫做覆写,它存在与有继承关系的子类中,是在子类中重新定义父类具有相同方法签名的函数,使之有不同的实现要理解重写和重载的本质区别,实现要理解什么叫做具有相同签名的方法其实很简单,就是指相同的方法名,相同的参数列表(参数个数以及相同位置的参数类型相同)以及相同的函数返回值重写的一个重要特征就是必须要求方法的签名相同重写的基本特征:是一种运行时多态,又称为动态联编,只有在运行时才知道调用的是哪个方法存在于有继承关系的子类中,只有被virtual和abstract标记的虚方法和抽象方法才能被直接重写 用关键字override来标记重写这个方法的类的父类中有一个与这个方法签名相同的方法
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1