题目描述与分析
题目描述:
给定一个整数数组,编写一个程序实现以下功能:
1.将输入的整数数组倒序输出,每个数之间用空格分隔。
2.从正序数组中,每隔一个单位(即索引为奇数的元素),输出其值,同样用空格分隔。
输入描述:
第一行包含一个整数 n,表示数组的长度。
接下来一行包含 n 个整数,表示数组的元素。
输出描述:
首先输出倒序排列的数组元素,然后输出正序数组中每隔一个单位的元素。
输入示例:
5
2 3 4 5 6
输出示例:
6 5 4 3 2
2 4 6
一、数组
表示一组数据可以用数组,在 C++ 中,数组是一种基础的数据结构,用来存储固定大小的相同类型元素的序列。数组中的每个元素都可以通过数组名和索引访问。数组的声明、初始化、操作和特性是 C++ 编程中的重要基础。
数据结构的概念理解起来比较抽象,它表示了数据在计算中被组织和存储的形式,而数组呢就是一组按照一定次序排列的数值,数组中的每一个变量被称为元素,比如下图中就是数组的存储形式:
数组的特性
固定大小:一旦声明,数组的大小不能改变。
连续的内存位置:数组的元素在内存中连续存储,这意味着可以通过指针算术操作来遍历数组。
同一类型:所有数组元素必须是同一类型。
C++中声明数组的方式为dataType arrayName[arraySize]。
dataType表示数组元素的类型,比如int、double、char等。
arrayName是为数组指定的名称,类似于变量名称。
arraySize是数组的大小,即它可以容纳多少个元素。
// 声明一个包含5个整数的数组
int myArray[5];
C++中使用大括号 {} 初始化数组的元素,也可以逐个赋值。
// 使用大括号初始化一个长度为5的整型数组
int arr[5] = {
1, 2, 3, 4, 5};
// 定义一个长度为3的整型数组,并逐个赋值
int arr1[3];
arr1[0] = 10;
arr1[1] = 20;
arr1[2] = 30;
访问数组中的元素,您可以使用下标操作符 [],请注意,下标从0开始,直到数组长度的前一位。
int value = arr[2]; // 获取数组 arr 的第三个元素的值,即 3
除了访问元素,还可以通过下标操作符 [] 修改数组中的元素的值。
arr[0] = 100; // 修改数组 arr 的第一个元素的值为 100
使用循环结构,如 for 循环,可以遍历数组中的所有元素。
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
需要注意的是,C++中的数组没有提供自动的长度信息,因此在处理数组时必须小心,以避免访问越界的元素。
int a = arr[5]; // 数组长度为5,索引范围为0-4,如果尝试访问arr[5],会越界访问数组范围,导致程序运行出错
二、Vector
在 C++ 中,vector 是一个封装了动态大小数组的标准模板库(STL)容器。与普通数组相比,vector 提供了更多的灵活性和功能,如自动管理内存、容易地插入和删除元素等。vector 是在 头文件中定义的,属于 std::vector 命名空间。
#include <vector>
using std::vector;
容器的创建方式为vector<类型> 名称, 无需指明长度
vector<int> myVector; // 创建一个空vector, 元素是int类型的
除此之外,还有一些别的创建方式,常见的有
vector<int> myVector = {
1, 2, 3, 4, 5}; // 创建一个包含整数元素的容器并初始化元素
vector<int> myVector(