0
1
已采纳
方亦欧
新手光能
新手光能
你这一题的错误:
首先,这一题用while会好一点。do-while写起来会麻烦。
其次,你不应该用判断s1.size()是否为0来结束,空串是没有长度的。这一题,直接这样写就可以了:
while(cin>>s1)
如果没有读入,它就会自动退出,不会继续执行。并且,这种方法直接用while实现会使代码变得更简短一点,并且更易理解。
while循环:
while(cin>>s1)
cout<<s1.size()<<' ';
如果用do-while,也可以,但是麻烦一点:
cin>>s1;
do{
cout<<s1.size()<<" ";
}while(cin>>s1);
由于cin>>s1这一条语句不仅是在判断,它也同时执行了读入,所以,根据do-while的特性,是不能在循环体里面读入的,如果这样的话,你的while判断就会没有办法判断输入的是否为空串。
望采纳!
方亦欧在2018-02-20 14:48:49追加了内容
再补充一下,如果你在do-while循环里面读入,在后面的while判断里如果再写一遍while(cin>>s1)的话,就相当于读入了两遍,自然会导致错误。
0
夏子健
初级光能
初级光能
for(i=0;i<l;i++)
{
num=0;
while(a[i]!=' '&&i<l)//用字符串可以成功,i<l表示i不能越界,a[i]!=' '表示当前字符不能为空格
{
num++;//num为计数变量,记录当前单词长度
i++;//往下一位进行查找
}
cout<<num<<" ";//输出结果
}
//望采纳,谢谢!祝你ac
0
栾峻岩
初级天翼
初级天翼
for (int i=0;i<s.size();i++)
{
if (s[i]!=' ') a[t]+=s[i];
else t++;
}
0