我想要达到的结果
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
struct Elector
{
char name[32];
int tickets;
};
struct Elector* initXM(struct Elector *pxm,int ptotal)
{
int n;
if (pxm == NULL){
printf("请确定候选人人数为:\n");
scanf("%d",ptotal);
pxm = (struct Elector)malloc(ptotalsizeof(struct Elector));
if (pxm == NULL){
puts("error:分配空间失败");
assert(pxm != NULL);
}
}
int i;
puts("请再次确定参选人都为:");
for (i=0;i<*ptotal;i++){
pxm->tickets = 0;
printf("第%d个参选人为:\n",i+1);
scanf("%s",pxm->name);
pxm++;
}
pxm = pxm -*ptotal;
return pxm;
}
int doVot(struct Elector *pxm,int *ptotal)
{
int i,j;
int mark = 0;
int feipiao = 0;
struct Elector *p = pxm;
char tmpname[32];
int tmp;
puts("请确定参与投票人数:");
scanf("%d",&tmp);
for (i=0;i<tmp;i++){
memset(tmpname,'\0',sizeof(tmpname));
mark = 0;
pxm = p;
puts("请问你投给谁:");
scanf("%s",tmpname);
for (j=0;j<*ptotal;j++){
if (strcmp(tmpname,pxm->name) == 0){
pxm->tickets++;
mark = 1;
}
pxm++;
}
if (mark == 0){
puts("error:投票无效,废票!!");
feipiao++;
}
}
return feipiao;
}
void printXM(struct Elector *pxm,int feipiao,int total)
{
int i;
struct Elector *max;
int bak = 0;
max = pxm;
for (i=0;i<total;i++){
printf("名字: %s,票数: %d\n",pxm->name,pxm->tickets);
pxm++;
}
printf("废票为%d张\n",feipiao);
pxm = max ;
for (i=0;i<total;i++){
if (max->tickets < pxm->tickets){
max = pxm;
}
pxm++;
}
printf("%s最终以最高票数%d票当选人大代表\n",max->name,max->tickets);
}
int main()
{
struct Elector *xm = NULL;
int total = 0;
int feipiao = 0;
xm = initXM(xm,&total);
feipiao = doVot(xm,&total);
printXM(xm,feipiao,total);
return 0;
}