#40840: 解答 c++


hs210023@students.hshs.chc.edu ... (天底下最帥的那個男人)

學校 : 不指定學校
編號 : 274462
來源 : [39.9.190.55]
最後登入時間 :
2024-06-17 21:52:54
a244. 新手訓練 ~ for + if -- 新手訓練系列 ~ 1 | From: [27.247.62.93] | 發表日期 : 2024-06-14 19:26

你的程式碼已經非常清晰且有效率了,但這裡有一些小的優化建議,以進一步提升程式碼的可讀性和可靠性:

 

  1. **使用 int 型別來儲存 a**:由於 a 的取值範圍是 1 到 4,可以使用 int 型別來儲存 a
  2. 增加錯誤處理:雖然題目保證輸入不會有錯誤,但在實際應用中,增加一些基本的錯誤處理會更健壯。

 

以下是優化後的程式碼:
 
#include <stdio.h>

int main() {
    // 宣告並讀取變數N,代表測資筆數
    int N;
    scanf("%d", &N);

    // 使用for迴圈跑過每一筆測資
    for (int i = 0; i < N; i++) {
        // 宣告並讀取變數a、b、c
        int a;
        long long b, c;
        scanf("%d %lld %lld", &a, &b, &c);

        // 根據a值輸出相對應的結果
        switch (a) {
            // 若a為1,輸出b+c
            case 1:
                printf("%lld\n", b + c);
                break;
            // 若a為2,輸出b-c
            case 2:
                printf("%lld\n", b - c);
                break;
            // 若a為3,輸出b*c
            case 3:
                printf("%lld\n", b * c);
                break;
            // 若a為4,輸出b/c
            case 4:
                if (c != 0) { // 確保不會除以0
                    printf("%lld\n", b / c);
                } else {
                    printf("Error: Division by zero\n");
                }
                break;
            // 若a不在1到4之間,輸出錯誤訊息
            default:
                printf("Error: Invalid operation\n");
                break;
        }
    }

    return 0;
}

 

說明

 

  1. **使用 int 型別來儲存 a**:
    • 因為 a 的值範圍是 1 到 4,所以使用 int 型別來儲存 a 更合適。
  2. 增加錯誤處理
    • 在 case 4 中,增加了一個檢查 c 是否為 0 的條件,防止除以 0 的錯誤。
    • 增加了一個 default 情況來處理 a 不在 1 到 4 之間的情況,雖然根據題目保證這種情況不會發生,但這樣可以讓程式碼更加健壯。

 

這樣的程式碼不僅能正確處理題目中的所有輸入,還能在遇到異常情況時提供適當的錯誤訊息。希望這些優化對你有幫助!
 
ZeroJudge Forum