析全班同学多门功课成绩1.用随机函数生成同学的名字和多门功课的成绩,
比如学生数n=30,课程数m=5,即数学、物理、C语言、地质学、导论,要求成绩在50至100分之间(闭区间);
2.统计优秀同学数,不及格同学数,平均成绩最好、最差的同学;3.按照平均成绩由高到低排序并输出。
/*分析全班同学多门功课成绩1.用随机函数生成同学的名字和多门功课的成绩,
比如学生数n=30,课程数m=5,即数学、物理、C语言、地质学、导论,要求成绩在50至100分之间(闭区间);
2.统计优秀同学数,不及格同学数,平均成绩最好、最差的同学;3.按照平均成绩由高到低排序并输出。 */
#include<stdio.h>//随机数:rand() % (b-a+1)+ a,指a到b之间的
#include<stdlib.h>
#include<time.h>
#define n 30
struct student
{
char name[n][6];//姓名,三个字组成,一个汉字2个字节
float score1;//数学
float score2;//物理
float score3;//C语言
float score4;//地质学
float score5;//导论
float aver;//平均分
}stu[n];
int main ()
{
int i,j,jq1,jq2,k,p,q,min;
char xm1[]="啊",xm2[]="住";
char arr[20];
float temp;
int yx=0,bj=0;//代表优秀和不及格的学生个数
jq1=(unsigned char)xm1[0];
jq2=(unsigned char)xm2[0];
srand((unsigned)time(NULL));
for(i=0;i<n;i++)
{
for(j=0;j<6;j++)
{
stu[i].name[i][j]=(float)(jq2-jq1)/RAND_MAX*rand()+jq1;
}
}
for(i=0;i<n;i++)
{
stu[i].score1=rand() % (100-50+1)+50; //取50到100的随机数
stu[i].score2=rand() % (100-50+1)+50;
stu[i].score3=rand() % (100-50+1)+50;
stu[i].score4=rand() % (100-50+1)+50;
stu[i].score5=rand() % (100-50+1)+50;
stu[i].aver=(stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4+stu[i].score5)/5.0;
}
printf("所有学生的信息为:\n");
printf("姓名: 数学成绩: 物理成绩: C语言成绩:地质学: 导论成绩: 平均成绩:\n");
for(i=0;i<n;i++)
{
printf("%s %f %f %f %f %f %f \n",stu[i].name[i],stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].score5,stu[i].aver);
}
printf("\n");
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if((stu[j].aver)>(stu[k].aver))
k=j;
}
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if((stu[j].aver)<(stu[min].aver))
min=j;
}
}
for(i=0;i<n;i++)
{
if(stu[i].aver>60)//设大于60分为优秀
yx++; //优秀学生数目
else
bj++;//不及格学生数目
}
printf("优秀的的学生人数(平均分60分以上)为:%d 不及格的学生人数为:%d\n",yx,bj);
printf("------------------------------------------------\n");
printf("平均成绩最高的学生信息为:\n");
printf("姓名: 数学成绩: 物理成绩: C语言成绩:地质学: 导论成绩: 平均成绩:\n");
printf("%s %f %f %f %f %f %f\n",stu[k].name[k],stu[k].score1,stu[k].score2,stu[k].score3,stu[k].score4,stu[k].score5,stu[k].aver);
printf("------------------------------------------------\n");
printf("平均成绩最差的成绩信息为:\n");
printf("姓名: 数学成绩: 物理成绩: C语言成绩:地质学: 导论成绩: 平均成绩:\n");
printf("%s %f %f %f %f %f %f\n",stu[min].name[min],stu[min].score1,stu[min].score2,stu[min].score3,stu[min].score4,stu[min].score5,stu[min].aver);
printf("\n");
printf("对所有学生的平均成绩排序(由大到小排列)为:\n");
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if((stu[j].aver)<(stu[j+1].aver))//从大到小排列
{
temp=stu[j].aver;
stu[j].aver=stu[j+1].aver;
stu[j+1].aver=temp;
}
}
}
for(i=0;i<n;i++)
{
printf("%f\n",stu[i].aver);
}
}