gpt4 book ai didi

c - 如何在C中按升序对字符串数组进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 01:19:23 24 4
gpt4 key购买 nike

问题

我做了一个排序程序,这个程序和在 找到的其他程序很相似

https://beginnersbook.com/2015/02/c-program-to-sort-set-of-strings-in-alphabetical-order/

但是我制作的程序无法运行。我认为两者相同,但我的程序给了我浪费输出。

我还想知道在其他程序中计数设置为 5,例如,它应该从 0 开始接受 6 个输入,但它只得到 5,如何?

我的程序

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

int main() {

char str[4][10],temp[10];
int i,j;
printf("Enter strings one by one : \n");
for(i=0;i<5;i++)
scanf("%s",str[i]);

for(i=0;i<5;i++)
for(j=i+1;j<5;j++)
if(strcmp(str[i],str[j])>0){
strcpy(temp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],temp);
}

printf("\nSorted List : ");
for(i=0;i<5;i++)
printf("\n%s",str[i]);
printf("\n\n");

return 0;

}

最佳答案

使用qsort()

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

int pstrcmp( const void* a, const void* b )
{
return strcmp( *(const char**)a, *(const char**)b );
}

int main()
{
const char* xs[] =
{
"Korra",
"Zhu Li",
"Asami",
"Mako",
"Bolin",
"Tenzin",
"Varrick",
};
const size_t N = sizeof(xs) / sizeof(xs[0]);

puts( "(unsorted)" );
for (int n = 0; n < N; n++)
puts( xs[ n ] );

// Do the thing!
qsort( xs, N, sizeof(xs[0]), pstrcmp );

puts( "\n(sorted)" );
for (int n = 0; n < N; n++)
puts( xs[ n ] );
}

请不要使用冒泡排序。在 C 语言中,您真的不必在特殊需要之外编写自己的排序算法。

关于c - 如何在C中按升序对字符串数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47959493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com