很多同学在刚学习完数组以后,开始习惯用数组去处理批量数据的问题。但是容易陷入习惯性使用数组的误区。
比如,某班有 名学生
科的考试成绩,在得到所有单科成绩以后,要求我们求出这
科成绩的平均分。显然,初学者容易习惯性去定义一个二维数组
a[N][M]
,将所有分数的数据对应保存以后,再使用 for
循环去挨个进行加法处理,最后除以 得到平均值。
这种做法固然是没有错的,但我们在编程时候,再仔细想想,我们是否需要使用二维数组来解决这个问题呢?我们完全可以使用一个一维数组 sum[M]
,第 科到 第
科的分数总和分别用
sum[0]
到 sum[M-1]
表示。
int sum[M];
for(int i = 0; i < N; i++){
for(int j = 0; j < M; j++){
int temp;
cin >> temp;
sum[j] += temp;
}
}
// 最后求平均分并输出
for(int j = 0; j < M; j++){
cout << sum[j]/N << " ";
}
我们要意识到,使用数组的目的是为了保存数据,为接下来的多次运算做准备。如果说,我们读取了数据,只需要使用一次,以后都不会再需要它们,那么我们完全可以在循环里使用临时变量,读取保存,处理完以后就 “抛弃” 它们。
大家可以用心思考、体会一下。