21xrx.com
2025-04-23 11:52:22 Wednesday
文章检索 我的文章 写文章
C语言字符串排序问题解析与解决方法
2023-06-16 13:47:12 深夜i     13     0
C语言 字符串 排序 库函数 快速排序 冒泡排序

C语言中操作字符串是很常见的事情,但是对于字符串的排序问题却是很容易被忽略的。本文将介绍C语言字符串排序问题的几种解决方法。

方法一:使用库函数

C语言中提供了很多库函数,例如strcmp、qsort等,其中qsort函数可以实现字符串的快速排序。具体实现方式可以参考下面代码示例:

#include 
#include 
int cmp(const void *, const void *);
int main()
{
  char s[10][50], temp[50];
  int i, j, n;
  printf("输入字符串数:");
  scanf("%d", &n);
  printf("输入字符串:\n");
  for (i = 0; i < n; i++)
  {
    scanf("%s", s[i]);
  }
  qsort(s, n, sizeof(s[0]), cmp);
  printf("\n排序后的顺序:\n");
  for (i = 0; i < n; i++)
  {
    printf("%s\n", s[i]);
  }
  return 0;
}
int cmp(const void *a, const void *b)
{
  return(strcmp((char *)a, (char *)b));
}

方法二:冒泡排序

冒泡排序是一种基础排序方法,其实现方式相对简单。具体实现方式可以参考下面代码示例:

#include 
#include 
int main()
{
  int i, j;
  char s[10][50], temp[50];
  printf("输入字符串数:");
  scanf("%d", &n);
  printf("输入字符串:\n");
  for (i = 0; i < n; i++)
  {
    scanf("%s", s[i]);
  }
  for (i = 0; i < n - 1; i++)
  {
    for (j = 0; j < n - i - 1; j++)
    {
      if (strcmp(s[j], s[j + 1]) > 0)
      {
        strcpy(temp, s[j]);
        strcpy(s[j], s[j + 1]);
        strcpy(s[j + 1], temp);
      }
    }
  }
  printf("\n排序后的顺序:\n");
  for (i = 0; i < n; i++)
  {
    printf("%s\n", s[i]);
  }
  return 0;
}

  
  

评论区

请求出错了