简单回顾:
# 什么是一维数组?
观察上图我们可以看见六个小格子,它们按顺序排列称为了一个叫 “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