Arrays 在C上排序数组顺序
我试图在C上按顺序对这个数组进行排序,但我做得不对。我做错了什么?排序的数组错误,应按以下顺序显示:Arrays 在C上排序数组顺序,arrays,c,sorting,ascii,Arrays,C,Sorting,Ascii,我试图在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");
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.
int n=sizeof(arr)/sizeof(arr[0]);
int i;
//打印给定的数组
printf(“给定数组是\n”);
对于(i=0;i
我做错了什么
没什么。您的代码运行良好
一个好的调试方法是打印每个单词的第一个字符的值。这将向您显示“T”、“b”等的值,您将看到A-Z的值低于A-Z
从另一个角度来看,如果你想让单词按照问题顶部给出的顺序打印,你必须对它们进行排序,使它们不符合ASCII顺序。您需要想出一个compare
函数,该函数认为“T”和“T”是相同的
我做错了什么
没什么。您的代码运行良好
一个好的调试方法是打印每个单词的第一个字符的值。这将向您显示“T”、“b”等的值,您将看到A-Z的值低于A-Z
从另一个角度来看,如果你想让单词按照问题顶部给出的顺序打印,你必须对它们进行排序,使它们不符合ASCII顺序。你需要想出一个
compare
函数,它认为“T”和“T”是相同的。在区分大小写的搜索中T
在b
之前排序。如果你想进行不区分大小写的比较,请使用stricmp()
。看起来你希望大小写可以互换(不区分大小写的搜索)Windows的功能是stricmp(),Unix的功能是stricmp(),很高兴知道sort
从哪里来?在区分大小写的搜索中T
在b
之前排序。如果需要区分大小写的比较,请使用stricmp()
。看起来您希望大小写可以互换(不区分大小写的搜索)Windows的功能是stricmp(),而Unix的功能是strcasecmp(),很高兴知道谢谢sort
从哪里来?我知道“没有”是该问题的有效答案,但他确实给出了预期产出,因此如果你能提供如何实现预期产出的建议,这将有助于未来的人们研究这个问题。@JerryJeremiah我添加了一段确实如此的内容,但OP的大问题只是他/她不理解产出为何发生。知道“t”与“t”不同应该会有很大帮助。我理解“什么都没有”是该问题的有效答案,但他确实给出了预期产出,因此如果你能提供如何实现预期产出的建议,这将有助于未来的人们研究这个问题。@JerryJeremiah我添加了一段确实如此的内容,但OP的大问题只是他/她不理解产出为何发生。知道“t”与“t”不同应该会有很大帮助。