C语言刷题系列——17.计算平均成绩 18.找出总分最高的学生19.通讯录排序(二)

简介: C语言刷题系列——17.计算平均成绩 18.找出总分最高的学生19.通讯录排序(二)

🐤通讯录排序


🏀 题目要求

输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。

输入格式:

输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。

输出格式:

按照年龄从大到小输出朋友的信息,格式同输出。


🏀 题解

💻step1.定义结构体

struct Friend
{
    char name[10];
    int birth;
    char num[20];//比17大一点
}fri[10];


💻step2.输入n;随后n行 每行给出一个朋友的信息

int main()
{
    int n;
    scanf("%d",&n);
    int i = 0;
    for(i = 0;i<n;i++)
    {
        scanf("%s%d%s",fri[i].name,&fri[i].birth,fri[i].num);
        getchar();
    }
    //继续
    return 0;
}


💻step3.按照年龄从大到小输出

⭐注意注意注意,年龄越大,yyyymmdd越小

不要算反账!!!

(如20040101的年龄大于20050422的)


就是个选择排序,代码如下

int min = 0,j;
    for(i = 0;i<n-1;i++)
    {
        min = i;
        for(j = i+1;j<n;j++)
        {
            if(r=fri[min].birth>fri[j].birth)
            {
                min = j;
            }
        }
        if(i!=min)
        {
            struct Friend tem = fri[i];
            fri[i] = fri[min];
            fri[min] = tem;
        }
    }


🐳完整代码

#include<stdio.h>
struct Friend
{
    char name[10];
    int birth;
    char num[20];
}fri[10];
int main()
{
    int n;
    scanf("%d",&n);
    int i = 0;
    for(i = 0;i<n;i++)
    {
        scanf("%s%d%s",fri[i].name,&fri[i].birth,fri[i].num);
        getchar();
    }
    int min = 0,j;
    for(i = 0;i<n-1;i++)
    {
        min = i;
        for(j = i+1;j<n;j++)
        {
            if(r=fri[min].birth>fri[j].birth)
            {
                min = j;
            }
        }
        if(i!=min)
        {
            struct Friend tem = fri[i];
            fri[i] = fri[min];
            fri[min] = tem;
        }
    }
    for(i = 0;i<n;i++)
    {
        printf("%s %d %s\n",fri[i].name,fri[i].birth,fri[i].num);
    }
    return 0;
}


相关文章
|
1月前
|
存储 算法 安全
C 语言中的位运算:挖掘底层计算的高效力量
位运算是C语言中直接操作二进制位的一种技术,能高效处理底层数据,广泛应用于优化算法、硬件编程等领域,是掌握C语言高级特性的关键之一。
|
2月前
|
存储 算法 C语言
C语言中常见的字符串处理技巧,包括字符串的定义、初始化、输入输出、长度计算、比较、查找与替换、拼接、截取、转换、遍历及注意事项
本文深入探讨了C语言中常见的字符串处理技巧,包括字符串的定义、初始化、输入输出、长度计算、比较、查找与替换、拼接、截取、转换、遍历及注意事项,并通过案例分析展示了实际应用,旨在帮助读者提高编程效率和代码质量。
107 4
|
2月前
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
142 7
|
2月前
|
搜索推荐 算法 C语言
【排序算法】八大排序(上)(c语言实现)(附源码)
本文介绍了四种常见的排序算法:冒泡排序、选择排序、插入排序和希尔排序。通过具体的代码实现和测试数据,详细解释了每种算法的工作原理和性能特点。冒泡排序通过不断交换相邻元素来排序,选择排序通过选择最小元素进行交换,插入排序通过逐步插入元素到已排序部分,而希尔排序则是插入排序的改进版,通过预排序使数据更接近有序,从而提高效率。文章最后总结了这四种算法的空间和时间复杂度,以及它们的稳定性。
122 8
|
3月前
|
算法 C语言
【C语言】排序查找
【C语言】排序查找
|
3月前
|
C语言
大学生期末C语言实验(学生成绩和鞍点)
大学生期末C语言实验(学生成绩和鞍点)
310 0
大学生期末C语言实验(学生成绩和鞍点)
|
3月前
|
存储 C语言
探索C语言数据结构:利用顺序表完成通讯录的实现
本文介绍了如何使用C语言中的顺序表数据结构实现一个简单的通讯录,包括初始化、添加、删除、查找和保存联系人信息的操作,以及自定义结构体用于存储联系人详细信息。
41 2
|
3月前
|
机器学习/深度学习 编译器 C语言
C语言刷题(中)(保姆式详解)
C语言刷题(中)(保姆式详解)
19 0
|
3月前
|
NoSQL 算法 Redis
Redis的实现三:c语言实现平衡二叉树,通过平衡二叉树实现排序集
本博客介绍了如何在C语言中实现一个平衡二叉树,并通过这个数据结构来模拟Redis中的排序集功能。
22 0
|
人工智能 C语言 vr&ar
C语言及程序设计提高例程-21 首尝排序——冒个泡
贺老师教学链接  C语言及程序设计提高 本课讲解 冒泡排序源程序 #include &lt;stdio.h&gt; #define n 10 int main( ) { int i,j,t,a[10]= {3,5,9,11,33,6,-9,-76,100,123}; for (i=0; i&lt;n-1; i++) for(j=0; j&lt;=n-i-1;
1100 0