第一題:“魚額寶”
題目描述
請實現一個“魚額寶”類,下面已給出代碼模板,請根據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; }