本題要求編寫程序讀入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!這顯然是不對的!