(用C++写的)
Description
有一次选举活动,要从候选人中选出得票最多的若干人选。定义一个结构体,描述候选人的信息,可参考如下:
struct candidate {
char name[20]; //姓名
int poll; //所得票数
};
从键盘输入两个整数n (1 <= n < = 100)和m(1<=m<=1000),表示有n位候选人,要从中选出得票最多的一位候选人,m表示收集到的有效选票数(每张选票上有一位候选人的名字)。再输入n名候选人的名单,每个人占一行。最后输入m行数据,分别代表有效选票上的候选人姓名。现在要统计并输出得票最多的一位候选人的姓名。如果有并列的人选,要把所有并列的人选输出,每行上输入一位得票最多的人选。
Input
第一行输入2个整数n和m
然后是n行,每行一个候选人姓
然后是m行,每行一个投票
Output
按要求输出得票最多的人选
Sample Input
3 10
Zhao
Qian
Sun
Sun
Qian
Sun
Zhao
Sun
Sun
Zhao
Zhao
Qian
Sun
Sample Output
Sun
吸取教训
char a;
是字符,char a[5];
是字符串,二者是不同的东西,切记!- char之间比较是否相等,可以直接用 == 。而char[ ]之间的比较,不能用 == ,而要用 strcmp() 方法,当返回值为0时相等。
- 修改结构体的字符串时,要用 strcpy(),不能直接用“=”。
这些说起来如此简单的东西,居然花了我2个多小时,可见我真的是个笨蛋。
完整代码
#include <iostream>
using namespace std;
struct candidate {
char name[20]; //姓名
int poll; //所得票数
};
int main()
{
int people, poll_sum,i,j=0;
candidate c[100];
char nt[20];
char name[20];
cout << "输入总人数、票数:" << endl;
cin >> people >> poll_sum;
cout << "输入候选人:" << endl;
for (i = 0; i < people; i++) {
cin >> c[i].name;
c[i].poll = 0;
}
cout << "投票:" << endl;
while (poll_sum--) {
cin >> name;
for (i = 0; i < people; i++) {
if (strcmp(name,c[i].name)==0) c[i].poll++;
}
}
for (i = 0; i < people; i++) {
if (c[i].poll > c[j].poll) j = i;
}
cout << "当选者:" << c[j].name;
return 0;
}