#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct XuanMin
{
char name[32];
int tickes;
};
void initXms(struct XuanMin **pxm,int *pt)
{
int i;
if (*pxm == NULL){
printf("请输入有几个人参选:\n");
scanf("%d",pt);
*pxm = (struct XuanMin*)malloc(*pt * sizeof(struct XuanMin));
}
for (i=0;i<*pt;i++){
(*pxm)->tickes == 0;
printf("请输入第%d个选民的名字:\n",i+1);
scanf("%s",(*pxm)->name);
(*pxm)++;
}
*pxm = *pxm - *pt;
}
void printXms(struct XuanMin *p,int len){
int i;
for (i=0;i<len;i++){
printf("名字:%s,票数:%d\n",p ->name,p ->tickes);
p++;
}
}
int doVot(struct XuanMin *p,int len)
{
int i;
int j;
struct XuanMin *pbak = p;
int mark;
char inputName[32];
int feipiao = 0;
for (i=0;i<len;i++){
mark = 0;
printf("请输入你投给谁:\n");
memset(inputName,'\0',sizeof(inputName));
scanf("%s",inputName);
p = pbak;
for (j = 0;j<len;j++){
if(strcmp(inputName,p ->name)==0){
p ->tickes++;
mark= 1;
}
p++;
}
if(mark ==0){
printf("没有此候选人,投票无效!\n");
feipiao++;
}
}
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 ->tickes < p ->tickes){
max = p;
}
p++;
}
return max;
}
int main()
{
struct XuanMin *xm = NULL;
struct XuanMin *final;
int total = 0;
initXms(&xm,&total);
printXms(xm,total);
int feipiao = doVot(xm,total);
printXms(xm,total);
printf("废票是:%d\n",feipiao);
final = getMax(xm,total);
printf("%s以%d票当选!!!废票是%d\n",final->name,final->tickes,feipiao);
return 0;
}