結構體陣列排序 (學生資訊 按成績排序 )
阿新 • • 發佈:2019-02-06
/*
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;
}