学堂在线TsinghuaX: 00740043X C++语言程序设计基础 第五章Lab

第一题:“鱼额宝”

题目描述

请实现一个“鱼额宝”类,下面已给出代码模板,请根据main函数中对该类的操作,补充类实现部分完成代码。

“鱼额宝”类可以记录账户余额、存钱、取钱、计算利息。该类中有一个私有静态成员变量profitRate存储“鱼额宝”的利率,可以用共有静态成员函数setProfitRate修改利率的值。程序输入为第1天至第n天连续n天的账户操作,每天只能进行一次账户操作,或存或取,每一天产生的利息是前一天的账户余额与“鱼额宝”利率的乘积,产生的利息当天也将存入账户余额,由于第1天之前账户不存在,所以第1天一定是新建账户并存钱,且当天不会有利息存入余额。程序在接受n天操作的输入后,要求计算出第n天操作完成后的账户余额并输出。代码如下:

#include <iostream>
using namespace std;

class Yuebao
{
static double profitRate;
public:
    static void setProfitRate(double rate);
/* Your code here! */
};

int main()
{
    int n;
    while(cin >> n)
    {
        double profitRate;
        cin >> profitRate;
        Yuebao::setProfitRate(profitRate);//设定鱼额宝的利率
        Yuebao y(0); //新建鱼额宝账户,余额初始化为0
        int operation;//接受输入判断是存还是取
        double amount;//接受输入存取金额
        for (int i = 0; i < n; ++i)
        {
            y.addProfit();//加入前一天余额产生的利息
            cin >> operation >> amount;
            if (operation == 0)
                y.deposit(amount);//存入金额
            else
                y.withdraw(amount);//取出金额
        }
        cout << y.getBalance() << endl;//输出最终账户余额
    }
    return 0;
}

输入描述

每个测例共n+2行

第1行输入一个整数n,表示接下来有n天的操作

第2行输入一个实数,为“鱼额宝”的利率,n天中利率不变

接下来有n行,代表n天的操作,每行有2个数,第1个数或0或1,0表示存钱,1表示取钱,第二个实数为存取的金额

1 <= n <= 20

输出描述

对于每一个测例,输出第n天操作完成后的账户余额

样例输入

3
0.1
0 10
0 10
1 10

样例输出

13.1
#include<iostream>
using namespace std;
class Yuebao
{
    static double profitRate;
    double balance;
public:
    //static void setProfitRate(double rate);
    Yuebao (double newSet)
    {
        balance = newSet;
    }
    static void setProfitRate(double rate)
    {
        profitRate = rate;
    }
    void addProfit()
    {
        balance = balance * (1 + profitRate);
    }
    void deposit(double amount)
    {
        balance += amount;
    }
    void withdraw(double amount)
    {
        balance -= amount;
    }
    double getBalance()
    {
        return balance;
    }
};
double Yuebao::profitRate = 0;
int main()
{
    int n;
    while(cin >> n)
    {
        double profitRate;
        cin >> profitRate;
        Yuebao::setProfitRate(profitRate);//设定鱼额宝的利率
        Yuebao y(0); //新建鱼额宝账户,余额初始化为0
        int operation;//接受输入判断是存还是取
        double amount;//接受输入存取金额
        for (int i = 0; i < n; ++i)
        {
            y.addProfit();//加入前一天余额产生的利息
            cin >> operation >> amount;
            if (operation == 0)
                y.deposit(amount);//存入金额
            else
                y.withdraw(amount);//取出金额
        }
        cout << y.getBalance() << endl;//输出最终账户余额
    }
    return 0;
}

第二题:数老鼠

题目描述

请实现一个老鼠类,下面已给出代码模板,请根据main函数中对该类的操作,补充类实现部分完成代码。

该类有个公有静态变量num记录该类的所有对象数,主函数将会在不同语句之后输出对象数,只有正确地实现该类,保证num正确记录该类的对象数,才能输出正确的结果。

#include <iostream>
using namespace std;

class Mouse{
/* Your code here! */
};

void fn(Mouse m);

int main()
{
    Mouse::num = 0;
    Mouse a;
    cout << Mouse::num << endl;
    Mouse b(a);
    cout << Mouse::num << endl;
    for (int i = 0; i < 10; ++i)
    {
        Mouse x;
        cout << Mouse::num << endl;
    }
    fn(a);
    cout << Mouse::num << endl;
    return 0;
}

void fn(Mouse m)
{
    cout << Mouse::num << endl;
    Mouse n(m);
    cout << Mouse::num << endl;
}

输入描述 

输出描述

主函数的输出已经写好

答案:

#include <iostream>
using namespace std;

class Mouse{
public:
    static int num;
    Mouse(){num++;}
    Mouse(const Mouse &m){num++;};
    ~Mouse(){num--;}
};
int Mouse::num=0;
void fn(Mouse m);

int main()
{
    Mouse::num = 0;
    Mouse a;
    cout << Mouse::num << endl;
    Mouse b(a);
    cout << Mouse::num << endl;
    for (int i = 0; i < 10; ++i)
    {
        Mouse x;
        cout << Mouse::num << endl;
    }
    fn(a);
    cout << Mouse::num << endl;
    return 0;
}

void fn(Mouse m)
{
    cout << Mouse::num << endl;
    Mouse n(m);
    cout << Mouse::num << endl;
}
时间: 2024-08-01 10:46:22

学堂在线TsinghuaX: 00740043X C++语言程序设计基础 第五章Lab的相关文章

学堂在线TsinghuaX: 00740043X C++语言程序设计基础 第二章Lab

第一题:简单题目(求和,最大值,最小值) 题目描述 任意给定n个整数,求这n个整数序列的和.最小值.最大值 输入描述 输入一个整数n,代表接下来输入整数个数,n<=100,接着输入n个整数,整数用int表示即可. 输出描述 输出整数序列的和.最小值.最大值.用空格隔开,占一行 样例输入 21 2 样例输出 3 1 2 #include<iostream> using namespace std; int main() { int n,a,i,sum=0,min=0,max=0; cin&

TsinghuaX: 00740043X C++语言程序设计基础 第四章提纲

第4章(一) 本章导学 程序中的对象是现实中对象的模拟,具有属性和功能/行为: 抽象出同一类对象的共同属性和行为,形成类,对象是类的实例: 类将数据和处理数据的函数封装在一起,隐藏内部细节,提供对外访问接口: 定义对象时,可以通过构造函数进行初始化: 删除对象时,可以通过析构函数释放资源 一个类的对象可以由其他类的对象组合而成,即类的成员可以是其他类的对象: 在这一章,我们还将学习结构体.联合体和枚举类 面向对象程序设计的基本特点 抽象 对同一类对象的共同属性和行为进行概括,形成类. 先注意问题

学堂在线TsinghuaX: 00740043_2X C++语言程序设计进阶 第六章Lab

第一题:最大子数组和 题目描述 给定一个数组a[0,...,n-1],求其最大子数组(长度>=1)和 输入描述 第一行一个整数n(1<=n<=5000),然后依次输入n个整数(每个整数范围[-5000, 5000]) 输出描述 输出一个整数表示最大子数组和 样例输入 5 1 -1 1 1 -1 样例输出 2 #include<stdio.h> int maxSum(int *a,int n) { int max=-1; int i,j,sum; for(i=0;i<n;

学堂在线TsinghuaX: 00740043_2X C++语言程序设计进阶 第七章Lab

第一题:账户类 题目描述 定义一个基类Account,数据成员包含string类变量userName用于保存账户主人姓名,函数成员包括默认构造函数.带参构造函数用于初始化数据成员和输出姓名的成员函PrintName().从Account类派生出CreditAccount类,增加整型数据成员credit用于记录该用户信用额度,函数成员包括带参构造函数用于初始化数据成员和输出账户信息的成员函数PrintInfo().要求:在函数PrintInfo()中需要调用基类的成员函数PrintName().填

程序设计基础 第五章 选择结构的程序设计(知识点)

第五章  选择结构的程序设计 第一部分: 总结 1根据某种条件的成立与否而采用不同的程序段进行处理的程序结构称为选择结构 2C语言的选择语句包括if 和switch语句 3使用break语句,可以中断switch语句的执行. 4使用goto 语句,可以将程序执行流程无条件专项. 第二部分: 分别简述 5.1用if语句设计选择结构程序 5.1.1  简单的if语句 使用条件:满足条件就执行,不满足就不执行. 格式: If(表达式){语句1} 5.1.2    if_else语句 格式: If(表达

学堂在线TsinghuaX: 00740043_2X C++语言程序设计进阶 第八章Lab

第一题:复数加减乘除 题目描述 求两个复数的加减乘除. 要求使用c++ class编写程序.可以创建如下class #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; class Complex{ public: Complex(double r = 0.0, double i = 0.0): real(r), i

Java语言程序设计基础篇 循环(四)

①打印:***** **** *** ** * for(int x=1; x<=5; x++) { for(int y=x; y<=5; y++) { System.out.print("*"); //向下一般的格式for(int y=x; y<=5; y++) } System.out.println(); } ②打印:* ** *** **** ***** for (int x=1; x<=5 ;x++ ) { for (int y=1;y<=x ;y

Java语言程序设计基础篇 方法(五)

生成随机字符 生成随机字符就是生成0到65535之间的一个随机整数,因为0<=Math.random()<1.0,必须在65535+1 (int) (Math.random() * (65535+1)) 随机生成小写字母 public class RandomCharacter { public static char getRandomCharacter(char ch1,char ch2){ return (char)(ch1 +Math.random() * (ch2 - ch1 + 1

Java语言程序设计基础篇 循环(四)练习

*4.21(计算不同利率下的贷款)编写程序,让用户输入贷款总额及以年为单位的贷款期限,以1/8为递增量,显示从5%到8%的利率下每月支付额和总偿还额.假设输入贷款总量为10 000,还贷期限为5年,所显示的输出如下: 贷款总额:to 000 年数:5 利率月支付额总偿还额 5%188 .71   11322.74 5 .125%189.28   11357.13 5 .25%189.85   11391.59 ... //Exercise3_26.java: displays the month