#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;
}