首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

nyoj806 HEIHEI的心情值計算:根據星期幾求每日心情總和

     編輯:關於C語言

問題描述

HEIHEI 的每日心情值計算規則很有意思:週一至週五有課,晚上需寫作業,心情值固定為 0,故僅輸入上午、下午兩個數值,全天心情值為兩者之和;週六、週日放假,晚上打遊戲會產生心情值,需輸入上午、下午、晚上三個數值,全天心情值為三者之和。給定星期幾(英文全寫)與對應心情值,請計算並輸出該日總心情值。

輸入格式

第一行輸入一個整數 t(1 ≤ t ≤ 100),表示測試資料組數。接下來 t 行,每行第一項為星期幾(Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday),其後依序為該日心情值(週一至週五 2 個整數,週六、週日 3 個整數)。

輸出格式

對每組測試資料,輸出一行,即該日總心情值。

範例

輸入:
7
Sunday 21 11 71
Friday 27 44
Tuesday 29 34
Monday 13 18
Tuesday 73 5
Friday 35 85
Saturday 68 25 11

輸出:
103
71
63
31
78
120
104

解題思路

核心邏輯極簡單:判斷輸入的星期字串是否屬於工作日(前五項)或週末(後兩項)。可用字串陣列存放七天英文名,利用 strcmp 比對索引;索引 < 5 讀兩數求和,否則讀三數求和。時間複雜度 O(t),空間複雜度 O(1)。

參考程式碼

#include <stdio.h>
#include <string.h>

int main() {
    int t;
    char week[7][10] = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
    scanf("%d", &t);
    while (t--) {
        char day[10];
        int a, b, c = 0;
        scanf("%s", day);
        for (int i = 0; i < 7; ++i) {
            if (strcmp(day, week[i]) == 0) {
                if (i < 5) {
                    scanf("%d %d", &a, &b);
                    printf("%d\n", a + b);
                } else {
                    scanf("%d %d %d", &a, &b, &c);
                    printf("%d\n", a + b + c);
                }
                break;
            }
        }
    }
    return 0;
}

小結

本題考察基本字串比對與條件分支,適合入門練習。關鍵在於正確解析輸入格式差異,邏輯清晰即可輕鬆解決。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved