實驗3-7 統計學生成績 (15 分)


本題要求編寫程序讀入N個學生的百分制成績,統計五分制成績的分布。百分制成績到五分制成績的轉換規則:

  • 大於等於90分為A;
  • 小於90且大於等於80為B;
  • 小於80且大於等於70為C;
  • 小於70且大於等於60為D;
  • 小於60為E。

輸入格式:

輸入在第一行中給出一個正整數N(≤1000),即學生人數;第二行中給出N個學生的百分制成績,其間以空格分隔。

輸出格式:

在一行中輸出A、B、C、D、E對應的五分制成績的人數分布,數字間以空格分隔,行末不得有多余空格。

輸入樣例:

7
77 54 92 73 60 65 69

輸出樣例:

1 0 2 3 1

代碼:

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

# define LENGTH 1000
int main() {
    int N,i,j,m = 0;
    scanf("%d",&N);
    int scores[LENGTH];
    int persons[5] = {0};
    for (i=0;i<N;i++) {
        // 依次輸入N個學生的成績到數組中
        scanf("%d",&scores[i]);
    }
    // 注意此時的i和N一樣大,所以j要小於i
    for (j=0;j<i;j++) {
        if (scores[j] >= 90) persons[0] += 1;
        else if (scores[j] >= 80) persons[1] += 1;
        else if (scores[j] >= 70) persons[2] += 1;
        else if (scores[j] >= 60) persons[3] += 1;
        else persons[4] += 1;
    }
    while(m < 5) {
        if (m < 1) {
            printf("%d",persons[m]);
        }
        else {
            printf(" %d",persons[m]);
        }
        m += 1;
    }
    return 0;
}

提交截圖:

在這里插入圖片描述

解題思路:

這道題解法很多的,除了可以用數組來接收值外,也可以使用字符串操作(本質上是字符數組……),其中要注意的一點是i第一層循環最后一次是i=N這時候下層循環要注意j<i,不能是j <= i,否則會導致輸出的數值之和比N大了1!這顯然是不對的!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM