/*
分析:结构体储存学生的信息
*/
#include<stdio.h>
#define P 10
typedef struct Student //typedef(相当于给这个结构体类型取了个外号,你可以用这个外号做跟他真名一样能做的事情,这里的S 就是我取得外号)
{
char xh[12];
char name[10];
int age;
float score;
}S;
void Scanf(S *s);
void Print(S *s);
void MP(S *s);
int main()
{
S s[P];
Scanf(s); //输入
MP(s);
Print(s); //输出
return 0;
}
void Scanf(S *s)
{
int i;
for(i=0;i<P;i++)
{
printf("请输入第%d位同学的学号,姓名,年龄,成绩,空格间隔:",i+1);
scanf("%s%s%d%f",s[i].xh ,s[i].name ,&s[i].age ,&s[i].score ); //注意因为学号姓名是数组,他本身是首地址,不用加取地址符号,但是年龄和成绩必须加取地址符号
}
}
void Print(S *s)
{
int i;
for(i=0;i<P;i++)
{
printf("第%d位同学的学号,姓名,年龄,成绩:",i+1);
printf("%12s,%10s,%6d,%4.1f\n",s[i].xh ,s[i].name ,s[i].age ,s[i].score );
}
}
void MP(S *s)
{
S temp;
int i,j;
for(i=0;i<P-1;i++)
{
for(j=0;j<P-i-1;j++)
{
if(s[j].age <s[j+1].age )
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
}