1.編寫一個要求用户輸入兩個整數的程序。該程序將計算並輸出這兩個整數之間(包括這兩個整數)所有整數的和。這裏假設先輸入較小的整數。例如,如果用户輸入的是2和9,則程序將指出2~9之間所有整數的和為44。
#include<iostream>
using namespace std;
int main() {
// 1. 接收用户的輸入,最小值、最大值
int min, max;
cout << "請輸入最小值:";
cin >> min;
cout << "請輸入最大值:";
cin >> max;
// 2. 計算
int sum = 0;
for (int i = min; i <= max; ++i) {
sum +=i;
}
// 3. 輸出
cout << min <<"~"<< max << "之間所有整數的和為" << sum << endl;
return 0;
}
xaye@orange:~/code/dev/17$ ./a.out
請輸入最小值:2
請輸入最大值:9
2~9之間所有整數的和為44
2.使用array對象(而不是數組)和Long double(而不是long 1ong)重新編寫程序清單5.4,並計算100!的值。
#include<iostream>
using namespace std;
#include <array>
int main() {
// 1. 定義數組把階乘存起來
int n = 100;
//long long factorials[n];
array<long double, 101> factorials;
// 2. for 循環計算階乘存到數組裏
factorials[0] = factorials[1] = 1;
for (int i = 2; i <= n; i++) {
// n! = n * (n - 1)!
factorials[i] = i * factorials[i - 1];
}
// 3. for 循環輸出階乘
cout << "100! = " << factorials[101] << endl;
return 0;
}
xaye@orange:~/code/dev/17$ ./a.out
100! = nan
3.編寫一個要求用户輸入數字的程序。每次輸入後,程序都將報告到目前為止,所有輸入的累計和。當用户輸入0時,程序結束。
#include<iostream>
using namespace std;
int main() {
// 1. 接收用户的輸入
int input;
cout << "請輸入一個數:";
cin >> input;
int sum = 0;
// 2. 計算輸出所有累計的和,0 退出
while (input != 0) {
sum +=input;
cout << "sum = " << sum << endl;
cout << "請再輸入一個數:";
cin >> input;
}
return 0;
}
xaye@orange:~/code/dev/17$ ./a.out
請輸入一個數:2
sum = 2
請再輸入一個數:3
sum = 5
請再輸入一個數:4
sum = 9
請再輸入一個數:5
sum = 14
請再輸入一個數:0
4.Daphne以10%的單利投資了100美元。也就是説,每一年的利潤都是投資的10%,即每年0美元:
利息=0.10X原始存款
而C1e0以5%的複利投資了100美元。也就是説,利息是當前存款(包括獲得的利息)的5%:
利息=0.05X當前存款
Cleo在第一年投資100美元的盈利是5%得到了105美元,下一年的盈利是105美元的5%即5.25美元,以此類推。
請編寫一個程序,計算多少年後,Cleo的投資價值才能超過Daphne的投資價值,並顯示此時兩個人的價值投資。
#include<iostream>
using namespace std;
int main() {
// 用什麼循環? 判斷條件用什麼?
double cleo_money = 100;
double daphne_money = 100;
double cleo_rate = 0.05;
double daphne_rate = 0.10;
int year = 0;
while (daphne_money >= cleo_money) {
// 分別計算當前的 cleo_money、daphne_money
year++;
daphne_money = 10 * year + 100;
cleo_money = cleo_money * cleo_rate + cleo_money;
}
// 輸出 year
cout << "第 " << year << " 年後,Cleo的投資價值才能超過Daphne的投資價值。" << endl;
cout<<"這時候,Cleo的投資價值是:"<< cleo_money << ",Daphne的投資價值是:"
<< daphne_money << endl;
return 0;
}
xaye@orange:~/code/dev/17$ ./a.out
第 27 年後,Cleo的投資價值才能超過Daphne的投資價值。
這時候,Cleo的投資價值是:373.346,Daphne的投資價值是:370
5.假設要銷售《C++For
Fools》一書。請編寫一個程序,輸入全年中每個月的銷售量(圖書數量,而不是銷售額)。程序通過循環,使用初始化為月份的字符串char*數組
(或string對象數組)逐月進行提示,並將輸入的數據存儲在一個int數組中,然後程序計算數組中各元素的總數,並報告這一年的銷售情況。
#include<iostream>
using namespace std;
int main() {
// 1. 月份初始化的字符串,存銷售額的 int 數組
const string months[12] = {"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"};
int numbers[12];
// 2. for 循環提示用户輸入
for (int i = 0; i < 12; i++) {
cout << "請輸入第" << months[i] << "的圖書數量";
cin >> numbers[i];
}
// 3. for循環計算總數
int sum = 0;
for (int i = 0; i < 12; i++) {
sum += numbers[i];
}
// 4. 輸出
cout << "這一年的銷售量為:" << sum << endl;
return 0;
}
xaye@orange:~/code/dev/17$ ./a.out
請輸入第1月的圖書數量1
請輸入第2月的圖書數量2
請輸入第3月的圖書數量3
請輸入第4月的圖書數量4
請輸入第5月的圖書數量5
請輸入第6月的圖書數量6
請輸入第7月的圖書數量7
請輸入第8月的圖書數量8
請輸入第9月的圖書數量9
請輸入第10月的圖書數量10
請輸入第11月的圖書數量1
請輸入第12月的圖書數量1
這一年的銷售量為:57