Bailian3719 学生信息用qsort排序排序+字符串库函数

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bailian3719 学生信息用qsort排序排序+字符串库函数相关的知识,希望对你有一定的参考价值。

3719:学生信息用qsort排序

总时间限制: 1000ms 内存限制: 65536kB
描述
将输入的学生信息按名字排序后输出。
输入
每个学生信息是两行,第一行是名字,由英文字母和空格构成,最长18个字符;第二行格式为:

学号,性别 年龄

学号是一个不超过100,000的整数; 性别是一个字符,为’M’ 或’F’; 年龄是一个不大于100的整数
输入数据最后有可能有若干个回车,也有可能没有

学生不会超过100个,不会出现两个学生的名字仅大小写有差别的情况
输出
格式和输入数据基本一样,唯一不同在于输出学号的时候,必须用前导0补足8位
样例输入
Tom Hanks
7863,M 18
Mary Lu
18343,F 21
Santa Fe
27863,M 17
样例输出
Mary Lu
00018343,F 21
Santa Fe
00027863,M 17
Tom Hanks
00007863,M 18
提示

  1. 用一个结构存放单个学生信息,用一个结构数组存放全部学生信息,然后将该结构数组排序
  2. 用 gets可以读入一行
  3. 用 stricmp 函数作大小写无关的字符串比较。如果在POJ上交,名字要改成 _stricmp
  4. 补前导0的方法:printf(“%04d”,34) 会输出 0034, printf(“%05d”,34) 会输出 00034
  5. 如果用scanf读入一行的数据后,紧接着用gets读下一行,那么很可能gets读入的不是下一行的内容,而是一个空行(刚刚用sanf读的那一行的末尾的回车导致)

来源
Guo Wei

问题链接Bailian3719 学生信息用qsort排序
问题简述:(略)
问题分析:(略)
程序说明:C语言库函数qsort()参数略微复杂,不变使用。C++算法函数sort()则易用很多。使用字符串比较函数strcasecmp()来实现,使得程序逻辑变得更加简洁。
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* Bailian3719 学生信息用qsort排序 */

#include <bits/stdc++.h>

using namespace std;

struct Student 
    char name[18 + 1], c;
    int no, age;
 s[100];

bool cmp(Student a, Student b)

    return strcasecmp(a.name, b.name) < 0;


int main()

    int cnt = 0;
    while (gets(s[cnt].name)) 
        if (strlen(s[cnt].name) == 0) break;
        scanf("%d,%c%d", &s[cnt].no, &s[cnt].c, &s[cnt].age);
        getchar();
        cnt++;
    

    sort(s, s + cnt, cmp);

    for (int i = 0; i < cnt; i++)
        printf("%s\\n%08d,%c %d\\n", s[i].name, s[i].no, s[i].c, s[i].age);

    return 0;

《新程序员》:云原生和全面数字化实践 50位技术专家共同创作,文字、视频、音频交互阅读

以上是关于Bailian3719 学生信息用qsort排序排序+字符串库函数的主要内容,如果未能解决你的问题,请参考以下文章

爆肝!回调函数的实用案例,建议收藏~(计算器改良,qsort快排函数应用实例,冒泡函数核心理解,模拟qsort函数)

Bailian3729 用set实现字符串的排序和查找文本处理

Bailian3729 用set实现字符串的排序和查找文本处理

使用 qsort() 对指向包含字符串的结构的指针进行排序

qsort与sort

C语言之qsort函数进行排序