类还是不是很会,完蛋,歇菜了,感觉写的四不像
时间限制: 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;
}
时间限制: 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;
}
时间限制: 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;
}
时间限制: 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;
}