/*
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;
}
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;
}
版权声明:本文为csdn17355456893原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。