【问题标题】:Sorting Array order on C在C上排序数组顺序
【发布时间】:2020-09-25 03:18:00
【问题描述】:

我正在尝试在 C 上按顺序对这个数组进行排序,但我没有做对。我做错了什么?排序后的数组错误,应该按以下顺序显示:

0: boy 
1: is 
2: right 
3: sitting 
4: The 
5: there.
 

谢谢大家!

    int n = sizeof(arr) / sizeof(arr[0]); 
    int i; 
  
    // Print the given array 
    printf("Given array is\n"); 
    for (i = 0; i < n; i++) 
        printf("%d: %s \n", i, arr[i]); 
  
    // Sort the array 
    sort(arr, n); 
  
    // Print the sorted array 
    printf("\nSorted array is\n"); 
    for (i = 0; i < n; i++) 
        printf("%d: %s \n", i, arr[i]); 
  
    return 0; 
} 


Output:

   
Sorted array is
The 
boy 
is 
right 
sitting 
there. 

【问题讨论】:

  • 在区分大小写的搜索中,T 排在b 之前。
  • 如果您想要不区分大小写的比较,请使用stricmp()
  • 看起来你希望大写和小写可以互换(不区分大小写的搜索)对于 Windows,功能是 stricmp(),对于 Unix,它是 strcasecmp()
  • 很高兴知道谢谢
  • sort 来自哪里?

标签: arrays c sorting ascii


【解决方案1】:

我做错了什么?

什么都没有。您的代码运行良好。

一个很好的调试方法是打印每个单词的第一个字符的值。这将向您显示“T”、“b”等的值,并且您会看到 A-Z 的值低于 a-z。

换个角度看,如果您希望单词按照问题顶部给出的顺序打印,您将必须对它们进行排序,以便它们在ASCII 顺序。您需要提出一个compare 函数,它认为“T”和“t”是相同的。

【讨论】:

  • 我知道“Nothing”是对该问题的有效答案,但他确实给出了预期的输出,因此如果您提供有关如何实现预期目标的建议,它将帮助未来的人们查看这个问题输出。
  • @JerryJeremiah 我已经添加了一个完全可以做到这一点的段落,但是 OP 的大问题只是他/她不明白为什么会发生输出。知道“t”与“T”不同应该会有很大帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-16
相关资源
最近更新 更多