数组是存储数据的强有力的手段。
一、一维数组
1、数组的定义
数组定义方式和变量类似。
模版:
#include<iostream>
using namespace std;
int main(){
// 定义不同类型的数组
int a[10];
float b[10];
char c[5];
double d[10];
return 0;
}
2、数组的初始化
在函数内部进行初始化,如果未进行初始化,则值是随机的。
#include<iostream>
using namespace std;
int main(){
int a[3] = {1,2,3};
return 0;
}
3、访问数组元素
数组下标从0开始。使用数组下标进行访问。
#include<iostream>
using namespace std;
int main(){
int a[3] = {1,2,3};
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<" "<<endl;
return 0;
}
二、多维数组
多维数组就是数组的数组。
二维数组:int a[10][10];
三维数组:int a[2][3][4];
以此类推。
三、例题
1、数组求解斐波那契数列的第 N 项
思路
代码
#include<iostream>
using namespace std;
int main(){
int arr[100],n;
// 初始化第一项和第二项
arr[0] = 0;
arr[1] = 1;
cin>>n;
// 求和
for(int i = 2; i < n; i++){
arr[i] = arr[i – 1] + arr[i – 2];
}
// 输出
cout<<arr[n – 1]<<endl;
return 0;
}
2、将数组数据逆序输出
思路
代码
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
// 输入数组数据
for(int i = 0; i < n; i++){
cin>>a[i];
}
// 逆序输出
for(int i = n – 1; i >= 0; i–){
cout<<a[i]<<endl;
}
return 0;
}
3、数组旋转
题目描述
输入一个 n,再输入 n 个整数。将这个数组顺时针旋转 k(k≤n) 次,最后将结果输出。
旋转一次是指:将最右边的数放到最左边。
方法一
思路
代码
#include<iostream>
using namespace std;
int main(){
int n,temp,k;
cin>>n>>k;
int a[n];
// 输入所有数据
for(int i = 0; i < n; i++){
cin>>a[i];
}
for(int j = 0; j < k; j++){
// 将最右边的一位放在最左边
temp = a[n – 1];
// 向右移动一位
for(int i = n – 2; i >= 0; i–){
a[i + 1] = a[i];
}
a[0] = temp;
}
// 输出结果
for(int i = 0; i < n; i++){
cout<<a[i]<<endl;
}
return 0;
}
方法二
思路
代码
#include<iostream>
#include <algorithm>
using namespace std;
int main(){
int n,k;
cin>>n>>k;
int a[n];
// 输入数据
for(int i = 0; i < n; i++){
cin>>a[i];
}
// 逆序整个数组
reverse(a,a + n);
// 逆序前部分
reverse(a,a + k);
// 逆序后部分
reverse(a + k, a + n);
// 输出
for(int i = 0; i < n; i++){
cout<<a[i]<<endl;
}
return 0;
}
四、数组中常使用的内存操作函数
1、memset函数
#include <cstring>
#include <iostream>
using namespace std;
int main(){
int arr[100];
memset(arr, 0, sizeof(arr)); // 将所有元素设为0
memset(arr, -1, sizeof(arr)); // 将所有元素设为-1
// 注意:memset按字节设置,所以一般只用于设置0或-1
return 0;
}
2、memcpy函数
#include <cstring>
#incldue <iostream>
using namespace std;
int main(){
int src[10] = {1,2,3,4,5};
int dest[10];
memcpy(dest, src, sizeof(src)); // 复制整个数组
memcpy(dest, src, 5 * sizeof(int)); // 复制前5个元素
return 0;
}


