C语言K&R习题系列——句子中一个空格代替多个空格的四种方法

原题:

Write a program to copy its input to its output, replacing each string of one or more blanks by a single blank.

第一种:

这种最常用,设置一个inspace作为布尔变量,标志当前输入是否在字符中,或在字符外

#include <stdio.h>

int main(void)
{
  int c;
  int inspace=0;

  while((c = getchar()) != EOF)
  {
    if(c == ' ')
    {
      if(inspace == 0)
      {
        inspace = 1;
        putchar(c);
      }
    }
    else
    {
      inspace = 0;
      putchar(c);
    }
  }

  return 0;
}

第二种:自己想的,虽然效果差不多,不过思路不一样

number作为标志位,记录空格的个数

 #include < stdio.h >
 main ( void )
 {
    int c;
    int number;
    number = 0;       //initialization space numbers
    while ( ( c = getchar() ) != EOF )
    {
        if ( c == ' ' )
        {
            ++number;
            if ( number == 1 )
                putchar( c );
        }
        if ( c != ' ' )
        {
            putchar( c );
            number = 0;
        }
    }
    return 0;
 }

第三种:

使用一个while循环来“承接”多个空格

#include < stdio.h >
main ( void )
{
    int c;
    while ( ( c = getchar() ) != EOF )
    {
        if ( ' ' == c )
        {
            putchar ( c );
            while ( ( c = getchar() ) == ' ' && c != EOF )
                ;
        }

        if ( EOF == c )
            break;

        putchar ( c );
    }
    return 0;
}

第四种:

使用一个字符pc作为“当前字符”之前的字符,通过pc来判断其后的空格是否输出

#include <stdio.h>
int main()
{
        int c, pc; 

        pc = EOF;

        while ((c = getchar()) != EOF) {
                if (c == ' ')
                        if (pc != ' ')
                                putchar(c);

                if (c != ' ')
                        putchar(c);
                pc = c;
        }

        return 0;
}
时间: 2024-11-03 21:13:48

C语言K&R习题系列——句子中一个空格代替多个空格的四种方法的相关文章

C语言K&R习题系列——句子中一个空格代替多个空格的四种方法

原题: Write a program to copy its input to its output, replacing each string of one or more blanks by a single blank. 第一种: 这种最常用,设置一个inspace作为布尔变量,标志当前输入是否在字符中,或在字符外 #include <stdio.h>   int main(void) {   int c;   int inspace=0;     while((c = getcha

C语言K&R习题系列——统计文档中每个单词所占字母个数,以直方图形式输出

原题: Write a program to print a histogram of the lengths of words in its input. It is easy to draw the histogram with the bars horizontal; a vertical orientation is more challenging. 这也是我第一个过百行的代码(带注释,空格什么的) 主要分两个部分:输入和输出 #include < stdio.h > #define

C语言K&R习题系列——统计一段文字中各个字母出现的频率

原题: /*Write a program to print a histogram of the frequencies of *difficent characters in it inputs */ 这个和上一个类似 输入部分 #include < stdio.h >    #define NUM_CHARS 256    main ( void )  { int c; int done = 0; int thisIdx = 0; long frequrr[NUM_CHARS + 1];

C语言K&R习题系列——使用缓冲区函数接受长字符输入

原题: Write a program to print all input lines that are longer than 80 characters.  ,实现起来不算难,关键是用到了缓冲区,很不错的一种思想! /* Write a program to print all input lines  * that are longer than 80 characters  */    #include < stdio.h >    #define MINLENGTH 81    /

C语言K&amp;R习题系列——统计一段文字中各个字母出现的频率

原题: /*Write a program to print a histogram of the frequencies of *difficent characters in it inputs */ 这个和上一个类似 输入部分 #include < stdio.h > #define NUM_CHARS 256 main ( void ) { int c; int done = 0; int thisIdx = 0; long frequrr[NUM_CHARS + 1]; long t

在Win8和Win8.1中安装.Net framework 3.5的四种方法

升级到Win8和win8.1的朋友可能都遇到过安装或使用某个应用程序时会要求系统中有.Net Framework 3.5组件,但是在Win8和Win8.1中.Net Framework 默认情况下是不会安装的,这里我通过查阅资料和网络搜集,总结了四种安装.Net Framework的方法,希望能对有需要的朋友有所帮助. 两种联网方法,两种离线方法. 联网方法: 方法一:提示按需安装 .NET Framework 3.5 一般需要安装.NET framework 3.5的都是某些用到该框架的应用程

【Java必修课】通过Value获取Map中的键值Key的四种方法

1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value值,求Key值. 本文将用实例介绍四种方法,通过传入Value值,获取得到Key值. 2 四种方法 2.1 循环法 循环法就是通过遍历Map里的Entry,一个个比较,把符合条件的找出来.会有三种情况: (1)找到一个值 (2)找到多个值 (3)找不到 具体代码如下: @Test public void lo

【转】Java中字符串中子串的查找共有四种方法(indexof())

原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引. 3.int lastIndexOf(String st

IOS中Json解析的四种方法

作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSON格式化校验(点击打开链接).此网站不仅可以检测Json代码中的错误,而且可以以视图形式显示json中的数据内容,很是方便. 从IOS5开始,APPLE提供了对json的原生支持(NSJSONSerialization),但是为了兼容以前的ios版本,可以使用第三方库来解析Json. 本文将介绍TouchJso