C++课后习题
一、设计一个类people,有保护数据成员:age(年龄,整型),name(姓名,string),行为成员:两个构造函数(一个默认,另一个带参数);析构函数;void setValue(int m, string str)给age和name赋值;有一个void类型的纯虚函数display()。
设计一个学生类student,公有继承类people,有私有成员:studentID(学号,整型),行为成员:两个构造函数(一个默认,另一个带参数);析构函数;void setID(int m)给studentID赋值;display()函数输出学生的姓名,年龄,学号。
设计一个教师类teacher,公有继承类people,有私有成员:teacherID(工号,整型),行为成员:两个构造函数(一个默认,另一个有参数);默认析构函数;void setID(int m)给teacherID赋值; display()函数输出教师的姓名,年龄,工号。
在main函数定义学生对象和教师对象,给对象初始化赋值或调用setValue()和setID()赋值,并输出学生和老师的信息。
#include<iostream>
using namespace std;
/*设计一个类people,有保护数据成员:age(年龄,整型),name(姓名,string),
行为成员:两个构造函数(一个默认,另一个带参数);
析构函数;
void setValue(int m, string str)给age和name赋值;
有一个void类型的纯虚函数display()。
设计一个学生类student,公有继承类people,
有私有成员:studentID(学号,整型),
行为成员:两个构造函数(一个默认,另一个带参数);
析构函数;void setID(int m)给studentID赋值;display()函数输出学生的姓名,年龄,学号。
设计一个教师类teacher,公有继承类people,
有私有成员:teacherID(工号,整型),
行为成员:两个构造函数(一个默认,另一个有参数);
默认析构函数;void setID(int m)给teacherID赋值;
display()函数输出教师的姓名,年龄,工号。
在main函数定义学生对象和教师对象,
给对象初始化赋值或调用setValue()和setID()赋值,并输出学生和老师的信息。
*/ //定义类
class People{
protected:
int age;//age(年龄,整型)
string name;//name(姓名,string)
public:
People(){};//默认构造函数
People(int a,string n){//有参数的构造函数
age = a;
name = n;
}
~ People(){};//析构函数
void setValue(int m,string str){
age = m;
name = str;
}
virtual void display() const = 0;//纯虚函数
};
class Student : public People{//Student类公有继承People类
private:
int studentID;//studentID(学号,整型)
public:
Student(){};//默认构造
Student(int age,string name,int studentID):People(age,name){//含参构造
this->studentID = studentID;
}
~Student(){};//析构
void setID(int m){//给studentID赋值
this->studentID = m;
}
void display() const{//覆盖基类的虚函数,输出学生的姓名、年龄、学号
cout<<name<<","<<age<<","<<studentID<<endl;
}
};
class Teacher : public People{//Teacher类公有继承People类
private:
int teacherID;//teacherID(工号,整型)
public:
Teacher(){};//默认构造
Teacher(int age,string name,int teacherID):People(age,name){//含参构造
this->teacherID = teacherID;
}
~Teacher(){};//析构函数
void setID(int m){//给teacherID赋值
this->teacherID = m;
}
void display() const {//输出教师的姓名、年龄、工号
cout<<name<<","<<age<<","<<teacherID<<endl;
}
}; void fun(People *ptr){//定义抽象类的指针和引用
ptr->display();
} int main(){
//定义对象
People *people;
Student student;
Teacher teacher;
int age;
string name;
int id;
/*这里默认Student类和Teacher类的年龄、姓名相同*/
cout<<"请输入年龄、姓名"<<endl;
cin>>age>>name;
people = &student;
people->setValue(age,name);
people = &teacher;
people->setValue(age,name);
cout<<"请输入学生学号"<<endl;
cin>>id;
student.setID(id);
cout<<"请输入教师工号"<<endl;
cin>>id;
teacher.setID(id);
fun(&student);
fun(&teacher);
return 0;
}
二、使用函数模板,实现求两个数,三个数的最小值。主函数中针对不同类型数据进行测试(实现显示实例化和隐式实例化)。
#include<iostream>
using namespace std;
/*使用函数模板,实现求两个数,三个数的最小值。
主函数中针对不同类型数据进行测试(实现显示实例化和隐式实例化)。 */ //函数模板
template<typename T>
T GetMin(T Array[],int Length){
T temp = Array[0];
for(int i = 0;i<Length;i++){
if(temp>Array[i]){
temp = Array[i];
}
}
return temp;
} int main(){
int intArray[] = {1,2,3};//int型数组测试
double doubleArray[] = {1.1,1.2,1.3};//double型数组测试
//计算长度
int intArrayLength,doubleArrayLength;
intArrayLength = sizeof(intArray)/sizeof(int);
doubleArrayLength = sizeof(doubleArray)/sizeof(double); cout<<"int型隐式实例化Min:"<<GetMin(intArray,intArrayLength)<<endl;//隐式
cout<<"int型显式实例化Min:"<<GetMin<int>(intArray,intArrayLength)<<endl;//显式
cout<<"double型隐式实例化Min:"<<GetMin(doubleArray,doubleArrayLength)<<endl;//隐式
cout<<"double型显式实例化Min:"<<GetMin<double>(doubleArray,doubleArrayLength)<<endl;//显式
return 0;
}
C++课后习题的更多相关文章
- 《python核心编》程课后习题——第三章
核心编程课后习题——第三章 3-1 由于Python是动态的,解释性的语言,对象的类型和内存都是运行时确定的,所以无需再使用之前对变量名和变量类型进行申明 3-2原因同上,Python的类型检查是在运 ...
- web实验指导书和课后习题参考答案
实验指导书 :http://course.baidu.com/view/daf55bd026fff705cc170add.html 课后习题参考答案:http://wenku.baidu.com/li ...
- 《Python核心编程》 第六章 序列 - 课后习题
课后习题 6–1.字符串.string 模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串是否是另一个大字符串的一部分? 答:成员关系操作符(in.not in) import string ...
- 《Python核心编程》 第五章 数字 - 课后习题
课后习题 5-1 整形. 讲讲 Python 普通整型和长整型的区别. 答:普通整型是绝大多数现代系统都能识别的. Python的长整型类型能表达的数值仅仅与你机器支持的(虚拟)内存大小有关. 5- ...
- 機器學習基石(Machine Learning Foundations) 机器学习基石 课后习题链接汇总
大家好,我是Mac Jiang,非常高兴您能在百忙之中阅读我的博客!这个专题我主要讲的是Coursera-台湾大学-機器學習基石(Machine Learning Foundations)的课后习题解 ...
- OpenCV学习笔记之课后习题练习3-5
OpenCV学习笔记之课后习题练习2-5 练习使用感兴趣区域(ROI).创建一个210*210的单通道图像并将其归0.在图像中使用ROI和cvSet()建立一个增长如金字塔状的数组. 参考博文:www ...
- OpenCV学习笔记之课后习题练习2-5
5.对练习4中的代码进行修改,参考例2-3,给程序加入滚动条,使得用户可以动态调节缩放比例,缩放比例的取值为2-8之间.可以跳过写入磁盘操作,但是必须将变换结果显示在窗口中. 参考博文:blog.cs ...
- OpenCV学习笔记之课后习题练习2-3
3.使用例2-10中的视频捕捉和存储方法,结合例2-5中的doPyrDown()创建一个程序,使其从摄像机读入视频数据并将缩放变换后的彩色图像存入磁盘. 例2-10中所用的方法虽然能正常运行,但却不能 ...
- OpenCV学习笔记之课后习题练习3-4
练习:创建一个大小为100*100的三通道RGB图像.将它的元素全部置0.使用指针算法以(20,5)与(40,20)为顶点绘制一个绿色平面. 参考博文:blog.csdn.net/qq_2077736 ...
- OpenCV学习笔记之课后习题练习3-3
3.3 创建一个100*100的拥有三个通道的二维字节类型矩阵,将其元素全部置0.通过cvPtr2D函数将指针指向中间通道(绿色),以(20,5)和(40,20)为顶点间画一个绿色的长方形. cvPt ...
随机推荐
- SpringMVC学习02(我的第一个SpringMVC程序)
2.Hello,SpringMVC 2.1 配置版 1.新建一个Moudle , springmvc-02-hello , 添加web的支持! 2.确定导入了SpringMVC 的依赖! 3.配置we ...
- MySQL数据类型 储存引擎
存储引擎 日常生活中文件格式有很多种,并且针对不同的文件格式会有对应不同存储方式和处理机制(txt,pdf,word,mp4...) 针对不同的数据应该对应着不同的处理机制来存储 存储引擎就是不同的处 ...
- 题解 party?
传送门 挺遗憾的一个题 考场上想到的思路是题解的退化版,可以有71pts(赛时以为只有20pts),但因为这一场的策略原因没有打-- 首先发现颜色种类数很少,可以直接bitset上树剖维护,炸不了空间 ...
- 单链表(Java--尚硅谷)
基础知识 大体结构和C++的链表差不多 补充之前不知道的:链表分两类,带和不带头结点的链表 现在才知道,Java没有像C/C++那样的指针 首先创建一个LinkList类,然后把链表的各个功能添加进去 ...
- WPF 实现完全可控制的漂亮自定义窗口
在WPF界面开发中,有时候不想用系统的死板的窗口,想要来点新花样,常会自定义窗口. 那么,先抛出问题,想搞出下面这样的窗口,该咋整 ? aa 下面看一个啥也没设置过的普通窗口,这样的窗口,我们只能控 ...
- 十六:使用JDBC对数据库进行CRUD
一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的exe ...
- 【springcloud】Zuul高级配置(zuul--3)
转自:https://blog.csdn.net/pengjunlee/article/details/87285673 为路由提供HystrixFallback 当Zuul中某一个路由的断路器被断开 ...
- mybatis主配置文件详解
mybatis主配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configur ...
- linnux安装多台redis
安装: 1.获取redis资源 wget http://download.redis.io/releases/redis-4.0.8.tar.gz 2.解压 tar xzvf redis-4.0.8. ...
- hdfs中数据迁移
1.hdfs集群间数据迁移 hadoop distcp hdfs://192.128.112.66:8020/user/hive/warehouse/data.db/dwi_xxxx_d /user ...