C语言程序设计:字典序排序字符串

问题描述:

对分行输入的若干字符串按字典序(由小到大)进行排序并输出。

输入形式:

控制台输入多行字符串,各个字符串可能含有空格。

输出形式:

输出按字典序(由小到大)进行排序后的字符串。

样例输入:

'hello world' 'apple' 'banana' 'dog' 'egg'

样例输出:

'apple' 'banana' 'dog' 'egg' 'hello world'

样例说明:

输入的字符串按字典序排序后,输出结果如上所示。

代码示例:

#include <stdio.h>
#include <string.h>

int main() {
  char str[100][100];
  int i, j, n = 0;

  // 输入字符串
  while (gets(str[n])) {
    n++;
  }

  // 字典序排序
  for (i = 0; i < n - 1; i++) {
    for (j = i + 1; j < n; j++) {
      if (strcmp(str[i], str[j]) > 0) {
        char temp[100];
        strcpy(temp, str[i]);
        strcpy(str[i], str[j]);
        strcpy(str[j], temp);
      }
    }
  }

  // 输出排序后的字符串
  for (i = 0; i < n; i++) {
    printf('%s\n', str[i]);
  }

  return 0;
}

代码解释:

  1. 使用 gets() 函数逐行读取输入字符串,并将它们存储在 str 数组中。
  2. 使用双层循环遍历 str 数组,并使用 strcmp() 函数比较两个字符串的字典序。
  3. 如果 strcmp() 函数返回大于 0 的值,则说明两个字符串的字典序不符,需要进行交换。
  4. 使用 strcpy() 函数将两个字符串进行交换。
  5. 最后,使用 printf() 函数输出排序后的字符串。

注意:

  • 此代码仅提供一个简单的实现方式,您可以根据实际需求进行修改和优化。
  • 使用 gets() 函数存在安全隐患,建议使用更安全的函数,例如 fgets()。
  • strcmp() 函数比较字符串的大小写,如果需要忽略大小写进行排序,可以使用 strcasecmp() 函数。
  • 如果输入字符串数量较大,可以使用更高级的排序算法,例如快速排序或归并排序,以提高排序效率。
C语言程序设计:字典序排序字符串

原文地址: https://www.cveoy.top/t/topic/omcN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录