首先说一下思路,我们先要构建选民库,对此我们需要用到结构体,在主函数中利用数组结构体的方式来存放姓名、票数,并且有些是没有赋予初值的我们需要给他们进行初始化的处理。对于数组的初始化我们通常会使用menset这样一个API去完成,置零的方式也和其他不一样,内容为'\0',
当判断所输入的名字和已有库里的姓名是否一样时我们可以利用strcmp这样一个API,0代表相同,1代表大,-1代表小。
#include<stdio.h>
#include <string.h>
struct XuanMin
{
char name[32];
int tickets;
};
int main()
{
int i;
int j;
int len;
int mark;
int feipiao=0;
struct XuanMin xm[3];
struct XuanMin Max;
char tmp_name[32];
len=sizeof(xm)/sizeof(xm[0]);
//初始化选民信息
for(i=0;i<len;i++){
xm[i].tickets=0;
printf("请输入选民的名字:\n");
scanf("%s",xm[i].name);
}
//唱票环节
for(i=0;i<5;i++){
mark=0;
printf("请输入你要投的选民:\n");
memset(tmp_name,'\0',sizeof(tmp_name));
scanf("%s",tmp_name);
for(j=0;j<len;j++){
if(strcmp(tmp_name,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<len;i++){
if(Max.tickets<xm[i].tickets){
Max=xm[i];
}
}
printf("票数最多的人:%s,票数为:%d,其中废票有:%d\n",Max.name,Max.tickets,feipiao);
return 0;
}