数组就是一个集合,里面存放了相同类型的数据元素
特点1:数组中的每个元素都是相同的数据类型
特点2:数组是由连续的内存位置组成的
2.一维数组
定义初始化
三种定义方式:
数据类型 数组名[数组长度];
数据类型 数组名[数组长度] = {值1,值2…};
数据类型 数组[ ] ={值1,值2…};
#include <iostream>
using namespace std;
int main()
{
/*
1. 数据类型 数组名[数组长度];
2. 数据类型 数组名[数组长度] = {值1,值2…};
3. 数据类型 数组[ ] ={值1,值2…};
*/
//1.数据类型 数组名[数组长度];
int arr[5];
//给数组元素赋值
//数组下标从0开始索引
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
//访问数组元素
for (int i = 0; i < 5; i++)
{
cout << arr[i] << ' ';
}
cout << "\n";
//2. 数据类型 数组名[数组长度] = {值1,值2…};
int arr2[5] = {10, 20, 30, 40, 50};
//int arr2[5] ={10,20,30};初始化的时候,如果没有全部写完,会用0补全剩余数据
//访问数组元素
for (int i = 0; i < 5; i++)
{
cout << arr[i] << ' ';
}
cout << "\n";
//3. 数据类型 数组[ ] ={值1,值2…};
int arr3[] = {10, 20, 30, 40, 50, 60};
for (int i = 0; i < 6; i++)
{
cout << arr3[i] << ' ';
}
cout << "\n";
system("pause");
return 0;
}
总结1:数组名的命名规范与变量名命名规范一致,不要和变量重名
总结2:数组中下标是从0开始索引
一维数组数组名
用途:
可以统计整个数组在内存中的长度 sizeof(arr)
可以获取数组在内存中的首地址 cout << arr << endl;
#include <iostream>
using namespace std;
int main()
{
//1. 可以统计整个数组在内存中的长度 sizeof(arr)
//2. 可以获取数组在内存中的首地址 cout << arr << endl;
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
cout << "整个数组内存空间为:" << sizeof(arr) << endl;
cout << "每个元素占用的内存空间为:" << sizeof(arr[0]) << endl;
cout << "数组中元素的个数为:" << sizeof(arr)/sizeof(arr[0]) <<endl;
cout << "数组首地址为:"<< arr << endl;
cout << "数组第一个元素的地址为:" << &arr[0] << endl;
cout << "数组第二个元素的地址为:" << &arr[1] << endl;
system("pause");
return 0;
}
arr = 100;数组名是常量,不可以进行赋值操作
一维数组案例1:
五只小猪称体重
在一个数组记录了五只小猪的体重,如: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 = 0;
int flag;
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n; i++)
{
if (arr[i] > max)
{
flag = i;
max = arr[i];
}
}
cout << "第" << flag + 1 << "只小猪最重,体重为:" << max << endl;
system("pause");
return 0;
}
一维数组案例2:
数组元素逆置
请声明一个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 start = 0;
int end = sizeof(arr) / sizeof(arr[0])-1;
int t;
for (int i = 0; i < 5; i++)
{
cout << arr[i] << " ";
}
cout << "\n";
while (start < end)
{
if (arr[start] < arr[end])
{
t = arr[start];
arr[start] = arr[end];
arr[end] = t;
start++;
end--;
}
}
for (int i = 0; i < 5; i++)
{
cout << arr[i] << " ";
}
system("pause");
return 0;
}
二维数组
定义:二维数组就是在一维数组上加了一个维度。
二维数组定义方式
数据类型 数组名[行数][列数];
数据类型 数组名[行数][列数]={{数据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;
//外层循环打印行数,内层循环打印列数
// for(int i=0;i<2;i++)
// {
// for(int j=0;j<3;j++)
// {
// cout << arr[i][j] << " ";
// }
// cout << "\n";
// }
//2.数据类型 数组名[行数][列数]={{数据1,数据2},{数据3,数据4}};
int arr2[2][3]={{1,2,3},{4,5,6}};
// for(int i=0;i<2;i++)
// {
// for(int j=0;j<3;j++)
// {
// cout << arr2[i][j] << " ";
// }
// cout << "\n";
// }
//3.数据类型 数组名[行数][列数]={数据1,数据2,数据3,数据4};
int arr3[2][3]={1,2,3,4,5,6};
// for(int i=0;i<2;i++)
// {
// for(int j=0;j<3;j++)
// {
// cout << arr2[i][j] << " ";
// }
// cout << "\n";
// }
//4.数据类型 数组名[ ][列数]={数据1,数据2,数据3,数据4};
int arr4[][3]={1,2,3,4,5,6};
// for(int i=0;i<2;i++)
// {
// for(int j=0;j<3;j++)
// {
// cout << arr2[i][j] << " ";
// }
// cout << "\n";
// }
return 0;
}
总结:在定义二维数组时,如果初始化了数据,可以省略列数,行数不可省
二维数组数组名
查看二维数组所占内存空间
获取二维数组首地址
#include <iostream>
using namespace std;
int main()
{
//二维数组数组名
int arr[2][3] =
{
{1, 2, 3},
{4, 5, 6}};
//1.查看二维数组所占内存空间
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;
//2.获取二维数组首地址
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;
}
二维数组应用案例
考试成绩统计
有三名同学(张三,李四,王五),在一次考试中成绩分别如下表,请分别输出三名同学的总成绩。
#include <iostream>
using namespace std;
int main()
{
int scores[3][3] = {
{100, 100, 100},
{90, 50, 100},
{60, 70, 80}};
string names[3] = {"张三", "李四", "王五"};
int sum = 0;
for (int i = 0; i < 3; i++)
{
sum = 0;
for (int j = 0; j < 3; j++)
{
sum += scores[i][j];
}
cout << names[i] << "的总成绩为: " << sum << endl;
}
cout << "\n";
system("pause");
return 0;
}