學堂在線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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM