90 选票统计
作者: Turbo时间限制: 1S章节: 结构体
问题描述 :
学生会主席投票选举工作正在举行。本次投票将采用电脑统计选票的方式,当投票选举正式开始后,同学们将排队一 一走到电脑前,投上自己神圣的一票:在电脑前输入一个姓名,然后输入回车表示确认。
投票结束后显示得票最高的同学姓名,该同学将当选为新一届学生会主席。
请编程统计投票。
输入说明 :
输入包含多行,每行是一个由英文字母组成的字符串,表示一个姓名,首尾以及中间都不包含空格。
参加投票学生的人数不超过100人,每个学生姓名字符串的长度小于20。
由于学生投票时输入的姓名有大写有小写,你在统计时不区分大小写,即"Liming"和"liming"是同一个人。
输出说明 :
输出为一个字符串——当选为学生会主席的学生姓名以及他的票数,中间用一个空格分隔。
输入保证没有两个人并列票数最高。
输出的英文字母全部用小写。
输入范例 :
limin
LIMING
liming
wangshan
huyou
LiMing
输出范例 :
liming 3
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct
{
char name[20];
int record;//年月日
}Student;
int judge(char a[],char b[])//a为候选人名字,b为选票名字
{
int len1,len2;
int A,B,i;
len1=strlen(a);
len2=strlen(b);
if(len1!=len2)
return 0;
for(i=0;i<len1;i++)
{
A=a[i]-'a';
B=b[i]-'a';
if(A==B||A==(B-32)||A==(B+32))
continue;
else
return 0;
}
return 1;
}
int main()
{
int i,count=-1,flag,max,len;
Student stu[100];
for(i=0;i<100;i++)
{
strcpy(stu[i].name,"****");
stu[i].record=0;
}
char str[20];
while(gets(str))
{
flag=0;
if(count==-1)
{
count++;
strcpy(stu[count].name,str);
stu[count].record++;
continue;
}
else for(i=0;i<=count;i++)
{
if( judge(stu[i].name,str) )
{
flag=1;
stu[i].record++;
break;
}
}
if(flag==0)
{
count++;
stu[count].record++;
strcpy(stu[count].name,str);
}
}
//测试
max=0;
for(i=0;i<=count;i++)
{
if(stu[i].record>stu[max].record)
max=i;
}
len=strlen(stu[max].name);
for(i=0;i<len;i++)
{
if(stu[max].name[i]<'a')
printf("%c",stu[max].name[i]+32);
else printf("%c",stu[max].name[i]);
}
printf(" %d\n",stu[max].record);
return 0;
}