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 ...
随机推荐
- mapboxgl 互联网地图纠偏插件(三)
先说结论,结论当然是:大功告成,喜大普奔.看效果图: 好了,接下来说一下过程 先回顾一下这个系列的第一篇和第二篇 第一篇是直接改的 mapboxgl 源码,在源码里面对瓦片的位置进行纠偏,遇到的问题是 ...
- dubbo学习实践(5)之Dubbo-Admin元数据中心配置(zookeeper&Redis&Consul)
1.Dubbo2.7.8元数据中心配置zookeeper版 前面文章已经写到了dubbo-admin管理平台的docker版配置及dubbo服务注册与调用,这篇文章记录dubbo元数据中心配置 翻开d ...
- JmoVxia
关于我 网名:季末微夏 英文:JmoVxia 签名:路漫漫其修远兮,吾将上下而求索 标签:iOS开发(ma)工程师(nong).技术爱好者 联系我 邮箱:JmoVxia@gmail.com Githu ...
- CTF-favorite_number
想到自己越来越菜就越发兴奋 这是一道CTF,PHP审计的一道: 其实我也知道,兄弟们看见也都头皮有点凉,我就直接看wp了. 也不是没提示,php5.5.9,和全等数组. PHP数组的key溢出问题 其 ...
- (四)Linux之用户管理(用户和用户组)
Linux之用户管理(用户和用户组) 目录 Linux之用户管理(用户和用户组) 一.概述 二.用户和组的关系 三.关于UID和GID(用户ID和组ID) 四.用户和组的数据 /etc/passwd内 ...
- 是的你没看错,HTTP3来了
目录 简介 HTTP成长介绍 不同HTTP协议解决的问题 HTTP3和QUIC TLS1.3 解决HoL阻塞 连接的迁移 总结 简介 很多小伙伴可能还沉浸在HTTP1.1的世界无法自拔,但是时代的洪流 ...
- 【转】ps命令详解与使用
ps 概述 Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态 ...
- 【springcloud】配置中心(Config-Server)
转自:https://blog.csdn.net/pengjunlee/article/details/88061736 参考文章 Spring Cloud 配置中心为分布式系统中的服务器端和客户端提 ...
- 后端开发应该掌握的Redis基础
转自:https://juejin.im/post/5d078cd6f265da1b8466e62c 在上一篇文章中,我们简单地讲了一下Redis的应用场景.安装.如何连接等比较基础的知识,那么在这篇 ...
- Go版本管理--依赖包存储
目录 1. 简介 2. GOPATH 依赖包存储 3.GOMODULE 依赖包存储 4.包名大小写敏感问题 1. 简介 GOPATH模式下,依赖包存储在$GOPATH/src,该目录下只保存特定依赖包 ...