欢迎光临
我们一直在努力

C++语法基础--数组

数组是存储数据的强有力的手段。

一、一维数组

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 项

思路
  • 先定义一个足够长的数组用来存储数据。
  • 初始化第一项和第二项分别为0和1。
  • 使用for循环每一项等于前两项数据的和。
  • 由于数组下标从0开始,所以如果是求前n项,下标为n-1。
  • 代码

    #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、将数组数据逆序输出

    思路
  • 定义整数n,输入数字n。
  • 定义一个长度为n的数组。
  • 使用for循环输入数组中的每个数据。
  • 反向遍历数组,逆序输出。
  • 代码

    #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) 次,最后将结果输出。
    旋转一次是指:将最右边的数放到最左边。

    方法一

    思路
  • 每次将数组中的最后一个数据,移动到最前面
  • 将其余数据向后移动一位。
  • 重复执行k次。
  • 这种方法的时间复杂度为O(n*k)。
  • 代码

    #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;
    }

    方法二

    思路
  • 先使用reverse函数将整个数组进行翻转(逆序)。
  • 分别将前部分和后部分使用reverse函数翻转(逆序)。
  • 这种方法时间复杂度为O(n)。
  • 注意:使用reverse函数时需要包含algorithm库。
  • 语法:reverse(开始位置, 结束位置)。
  • 代码

    #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函数

  • 需要使用cstring头文件。
  • 用于将数组元素初始化为0或者-1。
  • #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函数

  • 需要使用cstring头文件。
  • 用于复制数组元素。
  • #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;
    }

    赞(0)
    未经允许不得转载:171主机测评 » C++语法基础--数组
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址