首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言 24 小時登入統計報表:陣列儲存、比例計算、最大最小值追蹤完整實作

     編輯:程式設計綜合問答

需求規格

  • 輸入:24 個整數,代表 0:00~23:00 每小時登入用戶數。
  • 輸出:格式化報表 (時間區間、人數、佔比%),並標註最大/最小值發生時段。

完整程式碼

#include <stdio.h>
#include <stdlib.h>

#define HOURS 24

int main() {
    int users[HOURS];
    int total = 0;
    
    // 1. 輸入與總和
    printf("請輸入 24 小時登入用戶數 (空白分隔):\n");
    for (int i = 0; i < HOURS; i++) {
        if (scanf("%d", &users[i]) != 1) return 1;
        total += users[i];
    }
    
    // 2. 輸出表頭
    printf("\n%-12s %-8s %s\n", "時間區間", "登入人數", "佔比(%)");
    
    // 3. 追蹤最大/最小
    int maxIdx = 0, minIdx = 0;
    for (int i = 0; i < HOURS; i++) {
        double pct = total ? (users[i] * 100.0 / total) : 0.0;
        printf("%02d:00-%02d:00  %-8d %.1f%%\n", i, (i+1)%24, users[i], pct);
        
        if (users[i] > users[maxIdx]) maxIdx = i;
        if (users[i] < users[minIdx]) minIdx = i;
    }
    
    // 4. 彙總資訊
    printf("\n最大登入人數 %d 發生在 %02d:00-%02d:00 之間\n",
           users[maxIdx], maxIdx, (maxIdx+1)%24);
    printf("最小登入人數 %d 發生在 %02d:00-%02d:00 之間\n",
           users[minIdx], minIdx, (minIdx+1)%24);
    
    return 0;
}

執行範例

請輸入 24 小時登入用戶數 (空白分隔):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

時間區間     登入人數 佔比(%)
00:00-01:00  1        0.7%
01:00-02:00  2        1.3%
...
22:00-23:00  23       15.3%
23:00-00:00  24       16.0%

最大登入人數 24 發生在 23:00-00:00 之間
最小登入人數 1 發生在 00:00-01:00 之間

關鍵技巧總結

  • 單次遍歷完成統計:輸入、累加總和、尋找極值索引同步進行,O(n) 時間、O(1) 額外空間。
  • 時間區間格式化:%02d:00-%02d:00 配合 (i+1)%24 處理跨午夜顯示。
  • 浮點數比例:users[i] * 100.0 / total 強制雙精度運算,避免整數除法截斷。
  • 輸入驗證:scanf 回傳值檢查,防止非數字輸入導致無限迴圈。

此程式展示了陣列處理、格式化輸出、極值追蹤等 C 語言基礎技能的綜合運用,適合初學者練習與面試熱身。

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