gpt4 book ai didi

c - 使用冒泡排序对字符串数组进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:33 29 4
gpt4 key购买 nike

如有任何帮助,我们将不胜感激。我正在尝试使用以下代码使用冒泡排序按字母顺序对包含在数组中的 12 个字符串进行排序:

#include <stdio.h>
#include <string.h>
int main()
{
//initialising variables and the array
char *DT [12] = { "James Smith DT01 DT265A", "John Murphy DT02 DT265A", "Robert Lam DT03 DT265A", "Michael Martin DT04 DT265A", "William Brown DT05 DT265A", "David Roy DT06 DT265A", "Richard Tremblay DT07 DT265A", "Joseph Lee DT08 DT265A", "Thomas Gagnon DT09 DT265A", "Charles Wilson DT10 DT265A", "Chris Philips DT11 DT265A", "Henry Hill DT12 DT265A" } ;
char temp[100];
int n = sizeof(DT)/sizeof(DT[0]);

//Implementing Algorithm using bubble sort to sort string array
//
for (int j = 0 ; j < n - 1 ; j++ )
{
for (int i = j + 1 ; i < n ; i++ )
{
if( strcmp(DT[j], DT[i]) > 0 )
{
strcpy(temp, DT[j]);
strcpy(DT[j], DT[i]);
strcpy(DT[i], temp);
}//end if
}//end for
}//end for
printf("Strings in sorted order are : ");
for (int i=0; i<n; i++)
{
printf("\n String %d is %s", i+1, DT[i]);
}

getchar();
getchar();
return 0;
}//end main()

我得到的输出是:

排序后的字符串是:

字符串 1 是 A

字符串 2 是 A

字符串 3 是 2vid Roy DT06 DT265A

弦4是Roy DT06 DT265A

字符串 5 是 Charles Wilson DT10 DT265A

字符串 6 是

字符串 7 是 Chris Philips DT11 DT265A

字符串 8 是 06 DT265A

9弦是avidRoy DT06 DT265A

字符串 10 是 mith DT01 DT265David Roy Dyy DT06 DT265A

字符串 11 是 y DT06 DT265A

字符串 12 是 y DT06 DT265A

最佳答案

问题是您试图覆盖文字字符串的内容,而 C 中的文字字符串是只读字符数组。

与其尝试复制字符串本身,不如复制指针。如

char *temp = DT[j];
DT[j] = DT[i];
DT[i] = temp;

另一种可能的解决方案是将DT 改为数组 的数组:

char DT[12][100] = { ... };

确保辅助数组的大小足以容纳最长的字符串(加上一个,因为您当然也需要为终止符留出空间)。

关于c - 使用冒泡排序对字符串数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49797484/

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