目录
P42 数组-一维数组定义方式
所谓数组,就是一个集合,里面存放了相同类型的数据元素
特点1:数组中的每个数据元素都是相同的数据类型
特点2:数组都是由连续内存位置组成
一维数组的定义方式:
1、数据类型 数组名[ 数组长度 ];
2、数据类型 数组名[ 数组长度 ] = {值1, 值2 ...};
3、数据类型 数组名[ ] = {值1,值2...};
示例:
#include <iostream>
using namespace std;
int main() {
//数组
//1、数据类型 数组名[数组长度];
//定义数组时必须要有初始的长度
int arr[5];
//给数组中的元素进行赋值
//数组元素使得下标是从0开始索引的
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
cout << "方式一代码得到的结果:" << endl;
cout << arr[0] << endl;
//2、数据类型 数组名[数组长度] = { 值1, 值2 ... };
int arr1[5] = { 10, 20, 30, 40, 50 };
cout << "方式二代码得到的结果:" << endl;
cout << arr1[1] << endl;
//如果在初始化数据的时候,没有全部填写完,会用0来填补
int arr2[5] = { 10,20,30,0,0 };
for (int i = 0; i < 5; i++) {
cout << arr2[i] << endl;
}
//3、数据类型 数组名[] = { 值1,值2... };
int arr3[] = { 10, 20, 30, 40, 50 };
cout << "方式三代码得到的结果:" << endl;
cout << arr3[3] << endl;
system("pause");
return 0;
}
运行后的结果为:
P43数组-一维数组-数组名
一维数组名称的用途:
1、可以统计整个数组在内存中的长度
2、可以获取数组在内存中的首地址
示例:
#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 << "数组首地址为: " << (int)arr << endl;
cout << "数组中第一个元素地址为: " << (int)&arr[0] << endl;
cout << "数组中第二个元素地址为: " << (int)&arr[1] << endl;
//arr = 100; 错误,数组名是常量,因此不可以赋值
system("pause");
return 0;
}
运行后的结果为:
注意:数组名是常量,不可以赋值
总结1:直接打印数组名,可以查看数组所占内存的首地址
总结2:对数组名进行sizeof,可以获取整个数组占内存空间的大小
P44数组-一维数组案例-五只小猪称体重
案例描述:
在一个数组中记录了五只小猪的体重,如:int arr[5] = {300,350,200,400,250};找出并打印最重的小猪体重。
#include <iostream>
using namespace std;
int main() {
int arr[5] = { 300,350,200,400,250 };
int max = arr[0];
for (int i = 1; i < 5; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
cout <<"最重的小猪体重为:" << max << endl;
system("pause");
return 0;
}
运行后的结果为:
P45数组-一维数组案例-元素逆置
案例描述:请声明一个5个元素的数组,并且将元素逆置 。(如原数组元素为:1,3,2,5,4;逆置后输出结果为:4,5,2,3,1);
#include <iostream>
using namespace std;
int main() {
int arr[5] = { 1,3,2,5,4 };
int arr2[5];
for (int i = 4; i >= 0; i--) {
arr2[i] = arr[4 - i];
}
for (int j = 0; j < 5; j++) {
arr[j] = arr2[j];
}
for (int m = 0; m < 5; m++) {
cout << arr[m] << endl;
}
system("pause");
return 0;
}
运行后的结果为:
P46数组-一维数组-冒泡排序
作用: 最常用的排序算法,对数组内元素进行排序
-
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
-
对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。
-
重复以上的步骤,每次比较次数-1,直到不需要比较
#include <iostream>
using namespace std;
int main() {
int arr[9] = { 4,2,8,0,5,7,1,3,9 };
int temp = 0;
for (int i = 0; i < 9; i++) {
for (int j = 0;j<8-i;j++) {
if (arr[j]> arr[j+1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < 9; i++) {
cout << arr[i] << endl;
}
system("pause");
return 0;
}
运行后的结果为:
P47数组-二维数组的定义方式
二维数组定义的四种方式:
-
数据类型 数组名[ 行数 ][ 列数 ];
-
数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2 } ,{数据3,数据4 } };
-
数据类型 数组名[ 行数 ][ 列数 ] = { 数据1,数据2,数据3,数据4};
-
数据类型 数组名[ ][ 列数 ] = { 数据1,数据2,数据3,数据4};
示例:
#include <iostream>
using namespace std;
int main() {
//1、数组类型 数组名[行数][列数];
int arr[2][3];
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[1][0] = 4;
arr[1][1] = 5;
arr[1][2] = 6;
cout << "方式一得出的结果:" << endl;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
//2、数据类型 数组名[行数][列数]={ {数据1,数据2},{数据3,数据4}};
int arr2[2][3] = {
{7,8,9},
{10,11,12}
};
cout << "方式二得出的结果:" << endl;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arr2[i][j] << " ";
}
cout << endl;
}
//3、数据类型 数据名[行数][列数]={ 数据1,数据2,数据3, 数据4 };
int arr3[2][3] = { 1,2,3,4,5,6 };
cout << "方式三得出的结果:" << endl;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arr3[i][j] << " ";
}
cout << endl;
}
//4、数据类型 数据名[][列数] ={ 数据1,数据2,数据3, 数据4 };
int arr4[][3] = { 7,8,9,10,11,12 };
cout << "方式四得出的结果:" << endl;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arr3[i][j] << " ";
}
cout << endl;
}
system("pause");
return 0;
}
运行后的结果为:
P48数组-二维数组-数组名
二维数组名的作用:
-
查看二维数组所占内存空间
-
获取二维数组首地址
#include <iostream>
using namespace std;
int main() {
//二维数组数组名
int arr[2][3] =
{
{1,2,3},
{4,5,6}
};
cout << "二维数组大小: " << sizeof(arr) << endl;
cout << "二维数组一行大小: " << sizeof(arr[0]) << endl;
cout << "二维数组元素大小: " << sizeof(arr[0][0]) << endl;
cout << "二维数组行数: " << sizeof(arr) / sizeof(arr[0]) << endl;
cout << "二维数组列数: " << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;
//地址
cout << "二维数组首地址:" << arr << endl;
cout << "二维数组第一行地址:" << arr[0] << endl;
cout << "二维数组第二行地址:" << arr[1] << endl;
cout << "二维数组第一个元素地址:" << &arr[0][0] << endl;
cout << "二维数组第二个元素地址:" << &arr[0][1] << endl;
system("pause");
return 0;
}
运行后的结果为:
P49数组-二维数组案例-考试成绩统计
考试成绩统计:
案例描述:有三名同学(张三,李四,王五),在一次考试中的成绩分别如下表,请分别输出三名同学的总成绩
语文 | 数学 | 英语 | |
---|---|---|---|
张三 | 100 | 100 | 100 |
李四 | 90 | 50 | 100 |
王五 | 60 | 70 | 80 |
#include <iostream>
using namespace std;
int main() {
int arr[3][3] = {
{100,100,100},
{90,50,100},
{60,70,80}
};
int zongfen[3]={0,0,0};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
zongfen[i] += arr[i][j];
}
}
cout << "三个人的总分依次为:" << endl;
for (int i = 0; i < 3; i++) {
cout << zongfen[i] << endl;
}
system("pause");
return 0;
}
运行后的结果为: