算法笔记 统计同成绩学生人数

本次笔记是我基于算法笔记这本书里的练习题所写,具体题目如下:

题目描述

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

输入

测试输入包含若干测试用例,每个测试用例的格式为

第1行:N
第2行:N名学生的成绩,相邻两数字用一个空格间隔。
第3行:给定分数

当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。

输出

对每个测试用例,将获得给定分数的学生人数输出。

样例输入

4
70 80 90 100
80
3
65 75 85
55
5
60 90 90 90 85
90
0

样例输出

1
0
3

#include 
int main() {
	int N;
	int score;
	int i;
	int a[101];
	while (scanf("%d", &N) && N) {
		for (i = 0; i < 101; i++)
			a[i] = 0;   //赋初值为0
		for (i = 0; i < N; i++) {
			scanf("%d", &score);
			a[score]++;
		}
		scanf("%d", &score);
		printf("%d\n", a[score]);
	}
//	system("pause");
	return 0;
}

解题思路: 有一个数组a[ ],将输入的分数score作为数组的下标:a[score] ,对应的数组的值为相同分数的人数

以 输入 N=4
80 80 90 100
80
为例:

a[0] a[70] a[80] a[90] a[100]
0 0 2 1 1

在表格中可以看到,找到分数为80的人数,显然值为2
这种方法更为简单明了,值得学习。

你可能感兴趣的:(算法笔记,统计同成绩学生人数)