成绩处理

来源:互联网 发布:gsx账号查询软件 编辑:程序博客网 时间:2024/04/30 06:56
 #include<stdio.h>
#include<math.h>
int main( )
{
    int score[50];    //保存成绩的数组,不会超过50名
    int num,i;        //小组人数
    printf("小组共有多少名同学?");
    scanf("%d", &num);
    printf("请输入学生成绩:\n");
    //输入num名同学的成绩
    for(i=0; i<num; i++)
        do
        {
            printf("输入第 %d 位同学的成绩:", i);
            scanf("%d", &score[i]);
        }
        while(score[i]<0||score[i]>100);
    //求最高成绩、最低成绩和平均成绩
    int max = -1,min=999,sum=0, ave;
    for(i=0; i<num; i++)
    {
        sum+=score[i];
        if(max<score[i])
            max= score[i];
        if(min>score[i])
            min = score[i];
    }
    ave=sum/num;
    printf("\n");
    printf("最高成绩为:%d,最低成绩为:%d,平均成绩为:%d\n", max, min, ave);
    //求考得最高成绩和最低成绩人数
    int max_num = 0, min_num =0;
    for(i=0; i<num; i++)
    {
        if(max==score[i])
            max_num++;
        if(min==score[i])
            min_num++;
    }
    //输出考得最高成绩的人数和学号
    printf("取得最高成绩 %d 分的共 %d 人,他们的学号是:", max, max_num);
    for(i=0; i<num; i++)
    {
        if(max==score[i])
            printf("%d ", i);
    }
    printf("\n");
    printf("取得最低成绩 %d 分的共 %d 人,他们的学号是:", min, min_num);
    //输出考得最低成绩的人数和学号
    for(i=0; i<num; i++)
    {

        if(min==score[i])
            printf("%d ", i);
    }
    printf("\n");
    //求出并输出标准偏差(选做)
    sum = 0;
    int x; //x表示成绩与均值之差
    for(i=0; i<num; i++)
    {
        x=score[i]-ave;//ave是前面求出的平均成绩
        sum+=x*x;
    }
    printf("标准偏差为:%.4f\n", sqrt((double)(sum)/(num-1)));
    return 0;
}

0 0