【C语言】学习笔记,模拟一个简单的投票过程

模拟一个简单的投票过程。程序定义了一个结构体 XuanMin 来存储选民的名字和票数,并通过用户输入进行投票,最后公布投票结果和胜选者。以下是代码的简要解释和一些潜在问题:

定义了一个名为 XuanMin 的结构体,包含 name(选民名字)和 tickets(票数)两个字段。

在 main 函数中,声明了一个 XuanMin 类型的数组 xm 来存储3位选民的信息,以及一个 XuanMin 类型的变量 max 用于记录得票最多的选民。

使用 for 循环初始化 xm 数组中每个选民的票数为0,并提示用户输入每位选民的名字。

进行5次投票,每次投票前清空 tmpName 字符串,然后通过 scanf 读取用户输入的选民名字。

通过另一个 for 循环在 xm 数组中查找与用户输入名字匹配的选民,并增加其票数。

如果用户输入的名字不在 xm 数组中,增加废票数 feiPiao。

投票结束后,打印每位选民的名字和票数。

通过比较找出得票最多的选民,并打印胜选者的名字和票数以及废票数。

#include <stdio.h>
#include <string.h>

struct XuanMin
{
	char name[32];
	int tickets;
};

int main()
{
	struct XuanMin xm[3];
	struct XuanMin max;
	
	int feiPiao = 0;
	int i;
	int len;
	int j;
	int mark = 0;
	
	int total = 5;
	char tmpName[32];
	
	//初始化选民信息
	len = sizeof(xm)/sizeof(xm[0]);
	for(i = 0; i<len; i++){
		xm[i].tickets = 0;
		printf("请输入第%d个选民的名字:\n",i+1);
		scanf("%s",xm[i].name);
	}
	//唱票环节
	for(i=0;i<5;i++){
		
		mark = 0;
		printf("请输入你投给谁:\n");
		memset(tmpName,'\0',sizeof(tmpName)); //每次清空一下
		scanf("%s",tmpName);//输入选中的选民名字,像拆开一个选票,看到名字一样
		for(j = 0;j<len; j++){ //拿到名字,对应候选人票数加1
			if(strcmp(tmpName, xm[j].name) == 0){
				xm[j].tickets++;
				mark  = 1;
			}
		}
		if(mark == 0){
			printf("没有此候选人,放弃\n");
			feiPiao++;
		}
	}
	//公布结果
	for(i=0;i<len;i++){
		printf("名字:%s,票数:%d\n",xm[i].name,xm[i].tickets);
	}
	max = xm[0];
	for(i=1;i<len;i++){
		if(max.tickets < xm[i].tickets){
			max = xm[i];
		}
	}
	printf("%s以%d票当选!!废票是%d\n",max.name,max.tickets,feiPiao);
}
  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值