C++期末模拟

A. 一、会员积分(期末模拟)


答案正确/AC
提交人: 2021150044问题ID: 213测验ID: 201语言: cpp提交日期: 2022-06-14 16:05:28

1
答案正确/AC
3.34MB
3
3
2
答案正确/AC
3.18MB
3
3
样例查看模式: 
正常显示
查看格式
语言: 
C++
主题: 
solarized
1
#include<iostream>
2
using namespace std;
3
#include<string>
4
class metal
5
{
6
private:
7
    int y;//yindu
8
    int m;//zliang
9
    int v;//tiji
10
public:
11
    metal(){}
12
    metal(int y1, int m1, int v1) :y(y1), m(m1), v(v1) {};
13
    friend metal& operator+(metal& x,metal &y) {
14
        x.y += y.y;
15
        x.m += y.m;
16
        x.v += y.v;
17
        return x;
18
    }
19
    friend metal& operator*(metal& m, int n) {
20
        m.v *= n;
21
        return m;
22
    }
23
    friend metal& operator++(metal& m) {
24
        m.m += (0.1 * m.m);
25
        m.v += (0.1 * m.v);
26
        m.y += 1;
27
        return m;
28
    }
29
    friend metal operator--(metal& m, int) {
30
        metal a(m);
31
        m.m *= 0.9;
32
        m.v *= 0.9;
33
        m.y *= 0.9;
34
        return a;
35
    }
36
    void print() {
37
        cout << "硬度" << y << "--重量" << m << "--体积" << v << endl;
38
    }
39
};
40
int main() {
41
    int y, m, v, n;
42
    cin >> y >> m >> v;
43
    metal m1(y, m, v);
44
    cin >> y >> m >> v;
45
    metal m2(y, m, v);
46
    cin >> n;
47
    metal m3 =m1;
48
    (m1 + m2).print();
49
    m1 = m3;
50
    (m3 * n).print();
51
    (++m1).print();
52
    m2--;
53
    m2.print();
54
}

问题反馈
2022年6月14日 星期二 18:41:32

Powered by SZU Version: v22.05.23-7ab85d76 (2022.05.23)

language: 
中文
 | 
English

B. 二、金属加工(期末模拟)


答案正确/AC
提交人: 2021150044问题ID: 214测验ID: 201语言: cpp提交日期: 2022-06-14 15:13:01

1
答案正确/AC
3.43MB
4
16
2
答案正确/AC
3.43MB
0
19
样例查看模式: 
正常显示
查看格式
语言: 
C++
主题: 
solarized
1
#include<iostream>
2
using namespace std;
3
#include<string>
4
class Member {
5
protected:
6
    int number;
7
    int grade;
8
    string name;
9
public:
10
    Member() {}
11
    Member(int num, int g, string n) :number(num), grade(g), name(n) {}
12
    virtual void print() {
13
        cout << "普通会员"<<number << "--" << name << "--" << grade << endl;
14
    }
15
​
16
    virtual void ADD(int money) {
17
        grade += money;
18
    }
19
    virtual int  Exchange(int x) {
20
        int money = x / 100;
21
        grade -= money * 100;
22
        return money;
23
    }
24
};
25
​
26
class VIP :public Member
27
{
28
    int addrate;
29
    int exchangerate;
30
public:
31
    VIP() {}
32
    VIP(int number, int grade, string name, int add, int exchange) :Member(number, grade, name) {
33
        addrate = add;
34
        exchangerate = exchange;
35
    }
36
     void ADD(int money) {
37
        grade += (money * addrate);
38
    }
39
    int Exchange(int x) {
40
        int money = x / exchangerate;
41
        grade -= money * exchangerate;
42
        return money;
43
    }
44
    void print() {
45
        cout << "贵宾会员" << number << "--" << name << "--" << grade << endl;
46
    }
47
};
48
​
49
int main()
50
​
51
{
52
    Member* pm; 
53
    int number, grade;
54
    string name;
55
    cin >> number >> name >> grade;
56
    Member mm(number, grade, name);
57
    pm = new Member(mm);
58
    int m1, m2;
59
    cin >> m1>> m2;
60
    pm->ADD(m1);
61
    pm->Exchange(m2);
62
    pm->print();
63
    int addrate, exchangerate;
64
    cin >> number >> name >> grade >> addrate >> exchangerate;
65
    VIP vv(number, grade, name, addrate, exchangerate);
66
    pm = new VIP(vv);
67
    cin >> m1>> m2;
68
    pm->ADD(m1);
69
    pm->Exchange(m2);
70
    pm->print();
71
    return 0;
72
}

问题反馈
2022年6月14日 星期二 18:41:23

Powered by SZU Version: v22.05.23-7ab85d76 (2022.05.23)

language: 
中文
 | 
English

C. 三、加密模板(期末模拟)

//头文件区域
#include <iostream>
#include<math.h>
using namespace std;
template <class T>
T Max(T* t, int n) {
	T max = *t;
	for (int i = 0; i < n; i++) {
		if (max < *(t + i)) max = *(t + i);
	}
	return max;
}
template <class T>
class Cryption {

	T ptxt[100];//明文

	T ctxt[100];//密文

	T key;//密钥

	int len;//长度

public:

	Cryption(T tk, T tt[], int tl); //参数依次对应密钥、明文、长度

	void Encrypt(); //加密

	void Print() //打印,无需改造

	{
		int i;

		for (i = 0; i < len - 1; i++)

			cout << ctxt[i] << " ";

		cout << ctxt[i] << endl;

	}

};
template<class T>
void Cryption<T>::Encrypt() {
	T t = Max(ptxt, len);
	for (int i = 0; i < len; i++)
		if (t > ptxt[i]) ctxt[i] = t - ptxt[i];
		else ctxt[i] = ptxt[i] - t;
	for (int i = 0; i < len; i++)
		ctxt[i] += key;
}
template<class T>
Cryption<T>::Cryption(T tk, T tt[], int t1) {
	key = tk;
	len = t1;
	for (int i = 0; i < t1; i++)
		ptxt[i] = tt[i];
}

int main()

{
	int i;

	int length; //长度

	int ik, itxt[100];

	double dk, dtxt[100];

	char ck, ctxt[100];

	//整数加密

	cin >> ik >> length;

	for (i = 0; i < length; i++)

		cin >> itxt[i];

	Cryption<int> ic(ik, itxt, length);

	ic.Encrypt();

	ic.Print();

	//浮点数加密

	cin >> dk >> length;

	for (i = 0; i < length; i++)

		cin >> dtxt[i];

	Cryption<double> dc(dk, dtxt, length);

	dc.Encrypt();

	dc.Print();

	//字符加密

	cin >> ck >> length;

	for (i = 0; i < length; i++)

		cin >> ctxt[i];

	Cryption<char> cc(ck, ctxt, length);

	cc.Encrypt();

	cc.Print();

	return 0;

}

D.四、加湿风扇(期末模拟)


答案正确/AC
提交人: 2021150044问题ID: 211测验ID: 201语言: cpp提交日期: 2022-06-14 17:04:17

1
答案正确/AC
3.44MB
3
7
2
答案正确/AC
3.37MB
3
4
样例查看模式: 
正常显示
查看格式
语言: 
C++
主题: 
solarized
35
    jiashiqi() {}
36
    jiashiqi(int x, int y, float m, float n) :jiadian(x, y) {
37
        realwater = m;
38
        maxwater = n;
39
    }
40
    int yujin() {
41
        if (realwater >= 0.5 * maxwater) return 1;
42
        if (realwater >= 0.1 * maxwater) return 2;
43
        return 3;
44
    }
45
};
46
class fanpro :virtual public jiashiqi, virtual public fan {
47
    int dangwei;
48
public:
49
    fanpro() { dangwei = 0; }
50
    fanpro(int x, int y, int m, int n, float f1, float f2, int dw) :jiashiqi(x, y, f1, f2),fan(x,y),jiadian(x,y) {
51
        direct(m);
52
        fl(n);
53
        dangwei = dw;
54
    }
55
    void oper(int x) {
56
        dangwei = x;
57
        if (x == 1) {
58
            direct(0);
59
            fl(1);
60
        }
61
        if (x == 2) {
62
            direct(1);
63
            fl(2);
64
        }
65
        if (x == 3) {
66
            direct(1);
67
            fl(3);
68
        }
69
    }
70
    void print() {
71
        cout << "加湿风扇--档位" << dangwei << endl;
72
        cout << "编号" << no<< "--功率" <<p << "W" << endl;
73
        if (fenxian)
74
            cout << "旋转吹风--风力" << fenli << "级" << endl;
75
        else
76
            cout << "定向吹风--风力" << fenli << "级" << endl;
77
        cout << "实际水容量" << realwater << "升--水量";
78
        if (yujin() == 1)cout << "正常" << endl;
79
        else if (yujin() == 2)cout << "偏低" << endl;
80
        else if (yujin() == 3)cout << "不足" << endl;
81
​
82
    }
83
};
84
int main() {
85
    int t;
86
    int no, gl, fx, fl, dangwei, op;
87
    float real, max;
88
    cin >> t;
89
    while (t--) {
90
        cin >> no >> gl >> fx >> fl >> real >> max >> dangwei;
91
        cin >> op;
92
        fanpro f(no, gl, fx, fl, real, max, dangwei);
93
        f.oper(op);
94
        f.print();
95
    }
96
}

问题反馈
2022年6月14日 星期二 18:40:48

Powered by SZU Version: v22.05.23-7ab85d76 (2022.05.23)

language: 
中文
 | 
English

E. 五、计重转换(期末模拟)

#include <iostream>
#include<math.h>
#include<cstring>
using namespace std;
class CN; //提前声明

class EN; //提前声明

class Weight { //抽象类

protected:

	char kind[20]; //计重类型

	int gram; //克

public:

	Weight(const char tk[] = "no name", int tg = 0)

	{
		strcpy(kind, tk);

		gram = tg;

	}

	virtual void Print(ostream& out) = 0; //输出不同类型的计重信息

};
void Weight::Print(ostream& out) {

}

class CN : public Weight {
	int jin;
	int lian;
	int qian;
public:
	CN() {}
	CN(int j, int l, int q, int g, const char a[]) :Weight(a, g) {
		jin = j;
		qian = q;
		lian = l;
	}
	void Convert(int w) {
		jin = w / 500;
		lian = (w % 500) / 50;
		qian = (w % 50) / 5;
		gram = w % 5;
	}
	void Print(ostream& out) {
		out << "中国计重:" << jin << "斤" << lian<<"两" << qian<<"钱" <<gram<< "克"<<endl;
	}
};

class EN : public Weight { //英国计重
	int bang;
	int gusi;
	int dalan;
public:
	EN() {}
	EN(int b, int g, int d, int x,const char a[]) :Weight(a, x) {
		bang = b;
		gusi = g;
		dalan = d;
	}
	void Convert(int w) {
		bang = w / 512;
		gusi = (w % 512) / 32;
		dalan = (w % 32) / 2;
		gram = w % 2;
	}
	 operator CN() {
		 int g = bang * 512 + gusi * 32 + dalan * 2 + gram;
		 int jin, lian, qian, gr;
		 jin = g / 500;
		 lian = (g % 500) / 50;
		 qian = (g % 50) / 5;
		 gr = g % 5;
		 CN c(jin, lian, qian, gr, "中国计重");
		 return c;
	}
	void Print(ostream& out) {
		out << "英国计重:" << bang << "磅" << gusi << "盎司" << dalan << "打兰" << gram << "克"<<endl;
	}
};
//以全局函数方式重载输出运算符,代码3-5行....自行编写
//重载函数包含两个参数:ostream流对象、Weight类对象,参数可以是对象或对象引用
ostream& operator<<(ostream& o,Weight& w) {
	w.Print(o);
	return o;
}
int main()//主函数

{
	int tw;

	//创建一个中国计重类对象cn

	//构造参数对应斤、两、钱、克、类型,其中克和类型是对应基类属性gram和kind

	CN cn(0, 0, 0, 0, "中国计重");

	cin >> tw;

	cn.Convert(tw); //把输入的克数转成中国计重

	cout << cn;

	//创建英国计重类对象en

	//构造参数对应磅、盎司、打兰、克、类型,其中克和类型是对应基类属性gram和kind

	EN en(0, 0, 0, 0, "英国计重");

	cin >> tw;

	en.Convert(tw); //把输入的克数转成英国计重

	cout << en;

	cn = en; //把英国计重转成中国计重

	cout << cn;

	return 0;

}

F. 附加题、组链表与通讯录(期末模拟)

不会略略略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值