题目描述:
读入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
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
样例输出:
1
0
2
解决代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
while(scanf("%d", &n)!=EOF && n!=0)
{
int Hash[101]={0};
int i=0;
for(i=1; i<=n; i++)
{
int x;
scanf("%d", &x);
Hash[x] ++;
}
int x;scanf("%d", &x);
printf("%d\n", Hash[x]);
}
return 0;
}
这个题的主要思想就是设立一个100长度的数组,每当有数字来时将对应位置加一,这样直接输出数组中的数字就是出现次数。注意每次数组都要重新置0.所以可以放在while循环中,每次都生成。