尝试编写一个 C 程序来按字母顺序对二维数组中的 25 个单词进行冒泡排序
Trying to write a C program to bubble sort 25 words from a 2 dimensional array alphabetically
我想出了如何读取字符串,但我不确定如何使用冒泡排序来按字母顺序排列它们。这是我必须做的。我一直收到错误“分段错误(核心已转储)。
#include <stdio.h>
#include <string.h>
#define NUM 25 /* number of strings */
#define LEN 1000 /* max length of each string */
main()
{
char Strings[NUM][LEN];
int i, j;
char tempValue;
printf("Please enter %d strings, one per line:\n", NUM);
for(i=0; i<NUM-1; i++)
{
fgets(Strings[i], LEN-2, stdin);
}
for(i=0; i<NUM-1; i++)
{
for(j=0; j<LEN-2; j++)
{
if(Strings[i][j] < Strings[i+1][j])
{
tempValue = Strings[i][j];
Strings[i][j] = Strings[i + 1][j];
Strings[i + 1][j] = tempValue;
}
}
}
}
使用 strcmp
if(strcmp(Strings[i], Strings[i+1]) > 0)
{
//swap elements
}
它基本上会比较字符串中的字符和第一个不匹配的字符对,如果它在传递给函数的第一个字符串中具有更大的值,它将 return 1.
我想出了如何读取字符串,但我不确定如何使用冒泡排序来按字母顺序排列它们。这是我必须做的。我一直收到错误“分段错误(核心已转储)。
#include <stdio.h>
#include <string.h>
#define NUM 25 /* number of strings */
#define LEN 1000 /* max length of each string */
main()
{
char Strings[NUM][LEN];
int i, j;
char tempValue;
printf("Please enter %d strings, one per line:\n", NUM);
for(i=0; i<NUM-1; i++)
{
fgets(Strings[i], LEN-2, stdin);
}
for(i=0; i<NUM-1; i++)
{
for(j=0; j<LEN-2; j++)
{
if(Strings[i][j] < Strings[i+1][j])
{
tempValue = Strings[i][j];
Strings[i][j] = Strings[i + 1][j];
Strings[i + 1][j] = tempValue;
}
}
}
}
使用 strcmp
if(strcmp(Strings[i], Strings[i+1]) > 0)
{
//swap elements
}
它基本上会比较字符串中的字符和第一个不匹配的字符对,如果它在传递给函数的第一个字符串中具有更大的值,它将 return 1.