一维数组基础概念
一维数组是C++中存储相同类型元素的线性集合,通过索引访问。声明格式为:
cpp
数据类型 数组名[数组长度];
示例:
cpp
int arr[5]; // 声明包含5个整数的数组
数组初始化
数组可在声明时直接初始化:
cpp
int arr[3] = {1, 2, 3}; // 完全初始化
int arr2[] = {4, 5}; // 自动推断长度为2
int arr3[5] = {}; // 全部初始化为0
访问与修改数组元素
通过下标(从0开始)访问或修改元素:
cpp
arr[0] = 10; // 修改第一个元素
cout << arr[1]; // 输出第二个元素
遍历数组
使用循环遍历数组的常见方法:
cpp
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
数组与函数
数组可作为参数传递给函数,实际传递的是指针:
cpp
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
}
int main() {
int a[] = {1, 2, 3};
printArray(a, 3);
}
常见习题类型
-
求最大值/最小值
遍历数组比较元素值:
cppint max = arr[0]; for (int i = 1; i < size; i++) { if (arr[i] > max) max = arr[i]; } -
数组求和/平均值
累加所有元素后计算:
cppint sum = 0; for (int i = 0; i < size; i++) { sum += arr[i]; } double avg = static_cast<double>(sum) / size; -
反转数组
使用双指针交换元素:
cppint left = 0, right = size - 1; while (left < right) { swap(arr[left], arr[right]); left++; right--; } -
查找元素
线性查找或二分查找(若数组有序):
cppbool found = false; for (int i = 0; i < size; i++) { if (arr[i] == target) { found = true; break; } }
动态数组(C风格)
使用指针和new创建动态数组:
cpp
int* dynamicArr = new int[10]; // 动态分配
delete[] dynamicArr; // 释放内存
注意事项
- 数组越界访问会导致未定义行为。
- 数组长度需在编译时确定(静态数组)。
- C++11后推荐使用
std::array或std::vector替代原生数组。
示例题目
题目 :输入5个整数存入数组,输出逆序后的结果。
代码:
cpp
#include <iostream>
using namespace std;
int main() {
int arr[5];
for (int i = 0; i < 5; i++) {
cin >> arr[i];
}
for (int i = 4; i >= 0; i--) {
cout << arr[i] << " ";
}
return 0;
}