• OpenJudge就算概论-过滤多余的空格


    /*=====================================
    过滤多余的空格
    总时间限制:
        1000ms
    内存限制:
        65536kB
    描述
        一个句子的每个单词之间也许有多个空格,过滤掉多余的空格,只留下一个空格
    输入
        一个字符串(长度不超过200),句子的头和尾都没有空格。
    输出
        过滤之后的句子
    样例输入
        Hello      world.This is    c language.
    样例输出
        Hello world.This is c language.
        
    思路:
    输入字符串a,用gets输入。 
    用两个下标i、j分别指向数组a,a[i]是将要被移动的字符,
    a[j]是将要被a[i]覆盖的单元。
    开始时i、j都指向a[0]。
    从左向右扫描a数组,遇到非空格字符a[i]直接复制到a[j].
    遇到空格字符则看a[j]的前一个是否空格,若是空格则新
    出现的空格是多余的,否则新出现的空格是需要保留的。 
    ======================================*/
     1 #include<stdio.h>
     2 #include<string.h>
     3 int main()
     4 {
     5     char a[205];
     6     int i,j,len;
     7     freopen("5.in","r",stdin);
     8     gets(a);
     9     len=strlen(a);
    10     for(i=0,j=0;i<len;i++)//i是扫描原数组a的下标,j是调整后的下标。
    11     {
    12         if(a[i]!=' ')//非空格字符 
    13         {
    14             a[j]=a[i];
    15             j++;
    16         }
    17         else
    18         {//遇到空格 
    19             if(a[j-1]!=' ')//a[j]的前一个不是空格 
    20             {
    21                 a[j]=a[i];
    22                 j++;
    23             }
    24         }
    25     }
    26     a[j]=''; 
    27     printf("%s
    ",a);
    28     return 0;
    29 }

     看一个简单偷懒的实现:

     1 #include <stdio.h>
     2 int main(int argc, char *argv[])
     3 {
     4     char a[205];
     5     while(scanf("%s",a)!=EOF)
     6     {
     7         printf("%s ",a);
     8     }
     9     return 0;
    10 }
  • 相关阅读:
    ubuntu 14.04 LTS 163更新源
    Windows 2008R2 修改SID
    ubuntu14 使用rsync远程备份文件
    vim常用
    Ubuntu创建lvm
    Windows 迁移本地用户配置文件到域用户
    Linux scp使用
    Centos 7 修改网卡名称、静态IP
    Axel多线程工具安装
    testlink 1.9.19安装
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/3500473.html
Copyright © 2020-2023  润新知