功能描述:学生成绩处理,计算平均成绩,最高成绩人数最低成绩人数,及标准差。
输入参数:num-学生个数
score[i]存储成绩
返 回 值:最高成绩,最低成绩,平均值,标准差,最高最低成绩人数,最高成绩学生学号
其他说明:无
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
void input_score(int s[],int n);//输入每个学生成绩的函数
int get_max_score(int s[],int n);//获得最大值的函数
int get_min_score(int s[],int n);//最小值函数
double get_avg_score(int s[],int n);//平均值函数
double get_stdev_score(int s[],int n);//标准差函数
int count(int x,int s[],int n);//统计函数
void output_index(int x,int s[],int n);//统计号码
int main()
{
int score[50];//定义个数组
int num;//学生人数
int max_score,min_score;//最大值最小值
printf("小组共有多少名同学:");
scanf("%d",&num);
input_score(score,num);//输入学生成绩
max_score=get_max_score(score,num);//最大值赋予最大值函数
printf("最高成绩:%d,共有%d 人\n",max_score,count(max_score,score,num));
min_score=get_min_score(score,num);//最小值赋予最小值函数
printf("最低成绩:%d,共有%d 人\n",max_score,count(min_score,score,num));
printf("平均成绩:%.2f\n",get_avg_score(score,num));
printf("标准差成绩:%.2f", get_stdev_score(score,num));
printf("获最高成绩的学生有:");
output_index(min_score,score,num);
printf("\n");
return 0;
}
void input_score(int s[],int n)//输入学生成绩
{
int i;
for(i=0; i<n; i++)
{
printf("第%d位同学成绩:",i);
scanf("%d",&s[i]);
}
return ;//空类型不返回
}
int get_max_score(int s[],int n)//里面两个类型分别代表学生成绩数组和学生人数
{
int i,HighScore=0;
for(i=0; i<n; i++)//判断最大值
{
if(s[i]>=HighScore)
HighScore=s[i];
}
return HighScore;
}
int get_min_score(int s[],int n)//判断最小值
{
int i,LowScore=100;
for(i=0; i<n; i++)
{
if(s[i]<=LowScore)
LowScore=s[i];
}
return LowScore;
}
double get_avg_score(int s[],int n)//计算平均值
{
int sum=0,i;//初始化sim
for(i=0;i<n;i++)
{
sum+=s[i];
}
return sum/n;
}
double get_stdev_score(int s[], int n)//求方差
{
int i,sum=0;
double average,S;
average=get_avg_score(s,n);//调用函数计算平均值
for(i=0;i<n;i++)
sum+=(s[i]-average)*(s[i]-average);
S=sqrt((sum)/(n-1));
return S;
}
int count(int x, int s[], int n)//计算最高分人数
{
int count1=0,i;
for(i=0;i<n;i++)
{
if(s[i]==x)
count1++;
}
return count1;
}
void output_index(int x, int s[], int n)//最高分学生
{
int i;
for(i=0;i<16;i++)
{
if(s[i]==x)
printf("%d ",i);
}
return ;
}