zoukankan      html  css  js  c++  java
  • 将字符串中单词经排序后输出

    思路

    先将字符串中的单词分割保存至二维数组中,再经排序后输出。水题,直接上代码了。

    代码

    /*************************************************************************
        > File Name: words_sort.c
        > Author: KrisChou
        > Mail:zhoujx0219@163.com 
        > Created Time: Sun 24 Aug 2014 08:41:42 PM CST
     ************************************************************************/
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define N 128
    #define WORD_CNT 128
    #define WORD_LEN 256
    
    static int my_isspace(char c)
    {
        if(c == ' '|| c == '
    ' || c == '	' || c == 'v')
            return 1;
        else
            return 0;
    }
    
    static void word_show(char(*words)[WORD_LEN],int cnt)
    {
        int index;
        for(index = 0; index < cnt; index++)
        {
            printf("%-15s", words[index]);
        }
    }
    
    static void word_save(char *line, int bg, int end, char *dest)
    {
        int index,index_dest;
        for(index = bg,index_dest = 0; index <= end; index++,index_dest++)
        {
            dest[index_dest] = line[index];
        }
        dest[index_dest] = '';
    }
    
    static int word_split(char *line, char(*words)[WORD_LEN])
    {
        int bg,end;
        int word_cnt;
        bg = 0;
        word_cnt = 0;
        while(line[bg] != '')
        {
            while(my_isspace(line[bg]))
            {
                bg++;
            }
            if(line[bg] == '')
            {
                break;
            }
            end = bg;
            while(line[end] != '' && !my_isspace(line[end]))
            {
                end++;
            }
            word_save(line,bg,end-1,words[word_cnt++]);
            bg = end;
        }
        return word_cnt;
    }
    
    static void word_sort(char(*words)[WORD_LEN],int cnt)
    {
        int pos,index;
        char key[WORD_LEN];
        memset(key,0,WORD_LEN);
        for(pos = 1; pos < cnt; pos++)
        {
            strcpy(key,words[pos]);
            for(index = pos - 1; index >= 0; index--)
            {
                if(strcmp(key,words[index]) < 0)
                {
                    strcpy(words[index+1],words[index]);
                }else
                {
                    break;
                }
            }
            strcpy(words[index+1],key);
        }
    }
    
    int main(int argc, char *argv[])
    {
        char line[N];
        char arr[WORD_CNT][WORD_LEN];
        int word_cnt;
        while(fflush(stdin),gets(line) != NULL)
        {
            word_cnt = word_split(line,arr);
            word_show(arr,word_cnt);
            printf("
    ");
            word_sort(arr,word_cnt);
            word_show(arr,word_cnt);
            printf("
    ");
    
        }
        return 0;
    }

  • 相关阅读:
    BZOJ4779: [Usaco2017 Open]Bovine Genomics
    USACO比赛题泛刷
    BZOJ1977: [BeiJing2010组队]次小生成树 Tree
    LOJ #10132. 「一本通 4.4 例 3」异象石
    $O(n+log(mod))$求乘法逆元的方法
    BZOJ2226: [Spoj 5971] LCMSum
    数据库 | Redis 缓存雪崩解决方案
    中间件 | 微服务架构
    数据库 | SQL 诊断优化套路包,套路用的对,速度升百倍
    数据库 | SQL语法优化方法及实例详解
  • 原文地址:https://www.cnblogs.com/jianxinzhou/p/3933590.html
Copyright © 2011-2022 走看看