投票系统(C语言)

Posted 橙子果果

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了投票系统(C语言)相关的知识,希望对你有一定的参考价值。

设计一个投票系统
首先定义一个选民结构体,结构体内包选民名字和获得票数

struct  XuanMin

	char name[32];
	int tickets;
;

对于选民首先要初始化信息,票数清零,确定选民名字

//初始化选民信息
	for(i=0;i<len;i++)
		xm[i].tickets = 0;
		printf("请输入第%d个选民的名字\\n",i+1);
		scanf("%s",xm[i].name);
	


然后是唱票环节,这里的mark用来确定投出去的票是否为有效票。
//唱票环节
	for(i=0;i<5;i++)
		mark=0;
		printf("请输入你投给谁:\\n");
		memset(tmpName,'\\0',sizeof(tmpName));
		scanf("%s",tmpName);
		for(j=0;j<len;j++)
			if(strcmp(tmpName,xm[j].name) == 0)
				xm[j].tickets++;
				mark = 1;
			
		
		if(mark == 0)
			printf("查无此人!!!!!\\n");
			feipiao++;
		
	

最后是公布环节,用一个Max结构体来承接选票数最高的人的结构体

//公布
	for(i=0;i<len;i++)
		printf("名字:%s, 票数:%d\\n",xm[i].name,xm[i].tickets);
	
	Max = xm[0];
	for(i=0;i<3;i++)
		if(Max.tickets < xm[i].tickets)
			Max = xm[i];
	
	printf("**************************\\n");
	printf("%s以%d票当选!!!!!!!\\n弃权票:%d\\n",Max.name,Max.tickets,feipiao);


完整代码

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

struct  XuanMin

	char name[32];
	int tickets;
;
int main()

	struct XuanMin xm[3];
	struct XuanMin Max;
	int i,j;
	int mark;
	int feipiao=0;
	int len = sizeof(xm)/sizeof(xm[0]);
	char tmpName[32];


	//初始化选民信息
	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++)
			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=0;i<3;i++)
		if(Max.tickets < xm[i].tickets)
			Max = xm[i];
	
	printf("**************************\\n");
	printf("%s以%d票当选!!!!!!!\\n弃权票:%d\\n",Max.name,Max.tickets,feipiao);
	return 0;
	


运行结果:


代码优化(结构体指针,函数封装)

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

struct  XuanMin

	char name[32];
	int tickets;
;

struct XuanMin* initXms(struct XuanMin *p,int *np)

	int i;
	if(p == NULL)
		printf("请输入有几个人参选:\\n");
		scanf("%d",np);
		p = (struct XuanMin*)malloc(*np*sizeof(struct XuanMin));
	
	for(i=0;i<*np;i++)
		p->tickets = 0;
		printf("请输入第%d个选民的名字\\n",i+1 );
		scanf("%s",p->name);
		p++;
	
	printf("****************************************\\n");
	return p-*np;

void printXms(struct XuanMin *p,int len)

	int i;
	for(i=0;i<len;i++)
		printf("名字:%s, 票数:%d\\n",p->name,p->tickets);
		p++;
	

int doVot(struct XuanMin* p,int len)

	int i,j;
	int feipiao = 0;
	int mark;
	char tmpName[32];
	struct XuanMin *pbak = p;
	for(i=0;i<5;i++)
		mark=0;
		printf("请输入你投给谁:\\n");
		memset(tmpName,'\\0',sizeof(tmpName));
		scanf("%s",tmpName);
		p = pbak;
		for(j=0;j<len;j++)
			if(strcmp(tmpName,p->name) == 0)
				p->tickets++;
				mark = 1;
			
			p++;
		
		if(mark == 0)
			printf("查无此人!!!!!\\n");
			feipiao++;
		
	
	printf("****************************************\\n");
	return feipiao;

struct XuanMin* getMax(struct XuanMin *p,int len)

	struct XuanMin *Max;
	int i;
	Max = p;

	for(i=0;i<len;i++)
		if(Max->tickets < p->tickets)
			Max = p;
		
		p++;
	
	return Max;

int main()

	struct XuanMin *xm = NULL;
	struct XuanMin *Max;
	int total = 0;
	int feipiao;
	xm = initXms(xm,&total);
	feipiao = doVot(xm,total);
	printXms(xm,total);

	Max = getMax(xm,total);
	printf("%s以%d票当选!!!!!!!\\n弃权票:%d\\n",Max->name,Max->tickets,feipiao);
	return 0;


运行结果

以上是关于投票系统(C语言)的主要内容,如果未能解决你的问题,请参考以下文章

投票系统(C语言)

C语言统计候选人的得票数

solidity经典案例-----智能投票

贪心练习

有3个候选人,每个选民只能投一票,用C语言编一个统计票数的程序,最后输出的票结果,下面我写的,哪错了

c语言编程:设计一个投票程序,每输入一个候选人名字,其票数自增一。最后输出各自得票结果