c语言 输入10个单词,按字典顺序输出 不要复制不对的过来啊

 我来答
百度网友6fe74e2
推荐于2017-12-16 · TA获得超过6592个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:242万
展开全部

#include "stdio.h"

#include "string.h"

int main()

{

     char str[10][30]={0};

     char tem[30]={0};

     int i,j;

     printf("请输入10个单词:"); 

     for(i=0;i<10;i++)//输入

          scanf("%s",str[i]);

     for(i=0;i<9;i++)//排序

        for(j=i+1;j<10;j++)

            if(strcmp(str[i],str[j])>0)

            {

                  strcpy(tem,str[i]);

                  strcpy(str[i],str[j]);

                  strcpy(str[j],tem);

           }

     printf("这10个单词按照字典排序输出为:\n");

     for(i=0;i<10;i++)// 输出

     {

          printf("%s\n",str[i]);

     }

}

更多追问追答
追问
能发txt给我吗??这里看是乱码 我的邮542061190腾讯的
怎样
追答
已经发送
ycsxm
2013-04-21 · TA获得超过3.3万个赞
知道大有可为答主
回答量:1.4万
采纳率:0%
帮助的人:7878万
展开全部
这个冒泡程序可以改一下,不要交换串,太慢;
再加一个一维数组存放这些字符串的序号,只对这一维数组排序 ,
而原字符串二维数组不动,可大大加快排序速度。
#include "stdio.h"
#include "string.h"
int main()
{
char str[10][30]={0};
int tem[10]; // 存放串的序号
int i,j;
printf("请输入10个单词:");
for(i=0;i<10;i++)//输入
{
scanf("%s",str[i]);
tem[i]=i; // 存放串的序号
}

for(i=0;i<9;i++)//排序
for(j=i+1;j<10;j++)
if(strcmp(str[tem[i]],str[tem[j]])>0)
{
int t=tem[i];
tem[i]=tem[j];
tem[j]=t;
}
printf("这10个单词按照字典排序输出为:\n");
for(i=0;i<10;i++)// 输出
{
printf("%s\n",str[tem[i]]);
}
}
很明显不再对字符串进行复制或交换了,速度快多了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式