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

如题所述

#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腾讯的
怎样

追答

已经发送

追问

怎么不是txt格式

追答

c语言的源文件就是.c
的,你用记事本可以直接打开。

追问

我改格式了谢谢
能告诉我你用的方法名字吗

追答

嗯,可以改文体格式

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-21
这个冒泡程序可以改一下,不要交换串,太慢;
再加一个一维数组存放这些字符串的序号,只对这一维数组排序 ,
而原字符串二维数组不动,可大大加快排序速度。
#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]]);
}
}
很明显不再对字符串进行复制或交换了,速度快多了。
相似回答