第十六周项目2--除所有空格


  1. /*  
  2. *Copyright (c)2014,烟台大学计算机与控制工程学院  
  3. *All rights reserved.  
  4. *文件名称:num.cpp  
  5. *作    者:吴英政  
  6. *完成日期:2014年12月16日  
  7. *版 本 号:v1.0  
  8.  
  9. *问题描述:去除句子中所有的空格。  
  10. *程序输入:无。 
  11. *程序输出:去除句子中所有的空格后的句子。 
  12. */  
  13. #include <iostream>
    using namespace std;
    
    void palltrim(char str[]);
    int main(void)
    {
        char s[81]="     Some    spaces   are    unnecessary.    ";
        cout<<"请输入一个句子:";
        cout<<"原句子:\""<<s<<"\""<<endl;
        palltrim(s);
        cout<<"去除多余空格后为:\"";
       cout<<s<<"\""<<endl;
        return 0;
    }
    
    void palltrim(char *str)
    {
       char *p=str,*q=str;
        bool notSpace=false;
        while(*q==' ')
            q++;
        while(*q!='\0')
        {
            if (*q!=' ')
            {
                notSpace=true;
                *p++=*q++; // 不是空格,复制
            }
            else if (notSpace)   //是空格,但目前是第一个(因为之前notSpace=true;的条件是遇非空格)
            {
                notSpace=false;   //第一个空格仍然要复制
                *p++=*q++;
            }
            else   //如遇第二个或更后的空格,正是由于遇到第一个空格并复制后,notSpace=false;的原因,会走到这儿
            {
                q++;   //不复制
            }
        }
        *p='\0';
    }
  14. 不能理解为什么第一个空格需要复制,所以只能是懂非懂的摘抄
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值