我有这个程序的问题。我必须创建一个包含五个字符串元素的数组及其副本然后我必须按字典顺序对其进行排序。任何人都可以帮助我吗?
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
#define L 100
int main() {
char s[N][L],c[N][L],*str;
int i,aux,sup,j;
printf("Inserisci stringa: ");
for(i=0;i<N;i++)
scanf("%s",s[i]);
for(i=0;i<5;i++)
strcpy(c[i],s[i]);
printf("Frase originale: ");
for(i=0;i<5;i++)
printf("%s\t",s[i]);
printf("\n\nCopia: ");
for(i=0;i<5;i++)
printf("%s\t",c[i]);
for(i=0;i<N;i++){
for(j=i+1;j<N;j++)
{
if(c[i]<c[j])
{
str=c[i][L];
c[i][L]=c[j][L];
c[j][L]=str;}
}
}
printf("\n\nCopia ordinata: ");
for(i=0;i<N;i++)
printf("\t%s",c[i]);
return 0;
}
请建议我做任何更改。谢谢。
答案 0 :(得分:0)
要按字母顺序排列两个字符串,您可以使用函数strcmp(string1, string2)
。
返回的值R是:
string1
中的值较低(即string1
按字母顺序排在string2
之后),则为0; string1
中的值较高(即string2
按字母顺序排在string1
之后),则为0。有关详细信息,请参阅:http://www.cplusplus.com/reference/cstring/strcmp/。
要对字符串数组进行排序,可以使用不同的排序算法,如果您是初学者,我建议使用冒泡排序(请参阅http://www.algolist.net/Algorithms/Sorting/Bubble_sort进行介绍)。
最后,我会建议更清晰的缩进和变量命名,在编写更复杂的代码时会非常有用。
祝你好运!