各位c++的高手能帮我指出错误吗?

来源:百度知道 编辑:UC知道 时间:2024/05/22 11:53:33
8.编写一个程序从键盘读入一系列单词(字符串),计算输入的每个不同的单词所出现的次数并输出结果。
我的编写的程序如下
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int total_num=0;
int zero=0;
int sum=0;
int y=0;
int m=0;
string v;
vector<string> k;
cout<<"请输入一连串的字符串"<<endl;
while(cin>>v)
{
k.push_back (v);
total_num+=1;
}
sort(k.begin(),k.end());
while(m<total_num)
{
if(k[y]==k[m])
{ sum+=1;
m++;}
else
{
cout<<sum<<endl;
y=sum+1;
sum=zero;
m++;
}
}
}
一楼的高手,用main是要return,但是我这里只用了一个main,所以编译的时候,电脑会自动帮我加return的
不要意思呀,二楼的高手,谢谢你的答案,但我想知道的是我编写的程序是哪里错了,和怎么修改

像这种情况用map最合适了:

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main()
{
typedef map<string, size_t> ssMap;

ssMap dict;
string key;
while(cin >> key)
{
if(dict.find(key) != dict.end())
++dict[key];
else
dict.insert(ssMap::value_type(key, 1));
}

for(ssMap::const_iterator cit = dict.begin(); cit != dict.end(); ++cit)
cout.width(10), cout.setf(ios::left),
cout << cit->first << cit->second << " times.\n";
}

int main可以不写return 0;的, 如楼主所说编译器会为你加上一个, 这是标准允许的写法.

老实说你的代码风格很差...

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
int total_num=0;
int sum=0;
int y=0;
int m=0;