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

C++ 成績分段統計:隨機輸入負數結束,輸出各分數段分布人數

     編輯:程式設計疑難解答

題目要求

輸入若干成績(0-100),負數結束。統計各分數段人數並按格式輸出:
0~39: **
40~49: **
...
90~100: **

代碼實現

#include <iostream>
#include <string>
using namespace std;

int main() {
    int cnt[11] = {0}; // 索引 0-10 對應 0-9,10-19,...,100
    int score;
    while (cin >> score) {
        if (score < 0) break;
        if (score > 100) continue; // 可選:忽略非法分數
        int idx = score / 10;
        if (idx == 10) idx = 10; // 100 歸入第 10 段
        else if (idx < 4) idx = 3; // 0-39 合併為第 3 段(索引 3)
        cnt[idx]++;
    }
    const char* labels[] = {"0~39", "40~49", "50~59", "60~69", "70~79", "80~89", "90~100"};
    for (int i = 0; i < 7; ++i) {
        cout << labels[i] << " " << cnt[i+3] << endl; // 索引 3-9 對應 7 個段
    }
    return 0;
}

邏輯解析

  • 用長度 11 數組 cnt 覆蓋 0-100 全範圍(索引 = 分數/10)。
  • 0-39 合併:score/10 為 0,1,2,3 統一映射到索引 3。
  • 100 特判:100/10=10,單獨作為索引 10(對應 90-100 段)。
  • 輸出標籤陣列 labels 對應 7 個展示段,讀取 cnt[3] 到 cnt[9]。

擴展:動態分段

若分段邊界可配置,可用 vector> 存儲區間,遍歷判斷歸屬,通用性更強。

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