openJudge | 过滤多余的空格 C语言

总时间限制: 1000ms 内存限制: 65536kB

描述

一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。

输入

一行,一个字符串(长度不超过200),句子的头和尾都没有空格。

输出

过滤之后的句子。

样例输入

复制代码
Hello      world.This is    c language.

样例输出

复制代码
Hello world.This is c language.

答案

方法一

c 复制代码
#include <stdio.h>
int main() {
    int switch_ = 0;
    static char str[201], str_[201], *p = str, *q = str_;
    gets(str);
    for(p = str; *p != 0; p++) {
        if(*p == ' ' && switch_ == 0) {
            switch_ = 1;
            *(q++) = *p;
        } else if(*p != ' ') {
            switch_ = 0;
            *(q++) = *p;
        }
    }
    puts(str_);
}

方法二

c 复制代码
#include <stdio.h>
int main() {
    int switch_ = 0;
    static char str[201], *p = str, *q = str;
    gets(str);
    for(p = str; *p != 0; p++) {
        if(*p == ' ' && switch_ == 0) {
            switch_ = 1;
            *(q++) = *p;
        } else if(*p != ' ') {
            switch_ = 0;
            *(q++) = *p;
        }
    }
    puts(str_);
}

方法二

c 复制代码
#include <stdio.h>
int main() {
    int switch_ = 0;
    static char str[201], *p = str, *q = str;
    gets(str);
    for(int i = 0; i < 201; i++, p++) {
        if(*p == ' ' && switch_ == 0) {
            switch_ = 1;
            *(q++) = *p;
        } else if(*p != ' ') {
            switch_ = 0;
            *(q++) = *p;
        }
    }
    puts(str);
}
相关推荐
AshinGau21 小时前
Softmax 与 交叉熵损失
神经网络·算法
似水এ᭄往昔21 小时前
【C++】--AVL树的认识和实现
开发语言·数据结构·c++·算法·stl
程序员zgh21 小时前
常用通信协议介绍(CAN、RS232、RS485、IIC、SPI、TCP/IP)
c语言·网络·c++
栀秋66621 小时前
“无重复字符的最长子串”:从O(n²)哈希优化到滑动窗口封神,再到DP降维打击!
前端·javascript·算法
xhxxx21 小时前
不用 Set,只用两个布尔值:如何用标志位将矩阵置零的空间复杂度压到 O(1)
javascript·算法·面试
有意义21 小时前
斐波那契数列:从递归到优化的完整指南
javascript·算法·面试
charlie11451419121 小时前
编写INI Parser 测试完整指南 - 从零开始
开发语言·c++·笔记·学习·算法·单元测试·测试
mmz120721 小时前
前缀和问题2(c++)
c++·算法
Bigan(安)21 小时前
【奶茶Beta专项】【LVGL9.4源码分析】08-theme主题管理
linux·c语言·mcu·arm·unix
了一梨1 天前
外设与接口:按键输入 (libgpiod)
linux·c语言