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

大哥大姐们,打扰一下,c语言 输入10个单词,按字典顺序输出 不要复制不对的过来啊
最新回答
墨城

2024-11-30 05:10:34

#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
的,你用记事本可以直接打开。
追问
我改格式了谢谢
能告诉我你用的方法名字吗
追答
嗯,可以改文体格式
距离感

2024-11-30 05:35:31

这个冒泡程序可以改一下,不要交换串,太慢;
再加一个一维数组存放这些字符串的序号,只对这一维数组排序 ,
而原字符串二维数组不动,可大大加快排序速度。
#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]]);
}
}
很明显不再对字符串进行复制或交换了,速度快多了。