#include<stdio.h>
#define M 30
void main()
{
	void score_fail(int *num,float  *score,int m);
	void num_gd(float *score,int m);
	void high_aver(int *num,float *score,int m,float aver);
	float stu_aver(float *score,int m);
	float stu_score[M];    /*存放一门课成绩(物理)*/
	int stu_num[M];        /*存放学号*/
	int n=0;               /*统计实际学生人数*/
	int num=9999;
	float score,aver;
	/*录入学号,物理成绩*/
	while(n<M&&score!=-1)
	{
		printf("\t\t请输入学号,结束时输入0:");
		scanf("%d",&num);
		printf("\t\t请输入物理成绩,输入-1结束:");
        scanf("%f,&score");
		if(score==-1) break;
		else {stu_num[n]=num;stu_score[n]=score;n++;}
	}
    aver=stu_aver(stu_score,n);
	high_aver(stu_num,stu_score,n,aver);
	score_fail(stu_num,stu_score,n);
	num_gd(stu_score,n);
}
/*统计个分数段人数及所占百分比*/
void score_fail(int *num,float *score,int m)
{
	int num_5=0;    /*统计不及格学生人数*/
	int i;
	printf("\t\t----------不及格名单如下---------------\n");
	printf("\t\t学号\t\t\t成绩\n");
	for (i=0;i<m;i++)
	for(i=0;i<m;i++)
		if(score[i]<60)
		{
			printf("\t\t%4d\t\t\t%3.0f\n",num[i],score[i]);
			num_5++;
		}
		printf("\t\t不及格人数为:%d\n",num_5);
}
/*统计各分数段人数及所占百分比*/
void num_gd(float *score,int m)
{
	int num_9=0;/*统计90分及以上学生人数*/
    int num_8=0;/*统计80分及以上学生人数*/
	int num_7=0;/*统计70分及以上学生人数*/
	int num_6=0;/*统计60分及以上学生人数*/
	int num_5=0;/*统计不及格学生人数*/
	float bl_9,bl_8,bl_7,bl_6,bl_5;
	for(int i=0;i<m;i++)
	{
		if(score[i]>=90)   num_9++;
		if(score[i]>=80&&score[i]<90)   num_8++;
		if(score[i]>=70&&score[i]<80)   num_7++;
		if(score[i]>=60&&score[i]<70)   num_6++;
		if(score[i]<60)    num_5++;
	}
	bl_9=(float)num_9/(float)m*100;
	bl_8=(float)num_8/(float)m*100;
	bl_7=(float)num_7/(float)m*100;
	bl_6=(float)num_6/(float)m*100;
	bl_5=(float)num_5/(float)m*100;
	printf("\t\t----------各分数段人数及所占百分比--------------");
	printf("\t\t90分以上人数:       %d,所占百分比%4.1f%%\n",num_9,bl_9);
	printf("\t\t80--90分以上人数:   %d,所占百分比%4.1f%%\n",num_8,bl_8);
	printf("\t\t70--79分以上人数:   %d,所占百分比%4.1f%%\n",num_7,bl_7);
	printf("\t\t60--69分以上人数:   %d,所占百分比%4.1f%%\n",num_6,bl_6);
	printf("\t\t60分以下人数:       %d,所占百分比%4.1f%%\n",num_5,bl_5);
}
/*输出高于平均分的学生名单*/
void high_aver(int *num,float *score,int m,float aver)
{
	int i;
	printf("\t\t-------高于平均分学生名单----------\n");
	printf("\t\t学号\t\t\t成绩\n");
	for(i=0;i<m;i++)
	   if(score[i]>aver)
		   printf("\t\t%d\t\t\t%4.1f\n",num[i],score[i]);
}
/*求平均分*/
float stu_aver(float *score,int m)
{
	int i;
	float aver=0.0;
	for(i=m-1;i>=0;i--)
	    aver+=score[i];
	aver/=m;
	return aver;
return 0;
}