实验14多态(二)
【实验目的】
通过本实验,掌握类的纯虚函数的概念。
【实验要求】
熟练掌握纯虚函数的定义及使用方法。
【实验内容】
简单模拟输入学生的姓名及考试成绩,计算并显示学生成绩的学分值。
类S和类GS公有继承类Base。类Base的input()、output()函数、
get()
函数、score
()
函数为纯虚函数。
#include<cstdio>
#include<iostream>
usingnamespacestd;
constintN=4;
constintM=5;
classBase{
//共有基类
public:
virtualvoidinput()=0;
virtualvoidoutput()=0;
virtualchar*get()=0;
virtualvoidscore()=0;
voidspace(char*p);
//去掉字符串的空格
intcheck(inti);
//成绩合理性检验
};
intBase::check(inti){
intx=-1;
while(x<=0||x>100){
cout<<"第"<<i+1<<"个成绩=";
cin>>x;
if(x>=0&&x<=100)break;
}
returnx;
}
voidBase::space(char*p){
char*q=p;
while(*p!='/0'){
if(*p!='')*q++=*p;
p++;
}
*q='/0';
}
classS:publicBase{
//模拟大学生类定义
private:
char*k;
ints[N],sum;
charx;
public:
S(){k=newchar[100];sum=0;}
~S(){delete[]k;}
voidinput();
//输入学生姓名
voidoutput();
//输出学生的学分值
char*get(){returnk;}
voidscore();
//成绩处理
};
voidS::input(){cout<<"输入一个(S)学生的姓名:";gets(k);}
voidS::output(){cout<<"(S)学生"<<k<<"的学分值x="<<x<<endl;}
voidS::score(){
cout<<"输入(S)学生"<<k<<"的成绩"<<endl;
for(inti=0;i<N;i++){
s[i]=check(i);sum+=s[i];
}
getchar();
if((float)sum/N>=70)x='1';
//平均分大于等于70分时学分值为1
elsex='0';
}
classGS:publicBase{
//模拟研究学生类定义
private:
char*k;
ints[M],sum;
charx;
public:
GS(){k=newchar[100];sum=0;}
~GS(){delete[]k;}
voidinput();
//输入学生姓名
voidoutput();
//输出学生的学分值
char*get(){returnk;}
voidscore();
//成绩处理
};
voidGS::input(){cout<<"输入一个(GS)学生的姓名:";gets(k);}
voidGS::output(){cout<<"(GS)学生"<<k<<"的学分值x="<<x<<endl;}
voidGS::score(){
cout<<"输入(GS)学生"<<k<<"的成绩"<<endl;
for(inti=0;i<M;i++){
s[i]=check(i);sum+=s[i];
}
getchar();
if((float)sum/M>=75)x='1';
//平均分大于等于75分时学分值为1
elsex='0';
}
voidfun(Base&a){
a.input();a.space(a.get());a.score();a.output();
}
intmain(){
Sa;fun(a);
GSb;fun(b);
return0;
}
分享到:
相关推荐
本书通过85个实例全面讲述了应用MFC进行Visual C++编程的思想。每个实例均以编写一个应用程序要走的步骤编写。全书共分四部分进行介绍,第一部分是基础知识,第二部分讲述用户界面的实例,第三部分讲述MFC内部处理...
第二部分 用户界面实例 第5章 应用程序与环境 76 5.1 例1 规划MFC应用程序 76 5.2 例2 用AppWizard创建一个MFC 应用程序 79 5.3 例3 用ClassWizard创建一个类 83 5.4 例4 初始化应用程序屏幕 84 5.5 例5 保存应用...
本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...
第二部分 用户界面实例 第5章 应用程序与环境 76 5.1 例1 规划MFC应用程序 76 5.2 例2 用AppWizard创建一个MFC 应用程序 79 5.3 例3 用ClassWizard创建一个类 83 5.4 例4 初始化应用程序屏幕 84 5.5 例5 保存应用...
本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...
第二部分 用户界面实例 第5章 应用程序与环境 76 5.1 例1 规划MFC应用程序 76 5.2 例2 用AppWizard创建一个MFC 应用程序 79 5.3 例3 用ClassWizard创建一个类 83 5.4 例4 初始化应用程序屏幕 84 5.5 例5 保存应用...
本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...
本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...
《C++编程思想》,原名《Thinking in C++》,作者:Bruce Eckel,翻译:刘宗田等,出版社:机械工业出版社,ISBN:7111071166,pdf 格式,大小 4MB。本资源仅包括前七章的内容。 内容简介: 本书作者根据自己学习C++...
第1章 计算机与C++编程简介-------------------------------------------------1 1.1 简介--------------------------------------------------------------1 1.2 什么是计算机--------------------------------...
16.3向上映射的二义性 16.4虚基类 16.4.1“最晚辈派生”类和虚基初始化 16.4.2使用缺省构造函数向虚基“警告” 16.5开销 16.6向上映射 16.7避免MI 16.8修复接口 16.9小结 16.10练习 第17章 异常处理 17.1C语言的出错...
作者重点介绍类、模板、操作符重载、异常、命名空间等从事现代C++编程不可或缺的语言特性,以及容器、算法、迭代器等重要的标准库组件。本书通过例子代码和“代码详解”,将C++的精华展示给读者。. 本书可供完全...
《21天学通C++》是C++语言的入门教程,较为系统地...第五篇的内容主要是C++编程实践,主要分析了标准模板库STL、模板与C++标准库和异常处理等;最后一篇中结合学生成绩管理系统开发实例,讲解如何使用C++进行实际开发.
第二部分 用户界面实例 第5章 应用程序与环境 76 5.1 例1 规划MFC应用程序 76 5.2 例2 用AppWizard创建一个MFC 应用程序 79 5.3 例3 用ClassWizard创建一个类 83 5.4 例4 初始化应用程序屏幕 84 5.5 例5 保存应用...
本书通过85个实例全面讲述了应用MFC进行Visual C++编程的思想。每个实例均以编写一个应用程序要走的步骤编写。全书共分四部分进行介绍,第一部分是基础知识,第二部分讲述用户界面的实例,第三部分讲述MFC内部处理...
C++面向对象编程的一些总结,包括了继承、多态、以及深入探索C++对象模型中文版及其读书笔记