选票统计二(结构体)

该博客介绍了一个用C语言实现的选票统计程序。通过读取输入的姓名,利用结构体存储并统计票数,当输入'#'时,程序找出得票最多的候选人并输出其姓名。程序使用了一个结构体数组,每个结构体包含姓名和票数两个字段,通过遍历比较确定票数最多者。
摘要由CSDN通过智能技术生成

题目描述

计算机与通信工程学院2012届学生会主席投票选举工作定于1月6日在电教楼前隆重举行。本次投票将采用电脑统计选票的方式,当投票选举正式开始后,同学们将排队一一走到电脑前,投上自己神圣的一票:在电脑前输入一个姓名,然后输入回车表示确认。
当所同学投票结束,工作人员只需要输入一个”#”并回车确认,表示投票结束,电脑立即显示出得票最高的同学姓名,该同学将当选为新一届计算机与通信工程学院学生会主席。
选举大会的准备工作正在紧张进行,编程统计投票的工作就交给你了。

输入

本题为单实例测试。输入包含多行,每行是一个由小写英文字母组成的字符串,表示一个姓名,遇到#时表示输入结束。 你可以假定,参加投票学生的人数不超过500人,每个学生姓名字符串的长度小于20。

输出

输出为一个字符串——当选为学生会主席的学生姓名

样例输入
wanglin
liming
wanglin
wanglin
fangfang
liming

样例输出
wanglin

思路:由于每次输入的名字不确定,所以需要判断下一次输入的名字与前边输入过的名字是否有重复,如果有重复的话,直接将其票数加1即可,如果没有重复,则需要将其赋给一个新的结构体变量,并且作为下次判断的条件。并用变量m来计算总共有几个不同的名字,在遍历时只需要遍历到m的位置。最后直接通过寻找票数最大值,找到下标,输出对应名字即可。

#include<stdio.h>
#include<string.h>
struct xuanju
{

根据提供的两个引用,我们可以看出这是一个用C语言实现选票统计的程序。下面是一个类似的C语言选票统计结构体2的例子: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> struct Candidate { char name[20]; int count; }; int main() { int n, m, i, j; struct Candidate candidate[20]; char candidate_name[20]; printf("请输入候选人人数:"); scanf("%d", &n); for (i = 0; i < n; i++) { printf("请输入第%d个候选人的姓名:", i + 1); scanf("%s", candidate[i].name); candidate[i].count = 0; } printf("请输入选民人数:"); scanf("%d", &m); for (i = 0; i < m; i++) { printf("请输入第%d个选民的投票:", i + 1); scanf("%s", candidate_name); for (j = 0; j < n; j++) { if (strcmp(candidate_name, candidate[j].name) == 0) { candidate[j].count++; break; } } } printf("\n投票结果为:\n"); for (i = 0; i < n; i++) { printf("%s: %d\n", candidate[i].name, candidate[i].count); } int max_count = 0; int max_index = 0; for (i = 0; i < n; i++) { if (candidate[i].count > max_count) { max_count = candidate[i].count; max_index = i; } } printf("\n得票最多的候选人是:%s,得票数为:%d\n", candidate[max_index].name, candidate[max_index].count); system("pause"); return 0; } ``` 这个程序首先要求用户输入候选人人数和每个候选人的姓名,然后要求用户输入选民人数和每个选民的投票。程序会统计每个候选人的得票数,并输出投票结果。最后,程序会找到得票最多的候选人,并输出其姓名和得票数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值