数组
包括一维数组与二维数组相关的题型。
P0401001-逆序输出数组元素
题目描述
从外部读入
输入描述
输入为两行。
第一行为一个正整数
第二行为
输出描述
逆序输出数组中的所有元素,元素之间用空格分隔
输入输出样例
输入数据
5
1 2 3 4 5输出数据
5 4 3 2 1参考代码
#include <iostream>
using namespace std;
int main(){
int a[110]; // 一般多申请空间多 5 到 10
int n;
cin >> n;
// 输入数据
for (int i = 0; i < n; i++) cin >> a[i];
// 逆序输出数据
for (int i = n - 1; i >= 0; i--) cout << a[i] << " ";
return 0;
}# 读取输入
n = int(input())
arr = list(map(int, input().split()))
# 逆序输出数组中的所有元素
reversed_arr = arr[::-1]
print(*reversed_arr)P0401002-交换数组元素
题目描述
从外部读入
输入描述
输入为两行。
第一行为一个正整数
第二行为
输出描述
交换数组中的第一个和最后一个元素,并输出交换后数组中的所有元素,元素之间用空格分隔
输入输出样例
输入数据
5
1 2 3 4 5输出数据
5 2 3 4 1参考代码
#include <iostream>
using namespace std;
int main(){
int a[110]; // 一般多申请空间多 5 到 10
int n;
cin >> n;
// 输入数据
for (int i = 0; i < n; i++) cin >> a[i];
// 交换元素
int tmp = a[0];
a[0] = a[n-1];
a[n-1] = tmp;
// 逆序输出数据
for (int i = 0; i < n; i++) cout << a[i] << " " ;
return 0;
}P0401003-求数组元素最小值
题目描述
输入一个整数
输入描述
输入为两行。
第一行为一个正整数
第二行为
输出描述
输出为两行。第一行为数组中的元素最小值,第二行为该最小值的下标。
输入输出样例:
输入
8
2 8 -1 3 -3 7 9 0输出
-3
4参考代码
#include <iostream>
using namespace std;
const int N = 1010;
int a[N];
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
int min_index = 0; // 选择最初的擂主
// 依次打擂,求出最小值的下标
for (int i = 1; i < n; i ++) {
if (a[i] < a[min_index]) min_index = i;
}
// 输出结果
cout << a[min_index] << endl;
cout << min_index << endl;
return 0;
}P0401004-数组的旋转
题目描述
输入一个整数
这里旋转一次是指:将数组最右边的数放到最左边,旋转两次就是重复两次这样的操作。
例如一个数组有下面 5 个整数:
1 2 3 4 5旋转一次就是把最后一个数字挪到最前面去,得到 5 1 2 3 4 。旋转两次就是按同样的规则做两次操作,结果应该是 4 5 1 2 3
输入描述
输入为两行。
第一行为两个整数
第二行为
输出描述
输出旋转后数组的所有元素,每个元素之间用空格隔开
输入输出样例
输入:
5 2
1 2 3 4 5输出:
4 5 1 2 3参考代码
#include <iostream>
using namespace std;
const int N = 100;
int a[N];
int main() {
int n, k;
cin >> n >> k;
for (int i = 0; i < n; i++) cin >> a[i];
// 倒着去依次挪位置
while (k--) {
int t = a[n - 1]; // 将最后一个元素临时存起来
for (int i = n - 2; i >= 0; i--) {
a[i + 1] = a[i];
}
a[0] = t; // 第一个位置挪出来后,把临时存的数据放进去
}
for (int i = 0; i < n; i++) cout << a[i] << ' ';
return 0;
}P0401005-查找含有x的数
问题描述
请从一组数中找出含有
输入描述
输入包含三行:
第一行为
第二行为
第三行包含一个一位的整数
输出描述
输出一行,有 2 个整数用空格隔开,第一个整数代表含有
输入输出样例
输入数据
5
12 28 190 36 1255
2输出数据
3 1295参考代码
#include <iostream>
using namespace std;
const int N = 1010;
int q[N];
bool contain_x(int n, int x) {
while (n > 0) {
if (n % 10 == x) return true;
n = n / 10;
}
return false;
}
int main() {
int n, x, cnt = 0, sum = 0;
cin >> n;
for (int i = 0; i < n; i++) cin >> q[i];
cin >> x;
for (int i = 0; i < n;i ++) {
if (contain_x(q[i], x)) {
cnt++;
sum = sum + q[i];
}
}
cout << cnt << " ";
cout << sum << endl;
return 0;
}