思维导图
2,从堆区申请能存5个结构体变量的数组的空间,完成数组中成员的输入,根据学生成绩,用选择排序的方式,对学生排序并输出
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char name[20];
double score;
}Stu,*PStu;
void swap(PStu *a,PStu *b);
void SelectSort(PStu *p,int len);
int main() {
PStu p[5];
int i;
printf("please enter 5 name and score:\n");
for(i=0;i<5;i++)
{
p[i]=(Stu*)malloc(sizeof(Stu));
scanf("%s %lf",p[i]->name,&p[i]->score);
}
printf("---------------------------\n");
printf("results before sorting:\n");
for(i=0;i<5;i++)
{
printf("name=%s,score=%.2lf\n",p[i]->name,p[i]->score);
}
SelectSort(p,5);
printf("---------------------------\n");
printf("sorted results:\n");
for(i=0;i<5;i++)
{
printf("name=%s,score=%.2lf\n",p[i]->name,p[i]->score);
}
return 0;
}
void swap(PStu *a,PStu *b)
{
PStu tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
void SelectSort(PStu *p,int len)
{
int i,j,min;
for(i=0;i<len-1;i++)
{
min=i;
for(j=i+1;j<len;j++)
{
if((*(p+j))->score < (*(p+min))->score)
{
min=j;
}
}
if(min!=i)
{
swap(p + i, p + min);
}
}
}