Chap9结构 课后作业 L2-2 通讯录排序
题目要求:
输入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
解题思路:
首先肯定是要定义一个结构类型,包含姓名、生日、电话号码这三个结构成员,题目要求将结构成员按照年龄大小输出,有两种方式可以实现该功能,1、将生日定义为一个长整型比较长整型的大小来判断年龄大小,2、将生日定义为字符串使用strcmp函数来判断字符串的大小进而判断年龄大小。这里我只采用了使用字符串大小来判断年龄大小的方法。
#include <stdio.h>
#include <string.h>
struct people{
char name[11];
char bir[9];
char num[18];
};
int main()
{
struct people per[10],d;
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%s %s %s",per[i].name,per[i].bir,per[i].num); //由于三个结构成员的内容都比较长且可能包含符号,所以这里统一都采用字符串的方式来输入三个变量
}
for(int i=0;i<n;i++){ //使用冒泡排序法按照字符串的大小来为结构成员进行排序
d=per[i];
for(int j=0;j<n-1;j++){
if (strcmp(per[j].bir,per[j+1].bir)>0){
d=per[j]; //由于同类型你的结构变量可以直接复制所以可以采用与常见类型变量一样的方式来实现位置互换操作
per[j]=per[j+1];
per[j+1]=d;
}
}
}
for(int i=0;i<n;i++){
printf("%s %s %s\n",per[i].name,per[i].bir,per[i].num);
}
return 0;
}
运行结果:

相关推荐
accp 5.0 C# 课后作业三
课后作业是为了巩固理论学习,通过实践加深理解而设计的。【描述】"accp 5.0 C# 课后作业三 理论+上机"表明这个作业包含了两部分:理论理解和实际操作。
【信息科学与工程学】【安全领域】第二百零五篇 漏洞治理 01
形式:RabbitMQ管理插件SSRF CVE-2026-57211(CVSSv4 8.3,Windows多插件可诱发SMB NTLM泄露)、管理API资源无限CWE-770 CVSSv4 5.3、管理UI存储XSS CVE-2026-57214/其他;用法:GET /cgi-bin/.%2e/%2e%2e/etc/passwd→读密文/源码→RCE。定量:CVSS 9.0;例:Spectre CVE-2017-5753、Meltdown CVE-2017-5754(CPU越界/未授权内核读);
accp 5.0 C# 课后作业二
第二章内容(chap2)作为整个课程的重要组成部分,不仅为学员提供了C#的基础知识,还通过具体的课后作业,如“Accp 5.0 C# 课后作业二”,为学员构建了一个理论与实践相结合的学习平台。
刘金琨智能控制的课后题目作业
【刘金琨智能控制的课后题目作业】是基于MATLAB环境进行的智能控制理论实践项目,旨在帮助学习者深入理解和应用智能控制方法。
accp 5.0 c# 课后作业一
综合以上信息,完成这个课后作业需要扎实的C#理论基础,包括但不限于变量、常量、数据类型、运算符、控制结构(如if、switch、for、while等)、函数的定义和调用、类与对象的概念以及基本的面向对象编程原则


