您的位置:首页 > 编程语言 > C语言/C++

结构体数组排序 (学生信息 按成绩排序 )

2017-08-26 21:27 1871 查看
/*

name:学生信息结构体  按总分排序 (降序)

*/

#include<stdio.h>

typedef struct{//结构体 定义时尽量放main()外面---方便 
int grade;
int age;
char name[10];/*其他信息就不列举了*/
}Student; 

int main()

{   int i,j;
Student temp;

Student student[3]={/*分成多条初始化--- 清晰*/ 
{600,18,"小明"},
{550,19,"小红"},
{700,20,"tom"},
} ;

  /*用结构体指针---提高效率*/

  /*冒泡排序*/

  
Student* p=student;
for(i=1;i<=2;i++)
{
for(j=0;j<=3-i-1;j++)//大-->小 
{
if( (p+j)->grade  <  (p+j+1)->grade)
{
  temp=*(p+j);
   *(p+j) = *(p+j+1);
   *(p+j+1)= temp;//注意 temp 的类型为Student 

/*
temp=(p+j)->grade;
   (p+j)->grade = (p+j+1)->grade;
   (p+j+1)->grade = temp;
      错误代码 why? 注意 整体交换 
*/
}
}
}

/*以表的形式输出*/
printf("姓名    年龄    分数  \n\n");//表头 
for(i=0;i<=2;i++)
{
printf("%-4s   %4d     %4d\n",(p+i)->name,(p+i)->age,(p+i)->grade); 
}

getchar();
return 0; 

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐