【C++】一维数组训练(小猪称体重3.0 / 数组元组逆序)

简单回顾:

# 什么是一维数组?

观察上图我们可以看见六个小格子,它们按顺序排列称为了一个叫 “arr”的数组。

# 数组定义方式

①数据类型 数组名[数组长度] ;

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

③数据类型 数组名[ ] = { 值1,值2,值3....}

观察上图,思考一个问题。明明是六个格子,为什么数组的长度是5呢?

可以看到图中黄色部分,是计算机的存储规则,数组会从0号位开始存储,所以存储6个数组值的存储范围是arr[0]~arr[5]

#如何获得数组相关参数的长度

利用函数sizeof获取数组长度:sizeof(数组名)

示例:sizeof(arr)

利用函数sizeof获取某个数组元素长度:sizeof(数组元素)

示例:sizeof(arr[1])

#如何获得数组的相关参数首地址

获取数组首地址:数组名

示例:arr

获取某个数组元素首地址:&数组名[元素下标]

示例:&arr[1]

============================ 回顾完成   测试加载中......=========================

题目1:按照用户需求输入对应数量的每只小猪体重,计算并返回最重小猪的体重

分析:

1、按照用户输入的数量在数组中添加数据

2、初始化一个最大值,将数组中每一个元素数据与最大值比较,选出最大值

代码:

#include <iostream>
using namespace std;

int main() {

    int a, k, max = 0, arr[100] = {};
    cout << "请输入需要称重的小猪数量:";
    cin >> k;
    cout << endl;
   
    for (a = 0; a < k; a++) {

        cout << "请输入第" << a+1 << "只的重量:";
        cin >> arr[a];

        if (arr[a] > max) {

           max = arr[a];

        }
 
    }

    cout << endl << "完成录入 请稍后..." << endl;

    cout << endl << "当前" << k << "只小猪里,最重的是" << max << "Kg" << endl;

    system("pause");

    return 0;

}

运行结果:

题目2:用户输入一个数组,将该数组元素倒置输出

分析:

①可以利用for循环进行数据插入与输出,插入数据按正序进行过for循环,a++;输出数据时按逆序修for循环条件,a--

②利用数组下标,标记开始节点与结束节点,并进行交换输出。

①代码:

#include <iostream>
using namespace std;

int main() {

    int a, k, arr[100] = {};
    cout << "请输入数组长度:";
    cin >> k;
    cout << endl;
   
    for (a = 0; a < k; a++) {

        cout << "请输入第" << a+1 << "个元素:";
        cin >> arr[a];
 
    }

    cout << endl << "当前数组:arr[" << k << "] = {";

    for (a = 0; a < k; a++) {
        
        cout << arr[a] << " ";

    }

    cout << "}" << endl << "元素逆置中...." << endl << "当前数组:arr[" << k << "] = {";

    for (a = k-1; a >= 0; a--) {

        cout << arr[a] << " ";

    }

    cout << "}" << endl;

    system("pause");

    return 0;

}

①运行结果:

②代码:

#include <iostream>
using namespace std;

int main() {

    int a, k, arr[5] = {};
    cout << "请输入数组长度:";
    cin >> k;
    cout << endl;
   
    for (a = 0; a < k; a++) {

        cout << "请输入第" << a+1 << "个元素:";
        cin >> arr[a];
 
    }

    cout << endl << "当前数组:arr[" << k << "] = {";

    for (a = 0; a < k; a++) {
        
        cout << arr[a] << " ";

    }

    cout << "}" << endl << "元素逆置中...." << endl << "当前数组:arr[" << k << "] = {";

    int start = 0; //起始下标
    int end = sizeof(arr) / sizeof(arr[0]) - 1; //结束下标

    while (start < end) {

        //元素互换
        int temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;

        //下标更新
        start++;
        end--;
    }

    for (a = 0; a < k; a++) {

        cout << arr[a] << " ";

    }

    cout << "}" << endl;

    system("pause");

    return 0;

}

②运行结果:

注意事项:

1、关于数组定义

❌错误示范:int arr[ ] ={ }

数组无法根据后续的值获取数组长度

✔正确示范:int arr[3] 或 int arr[ ] = {10,20,30}

2、如果我在定义数组时长度写了10,但是后面的值我只添加了3个,会出现什么情况?

⚠示范:int arr[10] = {5,10,15}

我们利用代码看一下

 int arr[10] = { 1,5,8 };

 for (int i = 0; i < 10; i++) {

     cout << arr[i] << "  ";

 }
 cout << endl;

运行结果:

所以可以看出,系统会将剩余没有赋值的位置赋值为0

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值