帮忙看看这个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 展开
#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 展开
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;
}
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;
}
根据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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个程序问题太多了,你要知道你是统计单词啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询