習題9-5 通訊錄排序 (20 分)
阿新 • • 發佈:2021-02-07
#include <stdio.h>
#include <string.h>
struct inf{
char name[11];
int birth;
char phone[18];
};
int main(){
int n;
scanf("%d",&n);
struct inf man[n],temp;
for(int i=0;i<n;i++){
scanf("%s %d %s",man[ i].name,&man[i].birth,man[i].phone);
getchar(); //收集回車符
}
for(int i=0;i<n-1;i++){
for(int j=n-1;j>i;j--){
if(man[j].birth<man[j-1].birth){ //出身日期越小,年齡越大
temp=man[j]; //這三行簡化以下的註釋程式碼
man[j]=man[j-1];
man[j- 1]=temp;
// strcpy(temp.name,man[j].name);
// strcpy(man[j].name,man[j-1].name);
// strcpy(man[j-1].name,temp.name);
// temp.birth=man[j].birth;
// man[j].birth=man[j-1].birth;
// man[j-1].birth=temp.birth;
// temp.birth=man[j].birth;
// strcpy(temp.phone,man[j].phone);
// strcpy(man[j].phone,man[j-1].phone);
// strcpy(man[j-1].phone,temp.phone);
}
}
}
for(int i=0;i<n;i++){
printf("%s %d %s\n",man[i].name,man[i].birth,man[i].phone);
}
return 0;
}
// ^
//1995 05 10
//1995 0 12
//1997 12 13
//1997 10 10