处理学生成绩

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define N 10
/*函数原型*/
float *high(float *a);
float *low(float *a);
float *mid(float *a);
/*主函数*/
int main(void)
{
float ID[N],Grade[N];
int t;
for(t=0;t<N;t++)
{
printf("请输入第%d位同学的ID号和C语言成绩:",t+1);
scanf("%f%f",&ID[t],&Grade[t]);
}
/*最佳学生*/
float *Max=high(Grade);
for(t=0;t<N;t++)
{
if(*Max==Grade[t])
break;
}
printf("最佳学生的ID号为:%f,成绩为:%f\n",ID[t],Grade[t]);
/*最差学生*/
float *Min=low(Grade);
for(t=0;t<N;t++)
{
if(*Min==Grade[t])
break;
}
printf("最差学生的ID号为:%f,成绩为:%f\n",ID[t],Grade[t]);
/*最接近平均分的学生*/
float *Mid=mid(Grade);
for(t=0;t<N;t++)
{
if(*Mid==Grade[t])
break;
}
printf("最接近平均分的学生的ID号为:%f,成绩为:%f\n",ID[t],Grade[t]);
} /*end main*/

/*查找最高分并通过指针形参返回该参数及其数组索引*/
float *high(float *a)
{
float *max=a;
for(int i=0;i<N-1;i++)
{
if(*max<a[i+1])
{
max=&a[i+1];
}
}
return max;
}

/*查找最低分并通过指针形参返回改参数及其数组索引*/
float *low(float *a)
{
float *min=a;
for(int i=0;i<N-1;i++)
{
if(*min>a[i+1])
{
min=&a[i+1];
}
}
return min;
}

/*找最接近平均分的分数并通过指针形参返回改分数及其数组索引*/
float *mid(float *a)
{
float b[N],sum=0.0;
int i;
for(i=0;i<N-1;i++)
{
sum+=a[i];
}
for(i=0;i<N-1;i++)
{
b[i]=fabs(sum/N-a[i]);
}
float *min1_mid=b;
for(i=0;i<N-1;i++)
{
if(*min1_mid>b[i+1])
{
min1_mid=&b[i+1];
}
}
float *min2_mid=a;
for(i=0;i<N-1;i++)
{
if(*min1_mid==fabs(sum/N-a[i]))
{
min2_mid=&a[i];
}
}
return min2_mid;
}

 

posted @ 2017-05-26 16:10  HGR  阅读(216)  评论(0编辑  收藏  举报