C语言编程:从键盘输入一个班学生某门课程的成绩,当输入成绩为负值时,输入结束,分别统计下列

考试用 有哪位大神会 拜托了!!
(1) 统计不及格人数
(2) 求平均分
(3) 统计平均分之上(包括等于平均分)人数
(4) 统计各个分数段的学生人数及其所占比例(分数段为:优秀90~100,良好80~89,一般60~79,不及格60以下)。
要求:将以上每一步骤的结果均输出,验证程序是否正确实现题目要求。
注:成绩为整数,成绩个数不超过20个。

#include <stdio.h>
 
int main() {
    int array[20], length, i;
    int tmp, sum = 0, average;
    int A = 0, B = 0, C = 0, D = 0, cnt = 0;
 
    for (i = 0; ; ++i) {
        scanf("%d", &tmp);
        if (tmp < 0) {
            break;
        }
        array[i] = tmp;
 
        sum += array[i];
        if (array[i] >= 90) {
            ++A;
        } else if (array[i] >= 80) {
            ++B;
        } else if (array[i] >= 60) {
            ++C;
        } else {
            ++D;
        }
    }
    length = i;
 
    //(1)
    putchar('\n');
    printf("%d\n", D);
 
    //(2)
    putchar('\n');
    average = sum/length;
    printf("%d\n", average);
 
    //(3)
    putchar('\n');
    for (i = 0; i < length; ++i) {
        if (array[i] >= average) {
            ++cnt;
        }
    }
    printf("%d\n", cnt);
 
    //(4)
    putchar('\n');
    printf("优秀:%d人,占%%%.2lf\n", A, 1.0*A/length*100);
    printf("良好:%d人,占%%%.2lf\n", B, 1.0*B/length*100);
    printf("一般:%d人,占%%%.2lf\n", C, 1.0*C/length*100);
    printf("不及格:%d人,占%%%.2lf\n", D, 1.0*D/length*100);
 
    return 0;
}

温馨提示:答案为网友推荐,仅供参考