还有哪些情况没考虑到
问题 K: 通讯录排序时间限制: 1 Sec内存限制: 128 MB
提交: 1222解决: 320
[状态] [提交] [命题人:外部导入]
题目描述
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。
输入
输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。
输出
按照年龄从大到小输出朋友的信息,格式同输出。
样例输入 Copy
3
zhang 19850403 13912345678
wang 19821020 +86-0571-88018448
qian 19840619 13609876543
样例输出 Copy
wang 19821020 +86-0571-88018448
qian 19840619 13609876543
zhang 19850403 13912345678
#include <stdio.h>
struct man {
char name;
int year,month,day;
char num;
};
int main() {
struct man men,temp;
int t;
scanf("%d",&t);
for(int i=0; i<t; i++) {
scanf("%s %4d%2d%2d %s",men.name,&men.year,&men.month,&men.day,men.num);
}
for(int i=0; i<t-1; i++) {
temp=men;
for(int j=i+1; j<t; j++) {
if(men.year<men.year) {
men=men;
men=temp;
} else if(men.year==men.year) {
if(men.month<men.month) {
men=men;
men=temp;
} else if(men.month==men.month) {
if(men.day<men.day) {
men=men;
men=temp;
}
}
}
}
}
for(int i=t-1; i>=0; i--) {
printf("%s %4d%02d%02d %s\n",men.name,men.year,men.month,men.day,men.num);
}
return 0;
} 本帖最后由 jhq999 于 2022-2-6 18:39 编辑
struct man {
char name;
union birthday
{
unsigned long long bday;
struct YMDHSTT
{
unsigned short hour;unsigned short day;unsigned short month;unsigned short year;
} ymdh;
};
birthday bth;
char num;
};
int main() {
struct man men={0},temp;
int t;
//int year,month,day;
scanf("%d",&t);
for(int i=0; i<t; i++) {
scanf("%s%4hd%2hd%2hd%s",men.name,&men.bth.ymdh.year,&men.bth.ymdh.month,&men.bth.ymdh.day,men.num);
//scanf("%s %4d%2d%2d %s",men.name,&year,&month,&day,men.num);
//men.bth.ymdh.year=year,men.bth.ymdh.month=month,men.bth.ymdh.day=day;
}
for(int i=0; i<t-1; i++) {
for(int j=i+1; j<t; j++) {
if (men.bth.bday>men.bth.bday)
{
temp=men;
men=men;
men=temp;
}
}
}
for(int i=0; i<t; i++) {
printf("%s %04hd%02hd%02hd %s\n",men.name,men.bth.ymdh.year,men.bth.ymdh.month,men.bth.ymdh.day,men.num);
}
return 0;
}
3
zhang 19850403 13912345678
wang 19821020 +86-0571-88018448
qian 19840619 13609876543
wang 19821020 +86-0571-88018448
qian 19840619 13609876543
zhang 19850403 13912345678
#include <stdio.h>
typedef struct{
char name;
int DOB;
char contact;
}Data;
void swap(Data *A, Data *B){ // 对换位置
Data temp;
if(A->DOB > B->DOB){
temp = *A;
*A = *B;
*B = temp;
}
}
void sort(size_t n, Data arr[]){ // 排序
for(int i = 0; i < n-1; i++)
for(int j = i+1; j < n; j++)
if(arr.DOB > arr.DOB)
swap(&arr, &arr);
}
int main()
{
int n;
scanf("%d", &n);
Data arr; // 通讯录
for(int i = 0; i < n; i++) // 输入
scanf("%s%d%s", arr.name, &arr.DOB, arr.contact);
sort(n, arr); // 排序
for(int i = 0; i < n; i++) // 输出
printf("%s %d %s\n", arr.name, arr.DOB, arr.contact);
return 0;
}
页:
[1]