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]]);
}
}
很明显不再对字符串进行复制或交换了,速度快多了。

c语言 输入10个单词,按字典顺序输出 不要复制不对的过来啊
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]); ...

c语言 输入10个单词,按字典顺序输出 不要复制不对的过来啊
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]...

c语言 输入10个单词 怎么才能按字典顺序输出 分别用插入排序和归并排序...
建立 索引表, 单词的存储索引--单词权值 逐个对应,每个单词 对应一个权值,每个字母对应 0~25, 单词的最后字母对应0,向前依次对应 26, 26*26, 26*26*26。。。, 26进制数,类似于十进制数, 然后 按权值进行排序

C语言题目:编写程序,输入 10 个国名,按字母字典序排序后输出。 要求...
int m){ int i; for(i=0;i<m;i++) gets(str[i]);}void CountrySort(char str[][N],int m) { char t[M][N];int a,k,i,j=0; for(k=m-1;k>0;k--) for(i=0;i<k;i++) {

从键盘输入10个字符串,把字符串按字典升序排列并输出。每行输出一个字 ...
每行输... 2 2013-04-21 c语言 输入10个单词,按字典顺序输出 不要复制不对的过来啊 44 2009-06-04 一道c语言程序题: 输入5个字符串,按字典顺序将其重新排列... 47 2007-06-25 输入5个字符串,按英文字典排序由小到大顺序输出的C语言程序 1 2013-12-30 C语言练习题:输入n个字符串,将它们按...

c语言中如何通过函数按字典顺序排列输入的十个字符串
这个函数在<cstring>库中[或者c语言中在<string.h>库中]这个函数的用法就是输入字符串a,b,判断a,b的字典序大小.若a的字典序小返回负值 若a的字典序和b相同返回0 若a的字典序大于b的字典序返回正数 然后你将上面冒泡的部分改一下的话就是:if(strcmp(a[j],a[j+1])>0) swap(a[j],a...

C语言:输入10个姓并按字典序的升序排序
{ char name[20];};void main(){ int i,j;char str[20];struct xing ren[10];\/\/结构体数组,用来建立多少个人来存放的 for (i=0;i<10;i++){ printf ("请输入第 %d 姓: ",i+1);scanf ("%s",ren[i].name);} for (i=1;i<10;i++)for (j=0;j<10-i;j++){ if (...

从键盘输入10个字符串,按照字典顺序将其排序输出 二维字符数组_百度...
\/\/没用2为字符串,麻烦死。用的结构体 include<stdio.h> include<string.h> include<stdlib.h> typedef struct { char c[105];}Line;Line a[10];int cmp(const void *x,const void *y){ char *m = ((Line*)x)->c;char *n = ((Line*)y)->c;return strcmp(m,n);} int main...

C语言中如何将10个字符串进行排序
include<string.h> int main(){ int j,k,i,t,n;char s[10][10],b[10][10];for(i=0;i<10;i++){ scanf("%s",s[i]);} n=strlen(s[1]);k=0;for(i=0;i<9;i++){ for(j=0;j<9-i;j++)if(strcmp(s[j],s[j+1])>0){ for(k=0;k<n;k++)b[j][k]=s[j...

C语言 输入如干姓名,按字典序排序后输出
include <string.h> define N 10 int main(){ char sn[N][20],t[20];int i,j,k;for(i=0; i<N; i++)scanf("%s",sn[i]);for(i=0; i<N-1; i++){ k=i;for(j=i+1; j<N; j++)if(strcmp(sn[j],sn[k])<0) k=j;strcpy(t,sn[i]);strcpy(sn[i],sn[k]);...

相似回答