Cpp实验:继承和多态

目录

一、 实验目的和要求

二、 实验环境(实验设备)

三、 实验内容与结果

实验一:获得一个任意的随机整数

1. 程序功能:

2. 关键程序代码:

3. 程序运行结果:

实验二:创业贷款破产

1. 程序功能:

2. 关键程序代码:

3. 程序运行结果:

实验三:小游戏怪物的血量归零,玩家获胜

1. 程序功能:

2. 关键程序代码:

3. 程序运行结果:


一、 实验目的和要求

1. 掌握如何编写基类,如何通过继承基类的属性和函数编写派生类;

2. 掌握如何在派生类成员函数中调用基类的成员函数;

3. 了解虚函数和多态的应用;

4. 了解随机整数的获得方式:伪随机和真随机数。

二、 实验环境(实验设备)

软件:Windows7或Windows 10,Code Blocks

硬件:个人计算机

三、 实验内容与结果

实验一:获得一个任意的随机整数

1. 程序功能:

1.1 获得一个任意的随机整数。注意区分伪随机和真随机。

1.2 获得多个符合要求区间的随机整数。要求区间为[25,75]。

2. 关键程序代码:

1.#include <iostream>
2.#include <ctime>
3.
4.using namespace std;
5.
6.int main()
7.{
8.    srand(time(0));
9.    int i=5;
10.    while(i--)
11.    {
12.        cout<<rand()%26+25<<endl;
13.    }
14.    return 0;
15.}

3. 程序运行结果:

实验二:创业贷款破产

1. 程序功能:

小游戏:现在你家里给你了10000元的创业基金,你通过买卖商品,再赚到10000元则为成功。现在每次进货100个单价为50的商品,当手中持有的金额小于等于0时则停止进货。每个周期,销售商品的数量为手中持有的商品数的随机值(>0),价格为±50%波动,即为[25~75]之间随机值。当手中持有的商品数为0,且手中持有的金额小于0时,你便破产了。请在最终输出你是否成功的结果,并输出使用的周期数。该方案需要使用继承来实现。

2. 关键程序代码:

1.#include <iostream>
2.#include <ctime>
3.using namespace std;
4.
5.
6.class goods
7.{
8.    int price;
9.    int number;
10.
11.public:
12.    int  total_price1;
13.    static int payment1;
14.    static int total_number1;
15.    goods (int price,int number):price(price),number(number)
16.    {
17.        total_price1=number*price;
18.    }
19.
20.
21.};
22.//static float ::goods payment;
23.//static float ::goodstotal_number;
24.int goods::payment1=10000;
25.int goods::total_number1=0;
26.
27.class buy:public goods
28.{
29.public:
30.    buy(int price,int number):goods(price,number)
31.    {
32.        payment1=payment1-total_price1;
33.        total_number1=total_number1+number;
34.        cout<<"进货后,贷款为 "<<payment1<<"\t商品数量"<<total_number1<<endl;
35.    }
36.};
37.
38.class sell:public goods
39.{
40.public:
41.    sell(int price,int number):goods(price,number)
42.    {
43.        payment1=payment1+total_price1;
44.        total_number1=total_number1-number;
45.        cout<<"售出后,当前贷款 "<<payment1<<"\t货物数量 "<<total_number1<<endl;
46.    }
47.};
48.
49.
50.int main()
51.{
52.    buy b1(50,100);
53.    sell s1(50,100);
54.    srand(time(0));
55.    int n=0;
56.
57.    while(1)
58.    {
59.        if(b1.payment1>0)
60.        {
61.            b1=buy(50,100);   //每次进价不变,买的商品数不变
62.        }
63.
64.        int rate1=rand()%51+25;       //卖出时商品价格在(25,75)
65.        int rate2=rand()%b1.total_number1+1; //每次随机卖出商品数量(1,total_number1)
66.
67.        s1=sell(rate1,rate2);
68.
69.        if(b1.payment1<0 && b1.total_number1<=0)   //亏本了
70.        {
71.            cout<<"您破产了,周期为"<<n<<"次"<<endl;
72.            break;
73.        }
74.
75.        if(b1.payment1>20000)    //赚钱了
76.        {
77.            cout<<"您成功了,周期为"<<n<<"次"<<endl;
78.            break;
79.        }
80.        n++;
81.    }
82.
83.    return 0;
84.}

3. 程序运行结果:

实验三:小游戏怪物的血量归零,玩家获胜

1. 程序功能:

请将在关于多态和虚函数课堂上讲解的小游戏,使用自己的电脑进行尝试,并指出在第几次攻击时,怪物的血量归零,玩家获胜

请将代码和运行结果放入以下表格中正确的位置。

2. 关键程序代码:

1.#include <iostream>
2.#include <ctime>
3.using namespace std;
4.
5.
6.class monster
7.{
8.public:
9.    static int HP;
10.};
11.class player
12.{
13.public:
14.    static int att;
15.};
16.
17.int monster::HP=10000;
18.int player::att=100;
19.class  attack:public player,public monster
20.{
21.public:
22.    int n=0;
23.
24.    attack (){}
25.
26.
27.};
28.
29.int main()
30.{
31.    srand(time(0));
32.    attack a();   //不是指针类型报错
33.    monster *m;
34.    player *p;
35.    int n=0;
36.    while(1)
37.    {
38.        cout<<"野怪血量 "<<m->HP<<"\t物攻为 "<<p->att<<"\t进攻次数 "<<n<<endl;
39.       m->HP=m->HP-p->att;
40.       p->att=rand()%100+150;
41.       if(m->HP<=0)
42.       {
43.           cout<<"winning!!!"<<endl;
44.           break;
45.       }
46.       n++;
47.    }
48.    return 0;
49.}

3. 程序运行结果:

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

x陌北x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值