90 选票统计

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;
}

猜你喜欢

转载自blog.csdn.net/HurryBen/article/details/105720375
90