bupt c++ 上机 (5)

类还是不是很会,完蛋,歇菜了,感觉写的四不像

问题 A: VC++实验7.2 矩形类

时间限制: 1 Sec  内存限制: 128 MB
提交: 653  解决: 375
[提交][状态]

题目描述

定义一个矩形类,长和宽是它的属性,可以求出矩形的面积。定义一个比较函数,比较两个矩形的面积,把面积大的矩形对象作为引用来返回。主函数中定义两个矩形,它们的长、宽已知,分别为矩形1:长5.2、宽4.3,矩形2:长100、宽20。再由键盘输入一个矩形的长、宽。调用比较函数进行比较,找出面积大的矩形,输出其面积。

输入:10 8

输出:2000

#include 
#include 
#include 
using namespace std;
class rect
{
public:
	rect(double X, double Y) {
		x = X, y = Y;
		sq = X * Y;
	};
	double getS() {return sq;}
private:
	double x, y;
	double sq;
};
int main() {
	rect c1(5.2, 4.3);
	rect c2(100, 20);
	double a, b;
	cin >> a >> b;
	rect c3(a, b);
	double ans = max(c1.getS(), max(c2.getS(), c3.getS()));
	cout << ans << endl;
	return 0;
}

问题 B: VC++实验7.3 三角类

时间限制: 1 Sec  内存限制: 128 MB
提交: 819  解决: 318
[提交][状态]

题目描述

定义一个Triangle三角形类,包括数据成员三边边长(int类型)、判断三角形形状的成员函数。键盘输入三角形三边边长,判断此三角形形状(其中,等腰直角三角形归为等腰三角形类)。

构成等边三角形,输出“A equileteral triangle”;

构成等腰三角形,输出“A isosceles triangle”;

构成直角三角形,输出“A right triangle”;

构成三角形,但不是以上三种,则输出“A triangle”;

不构成,输出“Not a triangle”。

输入:3 4 5

输出:A right triangle

#include 
#include 
#include 
using namespace std;
string s[5] = {"Not a triangle", "A triangle", "A right triangle", "A isosceles triangle", "A equileteral triangle"};
class Triangle
{
public:
	Triangle(int a, int b, int c){
		z = max(a, max(b, c)); 
		x = min(a, min(b, c)); 
		y = a + b + c - x - z;
	};
	int check();
	void print(){ cout << s[check()] << endl; };
private:
	int x, y, z;
};
int Triangle::check() {
	int flag(0);
	if (x + y > z && abs(x - y) < z) flag = 1;
	if (pow(x, 2) + pow(y, 2) == pow(z, 2)) flag = flag ? 2 : 0;
	if (x == y || y == z) flag = flag ? 3 : 0;
	if (x == y && y == z) flag = flag ? 4 : 0;
	return flag;
}
int main() {
	int i, j, k;
	cin >> i >> j >> k;
	Triangle ans(i, j, k);
	ans.print();
	return 0;
}

问题 C: VC++实验7.4 时间类

时间限制: 1 Sec  内存限制: 128 MB
提交: 889  解决: 278
[提交][状态]

题目描述

定义一个时间类,数据成员包括年、月、日,它的函数成员分别可以设置时间、显示时间,其中显示时间的函数,使用重载函数定义,遇到整型数值,则返回2017-5-30的格式,遇到浮点型数值,则输出2017年5月30日的格式。

输入:2017 5 30 1.1

输出:2017年5月30日

#include 
#include 
using namespace std;
class Clock
{
public:
	Clock(int y, int m, int d) {year = y, month = m, day = d;};
	void show(int flag) {
			printf ("%d-%d-%d\n", year, month, day);
	}
	void show(double flag){
			printf ("%d年%d月%d日\n", year, month, day);
	}
private:
	int year, month, day;
	bool flag = 0;
};
int main() {
	int a, b, c;
	string s;
	int k = 1;
	cin >> a >> b >> c >> s;
	int len = s.length();
	for (int i = 0; i < len; i++) 
		if (s[i] == '.') k = 0;
	Clock ans(a, b, c);
	if (k) ans.show(1);
	else ans.show(1.00);
	return 0;
}

问题 D: VC++实验7.5 员工薪金管理类

时间限制: 1 Sec  内存限制: 128 MB
提交: 380  解决: 257
[提交][状态]

题目描述

设计雇员Employee类,包含雇员的情况,工号、姓名、工资等级(每月工资数,整型数值)、受雇时间(年、月、日)。编写程序测试Employee类。要求输入任意员工工号,及当前日期(年、月,此日期应晚于受雇时间),输出该员工姓名接应得到的工资总额,中间用空格隔开。

已知当前所有员工信息如下:

1,"wang",5000,2000,10,23

2,"liu",4500,2008,1,20

3,"huo",3800,2003,7,3

4,"ma",5300,2015,4,10

5,"meng",6000,2016,3,16

输入:5 2016 5

输出:meng 12000

#include 
#include 
#include 
using namespace std;
class staff
{
public:
	staff(int id, string s, int money, int y, int m, int d);
	void payoff(int y, int r) {
		num = (y - eyear) * 12 + (r - emonth);
		num *= salary;
	}
	void print() {
		cout << name << " ";
		cout << num << endl;}
private:
	string name;
	int ID;
	int salary;
	int eyear, emonth, eday;
	int num;
};
staff::staff(int id, string s, int money, int y, int m, int d) {
	ID = id; name = s; salary = money;
	eyear = y, emonth = m, eday = d;
}

int main() {
	staff a[5] = {staff(1,"wang",5000,2000,10,23), 
				  staff(2,"liu",4500,2008,1,20),
				  staff(3,"huo",3800,2003,7,3),
				  staff(4,"ma",5300,2015,4,10),
				  staff(5,"meng",6000,2016,3,16)};
	int i, y, m;
	cin >> i >> y >> m;
	a[i - 1].payoff(y, m);
	a[i - 1].print();
	return 0;
}

 

你可能感兴趣的:(code,随笔)