1. 概述
数组特点:
- 数组中每个元素的数据类型相同
- 数组是由连续的内存位置组成的
定义方式:
- 数据类型 数组名[数组长度]
- 数据类型 数组名[数组长度] = {值1,值2,值3,…}
- 数据类型 数组名[] = {值1,值2,值3,…}
#include<iostream>
using namespace std;
int main()
{
int arr1[5];
arr1[0] = 0;
arr1[1] = 1;
arr1[2] = 2;
arr1[3] = 3;
arr1[4] = 4;
int arr2[5] = { 0,1,2,3,4 };
int arr3[] = {0,1,2,3,4};
system("pause");
return 0;
}
注意:
2. 一维数组名
作用:
- 可以统计整个数组在内存中的长度:sizeof(数组名)
- 可以获取数组在内存中的首地址:cout<<数组名<<endl;
#include<iostream>
using namespace std;
int main()
{
int arr1[5] = {3, 6, 8, 10, 12};
cout << sizeof(arr1) << endl;
cout << sizeof(arr1[0]) << endl;
cout << sizeof(arr1)/ sizeof(arr1[0]) << endl;
cout << arr1 << endl;
cout<< (int)arr1 << endl;
cout << (int)&arr1[0] << endl;
cout << (int)&arr1[1] << endl;
system("pause");
return 0;
}
案例1:五只小猪称体重,在一个数组中记录了五只小猪的体重,找出并打印最重的小猪体重
#include<iostream>
using namespace std;
int main()
{
int max = 0;
int pig[5] = { 24, 26, 18, 40, 12 };
for (int i = 0; i < 5; i++)
{
if (pig[i] > max)
{
max = pig[i];
}
}
cout << max << endl;
system("pause");
return 0;
}
案例2:数组元素逆置,声明一个5个元素的数组,并将元素逆置
#include<iostream>
using namespace std;
int main()
{
int max = 0;
int arr1[5] = { 24, 26, 18, 40, 12 };
int start = 0;
int end = sizeof(arr1) / sizeof(arr1[0]);
int f = 0;
while (start<end)
{
f = arr1[start];
arr1[start] = arr1[end];
arr1[end] = f;
start++;
end--;
}
system("pause");
return 0;
}
案例3:冒泡排序
#include<iostream>
using namespace std;
int main()
{
int arr1[9] = { 24, 26, 18, 40, 12, 7, 31, 57, 3 };
for (int i = 8; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
if (arr1[j]>arr1[j+1])
{
int f = 0;
f = arr1[j];
arr1[j] = arr1[j + 1];
arr1[j + 1] = f;
}
}
}
for (int i = 0; i < 9; i++)
{
cout << arr1[i] << endl;
}
system("pause");
return 0;
}
3. 二维数组
3.1 二维数组定义
- 数据类型 数组名[行数][列数];
- 数据类型 数组名[行数][列数] = {{数据1,数据2},{数据3,数据4},…};
- 数据类型 数组名[行数][列数] = {数据1,数据2,数据3,数据4,…};
- 数据类型 数组名[ ][列数] = {数据1,数据2,数据3,数据4,…};
#include<iostream>
using namespace std;
int main()
{
int arrs1[2][3] = {1,2,3};
int arrs2[2][3] = { {1,3},{2,4} };
int arrs3[][3] = { {1,3,5},{2,4,6} };
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arrs2[i][j] << endl;
}
}
system("pause");
return 0;
}
3.2 二维数组数组名
作用:
#include<iostream>
using namespace std;
int main()
{
double arrs1[2][3] = { 1,2,3 };
cout << sizeof(arrs1) << endl;
cout << sizeof(arrs1[0]) << endl;
cout << sizeof(arrs1[0][0]) << endl;
cout << sizeof(arrs1)/ sizeof(arrs1[0]) << endl;
cout << sizeof(arrs1[0]) / sizeof(arrs1[0][0]) << endl;
cout << (int)arrs1 << endl;
cout << (int)&arrs1[1] << endl;
system("pause");
return 0;
}
案例:考试成绩统计
#include<iostream>
using namespace std;
int main()
{
int arrs1[3][3] =
{ {100,100,100 },
{ 90,50,100 },
{ 60,70,80 }
};
string names[3] = {"zhang san","li si","wang wu"};
for (int i = 0; i < 3; i++)
{
int sums = 0;
for (int j = 0; j < 3; j++)
{
sums += arrs1[i][j];
}
cout << names[i]<<" zong fen:" << sums << endl;
}
system("pause");
return 0;
}
|