manju99 2019-01-08 20:12 采纳率: 0%
浏览 1122

编写程序对用户输入的一系列单词排序

假设每个单词不超过20个字符,当用户输入空单词(即敲回车键而没有录入任何单词)时停止读取,把每个单词存储在一个动态分配的字符串中,用一个指针数组来跟踪这些字符串,读完所有单词后对数组排序。
我试着编了一个没用动态分配的程序,但问题有点多,希望会的大佬帮忙改改或者帮忙写一个供我参考一下,谢谢
#include
#include
#include
#define M 50
#define N 20
int read_line(char str[],int n)
{
int ch,i=0;
while((ch=getchar())!='\n'){
while(ch==' ')ch=getchar();
if(i<n&&ch!='\n')
str[i++]=ch;
}
str[i]='\0';
return i;
}
void quicksort(char *str[],int n)
{
int i=1,t;
char max[N];
strcpy(max,str[0]);
if(n<=1)return;
for(;i<n;i++){
if(strcmp(str[i],max)){
strcpy(max,str[i]);
t=i;
}
if(strcmp(str[i],max)==0)
t=0;
}
strcpy(str[t],str[n-1]);
strcpy(str[n-1],max);
quicksort(str,n-1);
}
int main(void)
{
int i,n=0;
char *str[N];
for(i=0;n<M;i++,n++)
{printf("Enter word:");
if(read_line(str[n],N)==0)
break;
}
quicksort(str,n);
for(i=0;i<n;i++)
printf("%s",str[i]);
return 0;
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作
    • ¥15 求NPF226060磁芯的详细资料