• 华为机试——字符倒叙输出


    C_C++_WY_01. 字符倒叙输出

    • 题目描述:

    编写一个函数,将字符串中的每个单词的倒序输出,字符串中以空格分割各个单词,如果碰到数字则跳过。

    • 要求实现函数:

    void vConvertMsg(char *pInputStr, long lInputLen, char *pOutputStr);

    【输入】

    char *pInputStr:指向一个字符串的指针

    long lInputLen:该字符串的长度

    char *pOutputStr:指向一块输出的内存,和输入的字符串是大小是(lInputLen+1)

    【返回】 无

    【注意】 只需要完成该函数功能算法,中间不需要有任何IO的输入输出

    • 示例

    输入:He is a man no12 3456.

    返回:eH si a nam on12 3456.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61

    #include <iostream>
    #include <string.h>
    #include <ctype.h>
    using namespace std;
     
    void convertWord(char *head, char *tail)
    {
        char tmp;
     
        while (head < tail)
        {
            tmp = *head;
            *head = *tail;
            *tail = tmp;
     
            head++;
            tail--;
        }
    }
     
    void vConvertMsg(char *pInputStr, long lInputLen, char *pOutputStr)
    {
        if ((pInputStr == NULL) || (lInputLen <= 0))
        {
            return;
        }
     
        char *head = pInputStr;
        char *tail = pInputStr;
     
        while (*tail != '')
        {
            head = tail;
            while (isalpha(*tail) && (*tail != '')) //find the end of a word.
            {
                tail++;
            }
     
            tail--; //point to the end of a word.
            convertWord(head, tail);
     
            tail++; //point to the first char that it's not a alpha.
            while ((!isalpha(*tail)) && (*tail != '')) //find the head of a word.
            {
                tail++;
            }
        }
     
        strcpy(pOutputStr, pInputStr);
    }
     
    int main() {
        char pInputStr[] = "He is a man no12 3456";
        char pOutputStr[strlen(pInputStr)+1];
     
        vConvertMsg(pInputStr, strlen(pInputStr), pOutputStr);
     
        cout << pOutputStr << endl;
     
        return 0;
    }
  • 相关阅读:
    5 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之生产环境下drbd裂脑处理
    elk系列8之logstash+redis+es的架构来收集apache的日志
    elk系列7之通过grok分析apache日志
    elk系列6之tcp模块的使用
    elk系列5之syslog的模块使用
    elk系列4之kibana图形化操作
    elk系列3之通过json格式采集Nginx日志
    elk系列2之multiline模块的使用
    Docker探索系列2之镜像打包与DockerFile
    elk系列1之入门安装与基本操作
  • 原文地址:https://www.cnblogs.com/helloweworld/p/3200860.html
Copyright © 2020-2023  润新知