c语言求助 输入n个学生的考试成绩,求出其中最高分、最低分以及超过平均分的人数(使用动态分配)

如题所述

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

int main()
{
    int n,loop;
    int *score;
    int max,min,average;
    int num;

    printf("请输入学生人数:");
    scanf("%d",&n);

    score = (int *)malloc(sizeof(int) *n);
    if(score == NULL)
    {
        exit(0);
    }

    for(loop = 0; loop < n; loop++)
    {
        scanf("%d",&score[loop]);
        if(loop == 0)
        {
            max = min = average = score[0];
        }
        else
        {
            if(max < score[loop])
            {
                max = score[loop];
            }
            if(min > score[loop])
            {
                min = score[loop];
            }
            average += score[loop];
        }
    }

    average /= n;

    num = 0;
    for(loop = 0; loop < n; loop++)
    {
        if(score[loop] > average)
        {
            num++;
        }
    }

    printf("最高分为%d\n", max);
    printf("最低分为%d\n", min);
    printf("平均分为%d\n", average);
    printf("超过平均分人数为%d\n", num);

    free(score);

    return 0;
}

追问

     求得答案不对呀

追答

输入的时候要求10 20 30,是空格,不能使用,逗号,如果想使用,逗号,第二个scanf需要修改

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    
     。。。。省略
    for(loop = 0; loop < n; loop++)
    {
        scanf("%d,",&score[loop]);
        if(loop == 0)
        {
            max = min = average = score[0];
        }
        else
        {
            if(max < score[loop])
            {
                max = score[loop];
            }
            if(min > score[loop])
            {
                min = score[loop];
            }
            average += score[loop];
        }
    }
     省略。。。、。
 
    return 0;
}

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