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腾讯的
怎样
已经发送
再加一个一维数组存放这些字符串的序号,只对这一维数组排序 ,
而原字符串二维数组不动,可大大加快排序速度。
#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]]);
}
}
很明显不再对字符串进行复制或交换了,速度快多了。