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