1038 统计同成绩学生 (20 分)

题目:1038 统计同成绩学生 (20 分)

本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出。

输入格式:

输入在第 1 行给出不超过 1 的正整数 N,即学生总人数。随后一行给出 N 名学生的百分制整数成绩,中间以空格分隔。
最后一行给出要查询的分数个数 K(不超过 N 的正整数),随后是 K 个分数,中间以空格分隔。

输出格式:

在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。

输入样例:

10
60 75 90 55 75 99 82 90 75 50
3 75 90 88

输出样例:

3 2 0

思路:

  • 类似打表。设立一个可以容纳所有分数的数组,即开一个100的数组就可以了,为了保险起见可以开得比这大。
  • 每输入一个数,就将这个数作为数组下标,进行分数计入,这样可以马上得到截止目前的该分数的人数。
  • 查询指定分数的学生人数时直接代入数组下标即可。

  注意起初清空数组。

代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <sstream>
 5 #include <cmath>
 6 #include <algorithm>
 7 #include <string>
 8 #include <stack>
 9 #include <queue>
10 #include <vector>
11 #include <map>
12 using namespace std;
13 
14 int main()
15 {
16     int a[105];
17     int n, k, num;
18     memset(a, 0, sizeof(a));
19     scanf("%d", &n);
20     for(int i = 0; i < n; i++)
21     {
22         scanf("%d", &num);
23         a[num]++;
24     }
25     scanf("%d", &k);
26     for(int i = 0; i < k; i++)
27     {
28         scanf("%d", &num);
29         printf("%d", a[num]);
30         if(i != k-1)
31             printf(" ");
32     }
33     return 0;
34 }

 

总结:

  深知自己的不足,于是踏踏实实从最基础开始做起。这种题可以一次过,稍微难一点就要错个几次。一个人只有先正确的认识自己,才能更好的发展自己。知其能,亦知其所不能。

posted @ 2019-08-09 16:46  Anzer  阅读(633)  评论(0编辑  收藏  举报