Skip to content

4 一维数组

发布时间:

概述

数组: 就是一个集合,里面存放了相同的类型的数据元素
特点1 :数组中的每个数据元素都是相同的数据类型
特点2:数组是有连续的内存地址组成的

定义

一维数组定义的三种方式:

  1. 数据类型 数姐名[数组长度];
  2. 数据类型 数组名[数组长度]=(值1,值2...};
  3. 数据类型 数组名[]={值1,值2...};

示例:

js
#include <iostream>
using namespace std;
int main() {
    // 定义方式1 :  数据类型 数组名[元表个数];
    int score[10];
    // 利用下标赋值
    score[0] = 100;
    score[1] = 99;
    score[2] = 85;
    // 利用下标输出
    cout << score[0] << endl;
    cout << score[1] << endl;
    cout << score[2] << endl;

    // 第二种定义方式
    // 数据类型 数组名[数组长度]=(值1,值2...};
    // 如果(}内不足1日个数据,剩余数据用0补全
    int score2[10] = {100, 90, 80, 70, 60, 50, 40, 30, 20, 10};
    // 逐个输出
    cout << score2[0] << endl;
    cout << score2[1] << endl;
    // 一个一个输出太麻烦,因此可以利用循环输出
    for (int i = 0; i < 10; i++) {
        cout << score2[i] << endl;
    }

    // 定义方式3 
    // 数据类型 数组名[]={值1,值2...};
    int score3[] = {100, 90, 80, 70, 60, 50, 40, 30, 20, 10};
    for (int i = 0; i < 10; i++) {
        cout << score3[i] << endl;
    }
    
    return 0;
}


   

一维数组名称的用途:

  1. 可以统计整个数组在内存中的长度
    2.可以获取数组在内存中的首地址
    实例:
js
#include <iostream>
using namespace std;
int main() {
    // 数组名用途
    // 1、可以获取整个数组占用内存空间大小
    int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    cout << "整个数组所占用内存空间为:" << sizeof(arr) << endl;
    cout << "每个元素所占内存空间为:" << sizeof(arr[0]) << endl;
    cout << "数组的元表个数为:" << sizeof(arr) / sizeof(arr[0]) << endl;

    // 2、可以通过数组名获取到数组首地址
    cout << "数组首地址为" << &arr << endl;
    cout << "效组中第一个元表地址为:" << &arr[0] << endl;
    cout << "数组中第二个元素地址为:" << &arr[1] << endl;
    // arr = 100; 错误,数组名是常量,因此不可以賦值
    return 0;
}
   

1.3 课堂练习

1、 数组逆序重存放
2、 查找“支撑数”
思路:由于第一个数和最后一个数不可能是支撑数,那么我们循环的下标范围 1~n-2
对于下标为 i 的元素 a[i] 而言, 左侧的数为a[i-1], 右侧的数为a[i+1]。
2、排除异形基因
3、 整数去重
思路:顺序查找当前元素是否与之前所有元素有相同的,如果没有输出
4、 找找谁的身高超过全家的平均身高
第一步:求和
第二步:求平均
第三步:求哪些人在平均之上

三、作业练习

1、打折优惠
1、橘子称重
1、陶陶摘苹果
1、求和
1、完美的偶数
1、输出奇数和偶数
1、考试成绩的分布情况

附加题:
DF1354:【入门】拿到某个数的概率是多少?
DF1357:【入门】哪个厂家的零件更标准?

四、找数问题
DF1154:【入门】数组元素的查找
DF1152:【入门】求 n个数的最大值和最小值
五、找数问题可选作业
DF1168: 【入门】歌唱比赛评分
DF1170: 【入门】最大数
DF1218: 【入门】摘苹果
一、数组元素移动
DF1009: 【入门】数组逆序
DF1162:【入门】数组元素的删除
思路二:真删除,将数组中下标为x的元素删除!
从删除下标x开始,将元素顺序向前移动!
a[2]=a[3]; a[3]=a[4]; ……a[5]=a[6];
归纳得知: a[i]=a[i+1];//每个数=其后面的元素
DF1211:【入门】数组元素的插入
在第4个数的位置插入 y = 100!
思路:逆序循环下标为 n-1~x结束, 将元素顺序后移(a[i+1] = a[i]) , 空出下标为x的位置;
a[i+1]=a[i]; a[6]=a[5] a[5]=a[4] a[4]=a[3]
在下标为x的位置插入元素y, a[x] = y;
DF1161:【入门】元素插入有序数组
要插入元素的值 y = 2;
思路:
第一步:找出要插入的元素的下标x;
从第一个数开始逐个比较,找到第一个a[i] >= y,下标i 就是 x的值!
第二步:将元素顺序后移(逆序循环n-1~x) ;
第三步:在下标为x的位置插入元素y;
二、数组元素移动作业
DF1213:【入门】删除数组的最小数
DF1157: 【入门】最小数
DF1212: 【入门】移动数组元素
DF1214:【入门】在最大数后面插入一个数
DF1217:【入门】小明排队做操迟到
DF1232: 【入门】换位置