C++ 入门学习经验 09——数组下:做几道题,把数组真正用起来

发布时间:2026/7/5 14:46:12
C++ 入门学习经验 09——数组下:做几道题,把数组真正用起来
大家好啊这里是阳阳的博客一个正在努力学习技术的大学生。前两篇我们聊了数组是什么也说了下标从 0 开始、越界是怎么回事。所以今天这篇我们不做太多新概念的堆砌直接通过几道题来看看数组在题目里到底是怎么用的。好了废话不多说咱们直接开始。一、统计及格人数先来一道比较简单的题。题目输入 5 个同学的成绩统计及格人数≥60 算及格。比如输入90 45 78 59 100输出3这道题包含了数组题的三个基本动作存数据 → 遍历 → 统计。#include iostream using namespace std; int main() { int score[5]; for (int i 0; i 5; i) { cin score[i]; } int cnt 0; for (int i 0; i 5; i) { if (score[i] 60) { cnt; } } cout cnt; return 0; }其实这道题也可以边输入边统计不一定非要用数组。这里为了练习数组我们先把成绩存下来再统一遍历统计。数组在这道题里的作用很清楚帮我们把一批数据先存下来然后可以反复使用。二、找最高分和最低分再看一道稍微不一样的题。题目输入 5 个同学的成绩输出最高分和最低分。比如输入90 45 78 59 100输出100 45代码如下#include iostream using namespace std; int main() { int score[5]; for (int i 0; i 5; i) { cin score[i]; } int maxScore score[0]; int minScore score[0]; for (int i 1; i 5; i) { if (score[i] maxScore) { maxScore score[i]; } if (score[i] minScore) { minScore score[i]; } } cout maxScore minScore; return 0; }这里有一个很值得注意的地方很多同学刚开始会习惯这样写int maxScore 0; int minScore 0;但minScore 0在成绩题里很容易翻车——如果所有成绩都是正数最小值就会一直是 0答案就错了。更稳妥的做法是先把第一个元素当成当前最大值和最小值然后从第二个元素开始逐个比较更新。三、矩阵乘法二维数组前面两道题都是一维数组接下来我们看一个二维数组的例子矩阵乘法。假设A 1 2 B 5 6 3 4 7 8矩阵乘法的结果是 CC 19 22 43 50先快速回顾下两个矩阵相乘的知识C[0][0] A 的第 0 行 和 B 的第 0 列 对应相乘后相加1*5 2*7 19C[0][1] A 的第 0 行 和 B 的第 1 列1*6 2*8 22C[1][0] A 的第 1 行 和 B 的第 0 列3*5 4*7 43C[1][1] A 的第 1 行 和 B 的第 1 列3*6 4*8 50写成代码#include iostream using namespace std; int main() { int A[2][2], B[2][2], C[2][2]; // 输入 A for (int i 0; i 2; i) { for (int j 0; j 2; j) { cin A[i][j]; } } // 输入 B for (int i 0; i 2; i) { for (int j 0; j 2; j) { cin B[i][j]; } } // 矩阵乘法 for (int i 0; i 2; i) { for (int j 0; j 2; j) { C[i][j] 0; for (int k 0; k 2; k) { C[i][j] A[i][k] * B[k][j]; } } } // 输出结果 for (int i 0; i 2; i) { for (int j 0; j 2; j) { cout C[i][j] ; } cout endl; } return 0; }这里有三层循环刚开始看确实容易绕。但大家可以先抓住一个关键点C[i][j]是结果矩阵第i行第j列的值。为了算出它我们需要让 A 的第i行和 B 的第j列逐项相乘再相加所以就有了里面的k循环。比如算C[0][0]的时候k0: C[0][0] A[0][0] * B[0][0] k1: C[0][0] A[0][1] * B[1][0]正好对应1*5 2*7再回顾下每个下标的意思i控制结果的行j控制结果的列k负责把一行和一列对应位置乘起来。四、做数组题先想数据怎么放置通过这几道题大家应该能感觉到数组其实就是一个摆放数据的工具。写数组题的时候我建议大家先别急着写代码先想两个问题这题里的数据需要一排还是一张表处理数据的时候需要顺序扫一遍还是要行列配合如果是一排数据多半用一维数组如果是矩阵、棋盘这种形式就要用到二维数组。数据想清楚了循环怎么写自然也就清楚了。总结今天这篇我们通过三道题看了数组的实际用法题目核心知识点统计及格人数遍历数组 条件计数找最高分和最低分遍历数组 不断更新答案矩阵乘法二维数组 三层循环嵌套数组真正难的地方往往不是定义int a[100]而是题目一变就不知道数据该怎么放进去、怎么取出来。先从这些基础题开始多画一画数据怎么排列多观察循环变量怎么变化慢慢就会顺起来。那这篇就先到这里。如果觉得有帮助记得点赞、关注和收藏谢谢有什么问题欢迎在评论区留言我们一起交流。我们下篇见