/*定义一个结构体来描述一个学生的信息(学号 姓名 成绩 出生日期)
再从键盘中输入5个学生的信息,假设按成绩的降序依次输出每个学生的信息
*/
#include "stdio.h"
/*定义一个结构体来描述一个学生的信息(学号 姓名 成绩 出生日期)
再从键盘中输入5个学生的信息,假设按成绩的降序依次输出每个学生的信息
*/
/*日期结构体*/
struct bir_d
{
int y, m, d;
};
/* 学生信息结构体*/
struct student
{
int num;
char a[20];
float sorce;
struct bir_d b;
};
void Inputs(struct student *p, int count);
void Put_Upsorce(struct student *p, int count);
int main (int argc, char* argv[])
{
struct student std[5];
Inputs(std, 5);
printf("\n");
Put_Upsorce(std,5);
return 0;
}
/*学生信息录入,和信息校验函数
p @ 学生信息结构体数组的地址
count @ 录入学生的个数
返回值 :无
*/
void Inputs(struct student *p, int count)
{
int i;
for(i= 0 ; i< count; i++)
{
scanf("%d %s %f %d %d %d",&(*(p+i)).num,(*(p+i)).a ,&(*(p+i)).sorce, &(*(p+i)).b.y, &(*(p+i)).b.m,&(*(p+i)).b.d);
}
printf("\n");
for(i= 0 ; i< count; i++)
{
printf("%d %s %.2f %d,%d,%d\n",(*(p+i)).num,(*(p+i)).a ,(*(p+i)).sorce, (*(p+i)).b.y, (*(p+i)).b.m,(*(p+i)).b.d);
}
}
/* 按成绩的升序输出,学生的信息
p @ 学生信息结构体数组的地址
count @ 录入学生的个数
返回值 :无
*/
void Put_Upsorce(struct student *p, int count)
{
struct student temp;
int i,j;
for(i= 0 ; i < count; i++)
{
for (j = 1; j < count-i; j++)
{
if((*(p+j)).sorce < (*(p+j-1)).sorce )//如果第j个学生的分数 小于 前一个学生的分数 交换学生 在结构体数组中的位置
{
temp = *(p+j);
*(p+j) = *(p+j -1);
*(p+j - 1) = temp;
}
}
}
for(i= 0 ; i< count; i++)
{
printf("%d %s %.2f %d,%d,%d\n",(*(p+i)).num,(*(p+i)).a ,(*(p+i)).sorce, (*(p+i)).b.y, (*(p+i)).b.m,(*(p+i)).b.d);
}
}