212
社区成员
发帖
与我相关
我的任务
分享
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。
输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd
格式的日期,“电话号码”是不超过17位的数字及+
、-
组成的字符串。
按照年龄从大到小输出朋友的信息,格式同输出。
3
zhang 19850403 13912345678
wang 19821020 +86-0571-88018448
qian 19840619 13609876543
wang 19821020 +86-0571-88018448
qian 19840619 13609876543
zhang 19850403 13912345678
首先按题目需求设计一个结构
struct f{
char name[10];
int yyyy,mm,dd;
char tel[17];
};
将生日的年月日在输入时选择分开,有利于出生日期的比较。
先比较年在比较月日。
if(friends[i].yyyy>friends[j].yyyy){
temp=friends[i];
friends[i]=friends[j];
friends[j]=temp;
}else if(friends[i].yyyy==friends[j].yyyy){
if(friends[i].mm>friends[j].mm){
temp=friends[i];
friends[i]=friends[j];
friends[j]=temp;
}else if(friends[i].mm==friends[j].mm){
if(friends[i].dd>friends[j].dd){
temp=friends[i];
friends[i]=friends[j];
friends[j]=temp;
逐个数据比较,交换后方可得最终数据。
#include<stdio.h>
struct f{
char name[10];
int yyyy,mm,dd;
char tel[17];
};
int main(){
int n,i,j;
scanf("%d",&n);
struct f friends[n],temp;
for(i=0;i<n;i++){
scanf("%s %4d%2d%2d %s",&friends[i].name,&friends[i].yyyy,&friends[i].mm,&friends[i].dd,&friends[i].tel);
}
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(friends[i].yyyy>friends[j].yyyy){
temp=friends[i];
friends[i]=friends[j];
friends[j]=temp;
}else if(friends[i].yyyy==friends[j].yyyy){
if(friends[i].mm>friends[j].mm){
temp=friends[i];
friends[i]=friends[j];
friends[j]=temp;
}else if(friends[i].mm==friends[j].mm){
if(friends[i].dd>friends[j].dd){
temp=friends[i];
friends[i]=friends[j];
friends[j]=temp;
}
}
}
}
}for(i=0;i<n;i++){
printf("%s %04d%02d%02d %s",friends[i].name,friends[i].yyyy,friends[i].mm,friends[i].dd,friends[i].tel);
if(i!=n-1){
printf("\n");
}
}return 0;
}
通过这个简单的C语言程序示例,我们可以了解如何使用C语言来排序年龄。
希望这个示例能够帮助你更好地理解C语言编程和排序年龄的过程。
哇偶