帮忙看看这个c++小程序?多谢!

输入单词直到输入“done”结束,并统计done以前的单词数。用数组不用string类。下面是我写的,不知错哪?请指教!#include<iostream>#includ... 输入单词直到输入“done”结束,并统计done以前的单词数。用数组不用string类。下面是我写的,不知错哪?请指教!
#include<iostream>
#include<cstring>
const int arrsize=20;
int main()
{
using namespace std;
int count=0;
char word[arrsize];
cin.get(word,arrsize);
while (!strcmp(word,"done"))
{
++count;
cin.get(word,arrsize);

}
cout<<count;
cin.get();

return 0;
}
谢谢大家帮我看这个程序。但要可以正确运行啊?例如:
输入:what are you done wangyufeng
myname isjack
输出:3
展开
 我来答
务丿蓓5176
2005-11-04 · TA获得超过363个赞
知道答主
回答量:187
采纳率:100%
帮助的人:0
展开全部
三个错误:
1、判断条件错误,strcmp(word,"done")返回非零表示不等,也就是说(!strcmp(word,"done"))表示word为
"done"时才循环,反了,应该是不为“done时循环”。
2、word如果为“”,表示输入结束,也应该结束循环,否则会死循环。
3、cin.get(word,arrsize);并不会把分隔符'\n'读入,下次会变成一个"",因为一开始就遇到分隔符,应该把'\n'读走才行,所以加上一个cin.get()。

应该如下修改:
#include<iostream>
#include<cstring>
const int arrsize=20;
int main()
{
using namespace std;
int count=0;
char word[arrsize];
cin.get(word,arrsize);
cin.get();
while (strcmp(word, "") && strcmp(word,"done"))
{
++count;
cin.get(word,arrsize);
cin.get();
}
cout<<count<<endl;
cin.get();

return 0;
}
yangguo2005
2005-11-04 · TA获得超过2981个赞
知道小有建树答主
回答量:125
采纳率:100%
帮助的人:90.4万
展开全部
去掉strcmp(word,"")并不会导致死循环。
根据great_wh的程序修改如下:
#include<iostream>
#include<cstring>
using namespace std;
const int arrsize=20;
int main()
{

int count=0;
char word[arrsize];
cin.get(word,arrsize);
cin.get();
while (strcmp(word,"done"))
{
++count;
cin.get(word,arrsize);
cin.get();
}
cout<<"Total="<<count<<endl;

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9ea2f0d
2005-11-04
知道答主
回答量:49
采纳率:0%
帮助的人:0
展开全部
你这个程序问题太多了,你要知道你是统计单词啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式