九度题目1018:统计同成绩学生人数
题目描述:
读入N名学生的成绩,将获得某一给定分数的学生人数输出。
输入:
第1行:N
第2行:N名学生的成绩,相邻两数字用一个空格间隔。
第3行:给定分数
当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。
输出:
对每个测试用例,将获得给定分数的学生人数输出。
样例输入:
3
80 60 90
60
2
85 66
0
5
60 75 90 55 75
75
0
样例输出:
1
0
2
来源:
2006年浙江大学计算机及软件工程研究生机试真题
分析:
我们可以看到,输入的分数严格限定在0-100之间,同时它又一定是一个整数。这样,输入的数据一共只有101种可能。我们只要为这101种可能分别计数,便能在输入结束时得知每一种分数的重复情况。
代码:
#include<stdio.h>
int main()
{
int N;
while(scanf("%d",&N)!=EOF && N!=0)
{
int Hash[101] = {0};
for(int i=0;i<N;i++)
{
int score;
scanf("%d",&score);
Hash[score]++;
}
int searchedScore;
scanf("%d",&searchedScore);
printf("%d\n",Hash[searchedScore]);
}
return 0;
}