L2-2 通讯录排序

202321332067 王玟茜 软件23 2023-12-31 16:37:34

输入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语言编程和排序年龄的过程。

...全文
162 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zhangdandan19871 2023-12-31
  • 打赏
  • 举报
回复

哇偶

211

社区成员

发帖
与我相关
我的任务
社区描述
程序设计基础课程教学群
c语言c++ 高校 福建省·厦门市
社区管理员
  • xmzq001
  • 鹿饮涧鸣
  • jiangxiaoju
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

请加入学习社区的软件23级同学修改社区昵称为学号+姓名,以便登记作业提交情况。

试试用AI创作助手写篇文章吧