1. 程式人生 > >年齡從大到小輸出通訊錄資訊(OJ上通過,但是DEVC++上一直亂碼和要多輸幾位)

年齡從大到小輸出通訊錄資訊(OJ上通過,但是DEVC++上一直亂碼和要多輸幾位)

結構
第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);//這裡不小心加了&。 
	}
}