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


相关文章
|
3天前
|
搜索推荐 C语言
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
8 0
存储 算法 C语言
10 1
|
3天前
|
C语言
【C语言/数据结构】排序(快速排序及多种优化|递归及非递归版本)
【C语言/数据结构】排序(快速排序及多种优化|递归及非递归版本)
6 0
|
3天前
|
C语言
【C语言/数据结构】排序(选择排序,推排序,冒泡排序)
【C语言/数据结构】排序(选择排序,推排序,冒泡排序)
10 0
|
3天前
|
C语言
【C语言/数据结构】排序(直接插入排序|希尔排序)
【C语言/数据结构】排序(直接插入排序|希尔排序)
12 4
|
10天前
|
C语言
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
|
14天前
|
C语言
C语言刷题1
C语言刷题1
419 0
|
14天前
|
存储 算法 C语言
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
|
23天前
通讯录(C语言版)
通讯录(C语言版)
|
14天前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)