| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1432 人关注过本帖
标题:字符串排序
只看楼主 加入收藏
裂地劈龙
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2019-12-11
结帖率:0
收藏
已结贴  问题点数:5 回复次数:5 
字符串排序
本题要求编写程序,读入5个字符串,按由小到大的顺序输出。

输入格式:
输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。

输出格式:
按照以下格式输出排序后的结果:

After sorted:
每行一个字符串
输入样例:
red yellow blue green white
输出样例:
After sorted:
blue
green
red
white
yellow


只用数组做
搜索更多相关主题的帖子: 格式 输入 输出 字符串 排序 
2019-12-11 19:47
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:566
专家分:3690
注 册:2019-7-29
收藏
得分:2 
#include <stdio.h>

struct menu
{
    char head;
    int order;
};

int main()
{
  char a[5][81]={0},str[410]={0};
  struct menu list[6]={0};

  fgets(str, sizeof(str), stdin);
  sscanf(str,"%s %s %s %s %s",a[0],a[1],a[2],a[3],a[4]);

  for(int i=0;i<5;i++)
  {
    if(a[i][0]<'a')
      list[i].head+='a'-'A';
    list[i].head+=a[i][0];
    list[i].order=i;
  }
  for(int i=0;i<5;i++)
  {
    for(int j=0;j<4-i;j++)
    {
        if(list[j].head-list[j+1].head>0)
        {
            list[6].head=list[j].head;
            list[6].order=list[j].order;
            list[j].head=list[j+1].head;
            list[j].order=list[j+1].order;
            list[j+1].head=list[6].head;
            list[j+1].order=list[6].order;
        }
    }
  }

  for(int i=0;i<5;i++)
    printf("%s\n",a[list[i].order]);

    return 0;
}

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-12-11 21:43
裂地劈龙
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2019-12-11
收藏
得分:0 
回复 2楼 纯蓝之刃
有没有只用数组做的方法
2019-12-11 22:04
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:2 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int comp( const void* a, const void* b )
{
    return strcmp( (const char*)a, (const char*)b );
}

int main( void )
{
    char a[5][80];
    scanf( "%s%s%s%s%s", a[0],a[1],a[2],a[3],a[4] );

    qsort( a, 5, sizeof(*a), &comp );
    printf( "After sorted:\n%s\n%s\n%s\n%s\n%s\n", a[0],a[1],a[2],a[3],a[4] );
}
2019-12-12 08:46
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
收藏
得分:2 
#include<stdio.h>
#include<string.h>
#define N 5
#define M 80
int main()
{
    void c(char*,char*);
    char a[N][M];
    for(int i=0;i<N;i++) scanf("%s",a[i]);
   
    for(int i=0;i<N-1;i++)
    for(int j=0;j<N-i-1;j++)
    if(strcmp(a[j],a[j+1])>0) c(a[j],a[j+1]);
   
    printf("After sorted:\n");
    for(int i=0;i<N;i++) printf("%s\n",a[i]);
    return 0;
}
void c(char *a,char *b)
{
    char c[M];
    strcpy(c,a);
    strcpy(a,b);
    strcpy(b,c);
}
2019-12-12 15:11
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:2 
#include<stdio.h>
#include<string.h>
#define M 5
#define N 20
main()
{
char str[M][N],temp[N];
 int i,j;
 for(i=0;i<M;i++)
 {
  printf("请输入第%d个字符串:",i+1);
  scanf("%s",&str[i]);
 }
 printf("排序前:\n");
 for(i=0;i<M;i++)
  printf("第%d个字符串:%s\n",i+1,str[i]);
 for(j=0;j<M-2;j++)
 {
  for(i=0;i<=M-j-1;i++)
   if(strcmp(str[i],str[i+1])>0)
   {
   strcpy(temp,str[i]);
    strcpy(str[i],str[i+1]);
    strcpy(str[i+1],temp);
   }
 }
 printf("排序后:\n");
 for(i=0;i<M;i++)
  printf("第%d个字符串:%s\n",i+1,str[i]);
}
2019-12-12 15:25
快速回复:字符串排序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014993 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved