查找成绩(数组实现)
题目
## 题目描述
输入一组成绩,共n个,这n个成绩的序号为1~n。再查找成绩a,输出每个成绩a的位置。要求用数组存储n个成绩。
## 输入格式
输入数据第一行为正整数n,n≤100。第二行有n个整数,范围为0~100,用空格隔开。第三行有一个成绩a,范围为0~100。
## 输出格式
输出成绩a的每个位置,用空格隔开。如果查找不到成绩a,输出no。
## 输入输出样例 #1
### 输入 #1
```
8
90 88 85 88 88 98 95 100
88
```
### 输出 #1
```
2 4 5
```
## 输入输出样例 #2
### 输入 #2
```
8
90 88 85 88 88 98 95 100
99
```
### 输出 #2
```
no
```
一、明确需求
首先要知道程序要做什么:
- 输入一个整数
n
(表示有n
个成绩); - 输入
n
个成绩(整数),存储起来; - 输入一个要查找的成绩
c
; - 在存储的成绩中查找
c
,如果找到,输出所有c
对应的位置(位置从 1 开始数); - 如果没找到,输出 “no”。
二、设计思路
根据需求,我们可以拆解出几个核心步骤:
- 接收输入:先读
n
,再读n
个成绩,最后读要查找的c
; - 存储数据:用数组存储这
n
个成绩(数组方便按位置访问); - 查找逻辑:遍历数组,逐个对比元素是否等于
c
,记录所有匹配的位置; - 输出结果:如果有匹配的位置,输出这些位置;否则输出 “no”。
三、代码实现步骤(C++)
步骤 1:引入必要的头文件和命名空间
- 用
#include<bits/stdc++.h>
包含所有标准库(简化代码,不用逐个写头文件); - 用
using namespace std;
避免每次输入输出都加std::
。
cpp
运行
#include<bits/stdc++.h>
using namespace std;
步骤 2:编写主函数 main
程序从 main
函数开始执行,所以所有逻辑都在这里实现。
cpp
运行
int main() {// 后续代码写在这里return 0; // 程序结束
}
步骤 3:接收并存储成绩个数 n
定义一个整数变量 n
,用 cin
从键盘读取输入。
cpp
运行
int n; // 存储成绩的个数
cin >> n; // 读取n
步骤 4:存储 n
个成绩到数组
- 定义一个数组
a
,长度为n
(注意:数组下标可以从 1 开始,方便直接对应 “位置”); - 用循环读取
n
个成绩,依次存入数组。
cpp
运行
int a[n]; // 定义数组存储成绩(下标1~n对应位置1~n)
for (int i = 1; i <= n; i++) { // 循环n次,i从1开始cin >> a[i]; // 读取第i个成绩,存入a[i]
}
步骤 5:接收要查找的成绩 c
定义变量 c
,读取用户输入的目标成绩。
cpp
运行
int c; // 要查找的成绩
cin >> c;
步骤 6:遍历数组查找 c
,记录位置
- 用一个布尔变量
flag
标记是否找到(初始为false
,找到后改为true
); - 遍历数组,对每个元素
a[i]
,如果等于c
,就输出i
(位置),并更新flag
。
cpp
运行
bool flag = false; // 标记是否找到,初始为未找到
for (int i = 1; i <= n; i++) { // 遍历所有成绩if (a[i] == c) { // 如果当前成绩等于ccout << i << " "; // 输出位置i(带空格分隔)flag = true; // 标记为已找到}
}
步骤 7:处理 “未找到” 的情况
如果循环结束后 flag
仍为 false
,说明没找到 c
,输出 “no”。
cpp
运行
if (!flag) { // 如果flag是false(没找到)cout << "no";
}
四、完整代码
把上面的步骤组合起来,就是完整的程序:
cpp
运行
#include<bits/stdc++.h>
using namespace std;int main() {int n; // 成绩的个数cin >> n;int a[n]; // 存储成绩的数组(下标1~n)for (int i = 1; i <= n; i++) {cin >> a[i];}int c; // 要查找的成绩cin >> c;bool flag = false; // 标记是否找到for (int i = 1; i <= n; i++) {if (a[i] == c) {cout << i << " ";flag = true;}}if (!flag) { // 没找到时输出nocout << "no";}return 0;
}
五、测试示例
我们用实际输入测试一下,确保程序正确:
测试 1:找到多个位置
- 输入:
plaintext
8 90 88 85 88 88 99 95 100 88
- 程序执行:数组中位置 2、4、5 都是 88,所以输出
2 4 5
(结尾的空格不影响结果)。
测试 2:找到一个位置
- 输入:
plaintext
8 90 88 85 88 88 99 95 100 99
- 程序执行:只有位置 6 是 99,输出
6
。
测试 3:未找到
- 输入:
plaintext
3 100 90 80
大家还可以在我的bilibili(编程题小白日记)搜索 ···0051.查找成绩(数组实现)··· 找到这道题的视频解析