計算機概論|HW5

題目敘述

請實作一程式,此程式可以要求使用者輸入 N 組資料,每一組資料的格式如下所示:

每組的資料格式

1
O N1 N2

O 為指令動作,只能是1或2。當O是1時,假設N1和N2的中最小值為MIN、最大值MAX,請輸出從MIN到MAX範圍內的整數和,包含MIN及MAX。 當O是2時,請輸出從MIN到MAX範圍內的整數乘積,包含MIN及MAX。

答題思路

可以考慮使用numeric 函式庫進行連續加法以及乘法。

連續加法

1
2
3
4
5
6
7
#include <numeric>

int main() {
    // computing its sum
    cout << accumulate(array, array+size, 0) << endl;
    return 0;
}

連續乘法乘法

1
2
3
4
5
6
7
8
9
#include <numeric>

int main() {
    // factorial by assigning a lambda function
    cout << accumulate(array, array+size, 1, [](int x, int y) {
        return x * y;
    }) << endl;
    return 0;
}

參考答案

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>

using namespace std;

int main(){
    int n;
    cin >> n;

    for(int i=0; i<n; i++) {
        int o, n1, n2, sum=0, product=1;
        cin >> o >> n1 >> n2;
        
        int minma = min(n1, n2);
        int maxma = max(n1, n2);
        
        if(o == 1) {
            for(int j=minma; j<=maxma; j++)
                sum += j;
            cout << sum << endl;
        }
        else if(o == 2) {
            for(int j=minma; j<=maxma; j++)
                product *= j;
            cout << product << endl;
        }
    }

    return 0;
}
最後更新 Oct 26, 2022 12:00 +0800