题目: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 }
总结:
深知自己的不足,于是踏踏实实从最基础开始做起。这种题可以一次过,稍微难一点就要错个几次。一个人只有先正确的认识自己,才能更好的发展自己。知其能,亦知其所不能。
原文地址:https://www.cnblogs.com/Anber82/p/11328220.html
时间: 2024-10-10 21:44:51