#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct XuanMin
{
char name[32];
int tickets;
};
void initXms(struct XuanMin**pxm,int *pn)
{
if(*pxm==NULL){
printf("请输入有几个人参选:\n");
scanf("%d",pn);
*pxm=(struct XuanMin*)malloc(*pn*sizeof(struct XuanMin));
}
for(int i=0;i<*pn;i++){
(*pxm)->tickets=0;
printf("请输入第%d个选民姓名\n",i+1);
scanf("%s",(*pxm)->name);
(*pxm)++;
}
*pxm=*pxm-*pn;
}
int doVot(struct XuanMin*p,int len,int *pfeipiao)
{
int i,j,n;
int mark=0;
//int feipiao=0;
char tmpname[32];
struct XuanMin *pbak=p;
printf("请输入有几个人参与投票:\n");
scanf("%d",&n);
for(i=0;i<n;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");
(*pfeipiao)++;
}
}
}
void printfXms(struct XuanMin *p,int len)
{
for(int i=0;i<len;i++){
printf("名字:%s,票数:%d\n",p->name,p->tickets);
p++;
}
}
struct XuanMin *getMax(struct XuanMin*p,int len,struct XuanMin**pf)
{
int i;
//struct XuanMin* max;
//max=p;
*pf=p;
for(i=1;i<len;i++){
if((*pf)->tickets < p->tickets){
(*pf)=p;
}
p++;
}
//return max;
}
int main()
{
struct XuanMin *xm=NULL;
struct XuanMin *final;
int voters=0;
int feipiao=0;
initXms(&xm,&voters);
//xm = initXms(xm,&voters);
printfXms(xm,voters);
doVot(xm,voters,&feipiao);
printf("废票数为%d\n",feipiao);
printfXms(xm,voters);
getMax(xm,voters,&final);
printf("%s以%d票当选\n",final->name,final->tickets);
return 0;
}
选民系统练习
最新推荐文章于 2024-06-15 16:17:24 发布