c++习题1

一维数组基础概念

一维数组是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);
}

常见习题类型

  1. 求最大值/最小值

    遍历数组比较元素值:

    cpp 复制代码
    int max = arr[0];
    for (int i = 1; i < size; i++) {
        if (arr[i] > max) max = arr[i];
    }
  2. 数组求和/平均值

    累加所有元素后计算:

    cpp 复制代码
    int sum = 0;
    for (int i = 0; i < size; i++) {
        sum += arr[i];
    }
    double avg = static_cast<double>(sum) / size;
  3. 反转数组

    使用双指针交换元素:

    cpp 复制代码
    int left = 0, right = size - 1;
    while (left < right) {
        swap(arr[left], arr[right]);
        left++;
        right--;
    }
  4. 查找元素

    线性查找或二分查找(若数组有序):

    cpp 复制代码
    bool 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::arraystd::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;
}