使用联合体用三种模式保存成绩信息,并且输出。

#include<string>
#include<iostream>
using namespace std;
class ExamInfo {
private:
	string name;	//课程名称
	enum{ GRADE,PASS,PERCENTAGE }mode;	//(枚举类型表示)计分模式
	union {
		char grade;		//等级制的成绩
		bool pass;		//是否通过课程成绩
		int percent;	//百分制的成绩
	};
public:
	//三种构造函数,三种模式的初始化
	ExamInfo(string name, char grade) :name(name),mode(GRADE), grade(grade){}
	ExamInfo(string name, bool pass) :name(name), mode(PASS), pass(pass){}
	ExamInfo(string name, int percent) :name(name),mode(PERCENTAGE),percent(percent) {}
	void show();
};
void ExamInfo::show() {
	cout << name << ": ";
	switch (mode) {
	case GRADE:cout << grade;
		break;
	case PASS:cout << (pass ? "PASS" : "FAIL");
		break;
	case PERCENTAGE:cout << percent;
		break;
	}
	cout << endl;
}
int main() {
	ExamInfo course1("English", 'B');
	ExamInfo course2("Calculus", true);
	ExamInfo course3("C++ Programming", 85);
	course1.show();
	course2.show();
	course3.show();
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值