题目:
链接:字符串排序
这题思路很简单!
就是有几个坑!!!
直接看代码:
注意题目是最大长度是100,但是我们数组不能只开辟100,因为字符串后面会默认有一个’\0’,所以我们开辟101就行啦!
#include<stdio.h>
#include<string.h>
typedef struct Dictionaries
{
char a[101];
}Dic;
int cmp(void* p1, void* p2)
{
return strcmp(((Dic*)p1)->a, (((Dic*)p2)->a));
}
int main()
{
int n = 0;
scanf("%d", &n);
Dic arr[1000];
for (int i = 0; i < n; i++)
{
scanf("%s", arr[i].a);
}
qsort(arr, n, sizeof(Dic), cmp);
for (int i = 0; i < n; i++)
{
printf("%s\n", arr[i].a);
}
return 0;
}
还有同学可能没有用C语言的库函数qsort来排序,可能直接手写了一个排序,比如冒泡!
那我们得知道,字符数组该怎么排序呢???---------------字符数组排序,那肯定是排的二维数组喽!!!!
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1-i;j++)
{
//strcmp(str[j],str[j+1])
if(strcmp(str[j],str[j+1])>0)
{
strcpy(a,str[j+1]);
strcpy(str[j+1],str[j]);
strcpy(str[j],a);
/*for(int k=0;k<100;k++)
{
a[k]=str[j+1][k];
str[j+1][k]=str[j][k];
str[j][k]=a[k];
}*/
}
}
}