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;
}


相关文章
|
9天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(上)(c语言实现)(附源码)
本文介绍了四种常见的排序算法:冒泡排序、选择排序、插入排序和希尔排序。通过具体的代码实现和测试数据,详细解释了每种算法的工作原理和性能特点。冒泡排序通过不断交换相邻元素来排序,选择排序通过选择最小元素进行交换,插入排序通过逐步插入元素到已排序部分,而希尔排序则是插入排序的改进版,通过预排序使数据更接近有序,从而提高效率。文章最后总结了这四种算法的空间和时间复杂度,以及它们的稳定性。
50 8
|
9天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
36 7
|
1月前
|
算法 C语言
【C语言】排序查找
【C语言】排序查找
|
1月前
|
C语言
大学生期末C语言实验(学生成绩和鞍点)
大学生期末C语言实验(学生成绩和鞍点)
148 0
大学生期末C语言实验(学生成绩和鞍点)
|
1月前
|
存储 C语言
探索C语言数据结构:利用顺序表完成通讯录的实现
本文介绍了如何使用C语言中的顺序表数据结构实现一个简单的通讯录,包括初始化、添加、删除、查找和保存联系人信息的操作,以及自定义结构体用于存储联系人详细信息。
19 2
|
1月前
|
机器学习/深度学习 编译器 C语言
C语言刷题(中)(保姆式详解)
C语言刷题(中)(保姆式详解)
14 0
|
1月前
|
NoSQL 算法 Redis
Redis的实现三:c语言实现平衡二叉树,通过平衡二叉树实现排序集
本博客介绍了如何在C语言中实现一个平衡二叉树,并通过这个数据结构来模拟Redis中的排序集功能。
12 0
|
1月前
|
存储 C语言
手把手教你用C语言实现通讯录管理系统
手把手教你用C语言实现通讯录管理系统
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
33 3
|
6天前
|
C语言
c语言调用的函数的声明
被调用的函数的声明: 一个函数调用另一个函数需具备的条件: 首先被调用的函数必须是已经存在的函数,即头文件中存在或已经定义过; 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。 如果被调用的函数定义出现在主调函数之前可以不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明
21 6