#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//第二题
void calcu(int);//处理和分数相关的功能
int main()
{
int num; //小组人数
printf("小组共有多少名同学?");
scanf("%d", &num);
if (num >= 50)
{
printf("输入人超过50,输入错误");
exit(0);
}
else
calcu(num);
return 0;
}
void calcu(int num)//输入num名同学的成绩
{
double std_dev = 0, ave, temp_sum = 0;//标准差
int count_max = 0, count_min = 0,sum=0;
int max_score[50], min_score[50];
int score[50]; //保存成绩的数组,不会超过50名
int i,temp_score;
int max, min;
printf("请输入学生成绩:\n");
for (i = 0; i < num; i++)
{
printf("请输入第%d名学生的成绩:", i + 1);
scanf("%d", &temp_score);
if (temp_score >= 0 && temp_score <= 100)
score[i] = temp_score;
else
{
printf("分数输入范围错误,请重新输入\n");
i--;
}
}
max = score[0];
min = score[0];
for (i = 0; i < num; i++)
{
sum += score[i];
if (score[i] >= max)
max = score[i];
if (score[i] <= min)
min = score[i];
}
ave = sum / num;
printf("最高成绩为%d,最低成绩为%d,平均成绩为%.1lf\n",max,min,ave);
for (i = 0; i < num; i++)
{
if (score[i] == max)
{
max_score[count_max] = i;
count_max++;
}
if (score[i] == min)
{
min_score[count_min] = i;
count_min++;
}
}
printf("取得最高分%d分共%d人,他们的学号是:", max, count_max);
for (i = 0; i < count_max; i++)
printf("%d ", max_score[i]+1);
printf("\n");
printf("取得最低分%d分共%d人,他们的学号是:", min, count_min);
for (i = 0; i < count_min; i++)
printf("%d ", min_score[i]+1);
printf("\n");
for (i = 0; i < num; i++)
{
temp_sum += (score[i] - ave)*(score[i] - ave);
}
temp_sum /= num - 1;
std_dev = sqrt(temp_sum);
printf("标准偏差为%.3lf\n", std_dev);
}