• 1009. 说反话 (20)


    原题: https://www.patest.cn/contests/pat-b-practise/1009

    题意理解: 输入的开头有可能有空格, 输出的末尾经过我测试也可以有多余的空格.

    实现思路: 本题如果用语言内置分割函数实现非常简单, 但是那样做显然不符合道义.
    下面我用C语言实现, 不使用任何内置函数.
    总体思路就是, 手动按照空格拆分字符串, 最后倒序输出.

    完整实现:

    #include <stdio.h>
    
    // input: Hello World Here I Come
    // output: Come I Here World Hello
    
    int getLength (char *str);
    
    int main () {
        int i;
        int j = 0;              // 添加分割字符串用
        char ch = ' ';          // 打印控制变量
        char source[100];       // 原字符串
        char result[80][80];    // 分割后的字符串数组
        int slen;               // 原字符串长度
        int rlen = 0;           // 字符串数组一维最后下标
    
        gets(source);
        slen = getLength(source);
        for (i=0; i<slen; i++) {
            if (source[i] != ' ') {
                result[rlen][j] = source[i];
                j++;
            }
            // 当遇到空格时, 切换到下个下标
            // 若果开头有多个空格, 那么这里直接会存一个结束标志
            // 开头有多个空格, 只会影响输出的末尾多输出空格
            // 对题目答案没有影响, 我就没有做特殊处理
            // 本题在PAT测试上, 为满分通过
            if (source[i] == ' ') {
                result[rlen][j] = '';
                rlen++;
                j = 0;
            }
            // 手动为最后一个字符串添加结束标志
            if (source[i + 1] == '') {
                result[rlen][j] = '';
            }
        }
    
        for (i=rlen; i>=0; i--) {
            if (i == 0) {
                ch = '
    ';
            }
            printf("%s%c", result[i], ch);
        }
    
        return 0;
    }
    
    int getLength (char *str) {
        int i = 0;
        while (*str != '') {
            i++;
            str++;
        }
        return i;
    }
    
    
  • 相关阅读:
    网络编程-Python的socket库
    Python -用虚拟环境保存库文件
    Python --文件的读写
    VIM--常用操作
    libpcap -学习1
    Python -装饰器
    C++ 关于map,function的简单应用
    UVAlive 3635 (13.08.23)
    C语言中的整型提升(integral promotion)
    [置顶] 从一位数组中提取最小k个元素
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7661336.html
Copyright © 2020-2023  润新知