年齡從大到小輸出通訊錄資訊(OJ上通過,但是DEVC++上一直亂碼和要多輸幾位)
阿新 • • 發佈:2019-02-02
結構
第5題
【描述】
建立一個通訊錄結構,包括姓名、生日和電話號碼,輸入n(3≤n≤50)個朋友的資訊,按年齡從大到小的順序依次輸出其資訊。
【輸入】
輸入第一行為正整數n(3≤n≤50),表示朋友數量。
下面n行為朋友資訊,每行包括姓名、生日和電話號碼,以空格間隔。
【輸出】
分行按年齡從大到小輸出朋友資訊。
【輸入示例】
3
張三 1985040313912345678
李四 198210200571-88123456
王五 1984061913609876543
【輸出示例】
李四 198210200571-88123456
王五 1984061913609876543
張三 1985040313912345678
【提示】
宣告一個通訊錄結構型別:
struct addressList {
charname[10]; /* 姓名 */
longbirthday; /* 生日 */
charphone[14]; /* 電話號碼 */
};
使用qsort函式對年齡按從大到小排序。
#include<stdio.h> #include<stdlib.h> struct addressList{ char name[10]; long birthday; char phone[14]; }; int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b; } int main(){ int n,i,j; struct addressList list[50]; i=0; scanf("%d\n",&n); while(n--){ scanf("%s %ld %s\n", &list[i].name, &list[i].birthday, &list[i].phone); i++; } qsort(list,i,sizeof(list[0]),cmp);//qsort函式要注意,第二個是陣列元素個數! for(j=0;j<i;j++){ printf("%s %ld %s\n",list[j].name,list[j].birthday,list[j].phone);//這裡不小心加了&。 } }