从键盘输入一个班(全班最多不超过30人)学生的某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:
统计不及格人数并打印不及格学生名单。
统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
统计各分数段的学生人数及所占的百分比。
编程要求
设计新函数统计各分数段的学生人数及所占的百分比。例如:
void GetDetail(float score[], int n);
测试说明
输入学生信息后,以及输出的格式为:
统计不及格人数并打印不及格学生名单,输出的内容为:
统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单,输出的内容为:
统计各分数段的学生人数及所占的百分比,输出的内容为:
注:分隔的空格数量为2个。
#include <stdio.h>
#define ARR_SIZE 30
int NumScore(long num[], float score[]);
int getFailInfo(float score[], long num[], int n);
float getAver(float score[], int n);
int GetAboveAver(long num[], float score[], int n);
void GetSubsection(float score[], int n);
int main(void)
{
int n,m,aboveAver;
float score[ARR_SIZE];
long num[ARR_SIZE];
printf("Please enter num and score until score<0:\n");
n = NumScore(num, score);
printf("Total students:%d\n", n);
printf("Fail:\n");
m = getFailInfo(score,num,n);
printf("Fail students = %d\n",m);
aboveAver = GetAboveAver(num,score,n);
printf("Above aver students = %d\n",aboveAver);
GetSubsection(score, n);
return 0;
}
int NumScore(long num[], float score[])
{
int i = 0,count = 0;
for(i=0; i<ARR_SIZE; i++)
{
scanf("%ld %f", &num[i], &score[i]);
count++;
if(score[i] < 0)
break;
}
return i;
}
int getFailInfo(float score[], long num[], int n)
{
int i,count = 0;
printf("number--score\n");
for(i=0; i<n; i++)
{
if(score[i] < 60)
{
count++;
printf("%ld------%.0f\n",num[i],score[i]);
}
}
return count;
}
float getAver(float score[], int n)
{
int i;
float sum = 0.0;
for(i=0; i<n; i++)
{
sum += score[i];
}
return sum/n;
}
int GetAboveAver(long num[], float score[], int n)
{
int count = 0;
int i;
float aver;
aver = getAver(score,n);
printf("aver = %f\n",aver);
printf("Above aver:\n");
printf("number--score\n");
for(i=0; i<n; i++)
{
if(score[i] > aver)
{
printf("%ld------%.0f\n",num[i],score[i]);
count++;
}
}
return count;
}
void GetSubsection(float score[], int n)
{
int count1,count2,count3,count4,count5,count6;
count1=count2=count3=count4=count5=count6=0;
int i,stu[6] = {0,0,0,0,0,0,};
for(i=0; i<n; i++)
{
if(score[i] < 60)
count1++;
else if(score[i] < 70)
count2++;
else if(score[i] < 80)
count3++;
else if(score[i] < 90)
count4++;
else if(score[i] < 100)
count5++;
else
count6++;
}
printf(" <60 %d %.2f%%\n",count1,(float)count1/n*100);
printf("60--69 %d %.2f%%\n",count2,(float)count2/n*100);
printf("70--79 %d %.2f%%\n",count3,(float)count3/n*100);
printf("80--89 %d %.2f%%\n",count4,(float)count4/n*100);
printf("90--99 %d %.2f%%\n",count5,(float)count5/n*100);
printf(" 100 %d %.2f%%\n",count6,(float)count6/n*100);
}