#include<stdio.h>//预编译命令行
#include<string.h>
struct person//定义一个结构体存放候选人姓名和编号
{
char name[20];//定义一维数组存放候选人姓名
int count;
};
struct person bz[3]={"li",0,"yan",0,"ye",0},
tzb[3] ={"wang",0,"qiao",0,"gj",0},
zz[3]={"gong",0,"xx",0,"w",0},
xc[3]={"jiao",0,"yang",0,"duan",0},
sh[3]={"zhou",0,"yang",0,"z",0},
xx[3]={"nie",0,"an",0,"dan",0}; //定义6个结构体数组并赋值
void main( )//主函数
{
int tj(struct person *p);//调用函数
int m=0;
void da( );//调用函数
printf(" 信息0902班委选票结果 \n");//输出界面提示信息
m=tj(&bz); //调用tj函数输入出选票结果
printf("班长是%-20s\n",bz[m].name);
m=tj(&tzb); //调用tj函数输入出选票结果
printf("团支部是%-20s\n",tzb[m].name);
m=tj(&zz); //调用tj函数输入出选票结果
printf("组织委员是%-20s\n",zz[m].name);
m=tj(&xc); //调用tj函数输入出选票结果
printf("宣传委员是%-20s\n",xc[m].name);
m=tj(&sh); //调用tj函数输入出选票结果
printf("生活委员是%-20s\n",sh[m].name);
m=tj(&xx); //调用tj函数输入出选票结果
printf("学习委员是%-20s\n",xx[m].name);
printf("信息0902各班委的个人档案\n"); //输出界面提示信息
da( );
}
int tj(struct person *p) //统计学生选票函数
{
int i,j,t=0,max=0;
char na[20];//定义一维数组存放姓名
for(i=1;i<=23;i++)//用循环体统计得票数
{
scanf ("%s",na);
for(j=0;j<3;j++)
if(strcmp(na,(*(p+j)).name)==0)//找出与之相匹配的姓名
(*(p+j)).count++;//票数加1
}
printf("\n");
for(i=0;i<3;i++)
printf("%-20s:%d\n", (*(p+i)).name, (*(p+i)).count);//输出三人的姓名及得票数
max=(*p).count;
for(i=0;i<3;i++)//利用循环体找到得票最多的人
if(max<(*(p+i)).count)
{
max=(*(p+i)).count;
t=i;
}//找出得票数最多的人并把其编号赋给t
return t;
}
void da( ) //输入所选班委信息函数
{
struct student//定义结构体存放候选人信息
{
int num;
char nam[20];//用一维数组存放姓名
char sex;
int age;
char addr[30];//用一维数组存放地址
}stu[6];
struct student *p; //定义一个指向结构体数组的指针
int i=0;
scanf("请输入信息\n");
for(i=0;i<6;i++)//利用循环体输入所有候选人信息
scanf("%5d%-20s%2c%4d%-30s\n",stu.num,stu.nam, stu.sex, stu.age, stu.addr);
for(p=stu;p<stu+6;p++)//利用循环体把候选人信息输出到界面
printf("%5d%-20s%2c%4d%-30s\n",(*p).num, (*p).nam, (*p).sex, (*p).age, (*p).addr);
}