第1个回答 2012-05-18
/*关于这个程序,我觉得应该是考你对结构体的掌握
结构体在我个人的理解,就是把一些有联系的东西集合起来,方便调用
打个比方有二十个人,要记录他们的身高和体重,如果用一般数组记录身高和体重,那么就得定义两个数组,而且用起来还麻烦
但用结构体的话,只用一个结构体的数组就行了,方便,简洁
*/
#include
#define N 2 //定义学生的个数,为了方便调试,我只写了2,你可以把2改为你想要的任意学生数
struct STUDENT //定义一个结构体
{
char name[8];
int num;
float score[3];
float average;
};
void output(struct STUDENT *stu,int n) //输出
{
int i,j,max=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(stu[j].average>stu[i].average)
max=j; //先输出平均分最高的
}
printf("%-8s %-8d %-6.1f\n",stu[max].name,stu[max].num,stu[max].average);
stu[max].average=-1;//输出后标记为-1
}
}
void input(struct STUDENT *stu,int n) //输入
{
int i;
for(i=0;i<n;i++)
{
scanf("%s %d %f %f %f",&stu[i].name,&stu[i].num,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
}
}
void calculate(struct STUDENT *stu,int n) //计算平均分
{
int i;
for(i=0;i<n;i++)
{
stu[i].average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3; //三门课总和除以3
}
}
void main(void)
{
struct STUDENT stu[N];
int i;
printf("请输入:姓名、学号、数学成绩、英语成绩、计算机成绩(每个数据以空格格开)\n");
input(stu,N); //输入
calculate(stu,N); //计算
printf("排序后:\n");
printf("姓名 学号 平均分\n");
output(stu,N); //输出
}
/*
输入:
王五 1111 60 50 40
张三 2222 70 80 90
输出:
姓名 学号 平均分
张三 2222 80.0
王五 1111 50.0
*/