解题思路:
1.由题可得,每个单词间可能不止一个空格,要求过滤掉多余的空格,字符串中含有空格,那么可以利用获取整行的方法来获得字符串。
2.得到字符串后,设一个字符数组来存储要输出的字符,可以发现,如果当前位置上不是空格的话,是肯定要存储的,如果碰到了连续的空格是不存储的,那么可以只存最后一个空格,判断条件为如果当前位置是空格并且下一位置不是空格的话要存储,至此,两种情况都已经分析出来,写成代码为
if((a[i]!=' ')||(a[i]==' '&&a[i+1]!=' '))
ans[++num]=a[i];
//如果当前位置不是空格或者当前位置是空格,下一个位置不是空格
3.最后输出字符数组即可
#include<bits/stdc++.h>
using namespace std;
char ans[210];
int main()
{
string a;
int num=0;
getline(cin,a);//获取整行字符串
for(int i=0;i<=a.length()-1;i++)//依次遍历字符串
{
if((a[i]!=' ')||(a[i]==' '&&a[i+1]!=' '))
ans[++num]=a[i];//如果当前位置不是空格或者当前位置是空格,下一个位置不是空格
}//将该字符存入字符数组
for(int i=1;i<=num;i++)//打印字符数组
cout<<ans[i];
return 0;
}