求帮忙修改 最多有一万个单词 都是小写 一个单词最多25个字母
#include
#include
#include
#define L 10000
#define K 1000
int cmp(const void *a, const void *b){
return strcmp((char *)a, (char *)b);
}
int main()
{
int k;
char s[L][K];
while(scanf("%s",s[k])!=EOF)
{
k++;
}
for(int i=0;i
qsort(s, k-1, sizeof(char*), cmp);
for(int i=0;i
return 0;
}
代码里修改了5个地方,修改的地方都在代码里标注了,运行结果如下(图中的三个^Z是因为vs2022结束循环需要输入3次CTRL+Z,不影响最终结果):
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define L 10000
#define K 26 //修改1 单词长度不超过25,所以用26个就足够了
int cmp(const void* a, const void* b) {
return strcmp((char*)a, (char*)b);
}
int main()
{
int k = 0; //修改2:初始化
char s[L][K];
while (scanf("%s", s[k]) != EOF)
{
if(strlen(s[k])> 0) //修改3:这里判断一下,避免读入空行
k++;
}
//for (int i = 0; i < k - 1; i++) //修改4 删除for循环
qsort(s, k , K, cmp); //修改5 第二个参数是k,第三个参数是K
for (int i = 0; i < k; i++)
printf("%s\n", s[i]);
return 0;
}
char s[L][K];这个申请空间太大了吧,是不是要放到main函数外面成为全局变量呢
另外 int k=0;才行,k要初始化啊
修改如下:
#define L 10000
#define K 1000
char s[L][K];
int cmp(const void *a, const void *b){
return strcmp((char *)a, (char *)b);
}
int main()
{
int k=0;
while(scanf("%s",s[k])!=EOF)
k++;
qsort(s, k, sizeof(s[0]), cmp);
for(int i=0;i<k;i++)
printf("%s\n",s[i]);
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!