平湖电子商务总监招聘:帮忙看看这个c++小程序?多谢!

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 21:39:36
输入单词直到输入“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

三个错误:
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;
}

去掉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;
}

你这个程序问题太多了,你要知道你是统计单词啊