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

 我来答
风雷九州
推荐于2016-06-09 · TA获得超过3025个赞
知道大有可为答主
回答量:1127
采纳率:100%
帮助的人:411万
展开全部
#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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式