下面那段代码怎么改才对?最后Cout出来是个负数。。。怎么回事?求大神

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int i,j,z;
struct shiyan
{char b[20];
int a;
};
cout<<"请输入被选举人的人数"<<endl;
cin>>i;
cout<<"被选举人人数为"<<i<<endl;
shiyan *y=new shiyan[i];
cout<<"请依次输入被选举人的名字"<<endl;
for(j=0;j<i;j++)
{
cin>>y[i].b;
cout<<"输入成功,被选举人的名字为:"<<y[i].b;
y[i].a=0;
}
cout<<"请输入选举人人数"<<endl;
cin>>j;
cout<<"选举人人数为"<<j<<endl;
char s[20];
for(i=0;i<j;i++)
{cin>>s;
for(z=0;z<j;z++)
if(strcmp(s,y[z].b)==0)
{y[z].a++;}
}
for(i=0;i<j;i++)
cout<<y[i].a<<endl;
system("pause");
return 0;
}

你的代码很多地方错了,而且意思不是很明确。我猜你想首先得到i个候选人,然后从j个投票人里边统计所有候选人的票数吧?我是根据我的猜测来改你的代码的,改过的地方前边我都用注释来说明你的错误,自己仔细看看吧。给你个忠告,代码中的变量最好用有意思到单词,不要用简单的字母i、j来代表一些有意义的单词,不然别人很难看懂你的代码。
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int i,j,z;
struct shiyan
{
char b[20];
int a;
};
cout<<"请输入被选举人的人数: ";
cin>>i;
cout<<"被选举人人数为"<<i<<endl;

shiyan *y=new shiyan[i];
for(j=0;j<i;j++)
{
cout<<"请依次输入被选举人的名字: ";
//fixed: your suffix is wrong
cin>>y[j].b;
y[j].a=0;
cout<<"输入成功,被选举人的名字为:"<<y[j].b<<endl;
}

cout<<"请输入选举人人数: ";
cin>>j;
cout<<"选举人人数为: "<<j<<endl;

char s[20];
//fixed: i is the amount of the person to be elected
//for(i=0;i<j;i++)
for(int k = 0; k < j; k++)
{
cout<<"No. "<<k+1<<" please input your person to elected: ";
cin>>s;
//fixed: i is the amount of the person to be elected, not j
for(z=0; z<i; z++){
if(strcmp(s, y[z].b)==0)
{
y[z].a++;
}
}
}
//fixed: i is the amount of the person to be elected
for(z=0; z<i; z++)
cout<<y[z].a<<endl;

system("pause");
return 0;
}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网