现在的位置: 首页 > 综合 > 正文

1300 竞赛报名

2012年08月17日 ⁄ 综合 ⁄ 共 919字 ⁄ 字号 评论关闭
 

描述

北航将要举办第四届程序设计竞赛,参赛选手均通过网上报名的方式来报名。但是,有些同学可能由于报名时填错了信息,会又填一次报名表,给参赛组织者 带来了一定的麻烦。于是,参赛组织者想统计每个同学报名了多少次,以便于手工核对报名信息。

输入

本题有多组测试数据。输入的第一行为报名的个数,最多1000。接下来每行有一个学号,为北航本科生八位学号。输入数据以0结尾。

输出

对每组输入数据,按照输入数据中的学号第一次出现的顺序,输出该学号和出现的次数,用空格隔开。每 两组数据之间空一行

样例输入

7
35211312
36211625
35211425
35211425
35211425
36211625
36211625
2
35211425
35211425
0

样例输出

35211312 1
36211625 3
35211425 3

35211425 2

解题思路:
此题是一道模拟题。第一次出现的学号记录下来,存放到一个数组中去,以后出现的学号和数组中的学号进行比较,判断次数即可。

 

#include<stdio.h>
#include<string.h>
main()
{
	int te;
	int number;
	int i,j;
	char a[1000][100];
	int count[1000];
	scanf("%d",&number);
	getchar();
	while(number!=0)
	{

		for(i=0;i<1000;i++)
			
			count[i]=0;
		for(te=0;te<number;te++)
	
		{   
		
			
		
		scanf("%s",&a[te]);
		
	
		}
	for(i=0;i<number;i++)
		for(j=i+1;j<number;j++)
			if(strcmp(a[i],a[j])==0&&a[j][0]!='*'&&a[i][0]!='*')
			{ count[i]++;
			   a[j][0]='*';
			
			}
			
			for(i=0;i<number;i++)
			{ 
				if(a[i][0]!='*')
			
				{  for(j=0;a[i][j]!='\0';j++)
				     printf("%c",a[i][j]);

			
				
				   printf(" %d\n",count[i]+1);
				}
				
			}

           printf("\n");
			scanf("%d",&number);
	getchar();
	}
}

 

抱歉!评论已关闭.