/*******************************************************
* 1、定义一个结构体数组,存放10个学生的学号姓名三门课成绩
* 2、从键盘输入10学生的内容
* 3、输出单门课成绩最高的学生学号、姓名、及该门课程的成绩
* 4、输出三门的平均分最高的学生学号、姓名及平均分
* 5、将10个学生按照平均分从高到低排序,格式如下:
* number name math Chinese English average
* 103 tom 90 100 95
* 101 alice 50 80 80
* ****************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define N 3
typedef struct node
{
int num;
char name[20];
float math;
float chinese;
float english;
float avg;
}STU;
int
main(void)
{
STU student[N];
STU temp;
int i,j,n,m;
int sum;
int len;
int iMath;
int iChinese;
int iEnglish;
float mathMax=0;
float chineseMax=0;
float englishMax=0;
bool status;
for(i=0;i<N;i++)
{
printf("Input %d student's num:",i+1);
scanf("%d",&student[i].num);
getchar();
printf("Input %d student's name:",i+1);
fgets(student[i].name,20,stdin);
len=strlen(student[i].name);
student[i].name[len-1]='\0';
printf("input %d student's math core\n",i+1);
scanf("%f",&student[i].math);
printf("input %d student's chinese core\n",i+1);
scanf("%f",&student[i].chinese);
printf("input %d student's english core\n",i+1);
scanf("%f",&student[i].english);
student[i].avg=(student[i].math+student[i].chinese+student[i].english)/3;
}
for(i=0;i<N;i++)
{
if(student[i].math>mathMax)
{
mathMax=student[i].math;
iMath=i;
}
if(student[i].chinese>chineseMax)
{
chineseMax=student[i].chinese;
iChinese=i;
}
if(student[i].english>englishMax)
{
englishMax=student[i].english;
iEnglish=i;
}
}
printf("Highest Math score:%d->%s->%.2f\n",student[iMath].num,student[iMath].name,\
mathMax);//student[iMath].math);
printf("Highest Chinese score:%d->%s->%.2f\n",student[iChinese].num,student[iChinese].name,\
chineseMax);//student[iChinese].chinese);
printf("Highest English score:%d->%s->%.2f\n",student[iEnglish].num,student[iEnglish].name,\
englishMax);//student[iEnglish].english);
for(i=1;i<N;i++)
{
status=true;
for(j=0;j<N-i;j++)
{
if(student[j].avg<student[j+1].avg)
{
status=false;
temp.num=student[j].num;
strcpy(temp.name,student[j].name);
temp.math=student[j].math;
temp.chinese=student[j].chinese;
temp.english=student[j].english;
temp.avg=student[j].avg;
student[j].num=student[j+1].num;
strcpy(student[j].name,student[j+1].name);
student[j].math=student[j+1].math;
student[j].chinese=student[j+1].chinese;
student[j].english=student[j+1].english;
student[j].avg=student[j+1].avg;
student[j].avg=student[j+1].avg;
student[j+1].num=temp.num;
strcpy(student[j+1].name,temp.name);
student[j+1].math=temp.math;
student[j+1].chinese=temp.chinese;
student[j+1].english=temp.english;
student[j+1].avg=temp.avg;
}
}
if(status==true)
break;
}
printf("number\tname\tmath\tChiese\tEnglish\taverage\n");
for(i=0;i<N;i++)
{
printf("%d\t",student[i].num);
printf("%s\t",student[i].name);
printf("%.2f\t",student[i].math);
printf("%.2f\t",student[i].chinese);
printf("%.2f\t",student[i].english);
printf("%.2f\n",student[i].avg);
}
return 0;
}
|