记录我在做选举问题时被自己蠢哭的事

(用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

吸取教训

  1. char a;是字符,char a[5];是字符串,二者是不同的东西,切记!
  2. char之间比较是否相等,可以直接用 == 。而char[ ]之间的比较,不能用 == ,而要用 strcmp() 方法,当返回值为0时相等。
  3. 修改结构体的字符串时,要用 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;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值