编程统计候选人的得票数。
2023-12-19 22:08:45
设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个得票的候选人的名字,若选民输错候选人姓名,则按废票处理。选民投票结束后程序自动显示各候选人的得票结果和废票信息。要求用结构体数组candidate表示3个候选人的姓名和得票结果。 输入提示:"Input vote %d:" 输入用gets();; 输出提示:"Election results:\n" 输出格式为:"%8s:%d\n","Wrong election:%d\n" 例如: Input vote 1:li Input vote 2:li Input vote 3:Zhang Input vote 4:WANG Input vote 5:zhang Input vote 6:Wang Input vote 7:Zhang Input vote 8:wan Input vote 9:li Input vote 10:lii Election results: li:3 zhang:3 wang:2 Wrong election:2
以下是对于这道题的解答,希望大家喜欢,注意我这里与原题不一样的点在于,我将读取(结构体初始化)候选人的步骤做成了一个函数,你可以根据你的需求选择是否使用.
// 候选人结构体定义
struct candidate
{
char name[20];// 候选人名
int count;// 票数
};
// 输入候选人和他们的票数
// 传入一个空的候选人表格和人数
void input_cand(struct candidate* p, int n)
{
for (int i = 0; i < n; i++)
{
scanf("%s %d", &p[i].name, &p[i].count);
getchar(); // 清除输入缓冲区中的换行符
}
}
// 统计选票
// 传入候选人表格、人数、选票给谁(名字)、错误信箱(地址)
void count_vote(struct candidate* p, int n, char* str, int* wrong)
{
tran_str(str);// 将选票转为小写
for (int i = 0; i < n; i++)
{
if (strcmp(str, p[i].name) == 0)// 如果选票与候选人名字相同
{
(p[i].count) += 1; // 对应的票数加1
return;// 退出函数
}
}
(*wrong) += 1;// 如果之前没有找到对应的票,那么就是错误的
}
int main()
{
char vote[20];
int wrong = 0;
struct candidate list[3]; // 初始化候选人列表
input_cand(list, 3); // 输入候选人及其票数
for (int i = 1; i < 11; i++) // 循环10次进行投票
{
printf("Input vote %d:", i);
fgets(vote, 20, stdin); // 从标准输入读取选票
vote[strlen(vote) - 1] = '\0'; // 删除换行符,确保选票匹配正确
count_vote(list, sizeof(list) / sizeof(list[0]), vote, &wrong); // 统计选票并计算错误次数
}
printf("Election results:\n"); // 输出选举结果
printf(" li:%d\n", list[0].count); // 输出候选人li的票数
printf(" zhang:%d\n", list[2].count); // 输出候选人zhang的票数(注意索引,因为数组是从0开始的)
printf(" wang:%d\n", list[1].count); // 输出候选人wang的票数
printf("Wrong election:%d\n", wrong); // 输出错误的选举次数
return 0;
}
如果你要更全面一点,可以将选民个数,设为动态,对于候选人信息的输出也可以根据结构体中的数据而变化,这些都比较容易实现.
文章来源:https://blog.csdn.net/Mrluo386/article/details/135082578
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!