# include <stdio.h>
# include <malloc.h>
struct student
{
int age;
double score;
int name;
};
void scan (struct student ** parr,int a)
{
int i;
for(i=0 ; i<a ; ++i)
{
parr[i]->name = i+1;
printf("\n请输入第%d个学生的年纪",i+1);
scanf ("%d", & parr[i]->age);//**,scanf(&)
printf("\n请输入第%d个学生的成绩",i+1);
scanf ("%g", & parr[i]->score);
}
}
void maopao (struct student ** parr,int len)
{
int a,b;
struct student * t; //a,b用于循环,t用于变换大小数
for(a=0; a<len-1 ; ++a)
for(b = 0; b<len-1-a; ++b)
if (parr[b]->score > parr[b+1]->score)
{
t = parr[b];
parr[b] = parr[b+1];
parr[b + 1] = t;
}
}
void print(struct student ** parr,int a)
{
int i;
for(i= 0 ; i<a ; ++i)
{
printf("%d\n",parr[i]-> name );
printf("%d\n",parr[i]-> age );
printf("%g\n",parr[i]-> score);
}
}
int main ()//学生管理系统【测试】
{
int a; // a 表示学生个数
int i; //i是内部循环用的
struct student * parr;
printf("学生管理系统\n");
printf("请输入有几个学生,学生个数= ");
scanf ("%d",&a);
parr = (struct student * )malloc(a * sizeof (struct student));
//parr是 struct student * 类型 //parr[0.1.2.3.4]
scan (& parr, a); //执行输入各个学生参数的函数
maopao(& parr,a); //执行成绩由高到低进行排序的函数
print (& parr,a); //试行输出
return 0;
}
|