1.数组的定义
#include<iostream>
using namespace std;
int main()
{
int i;
int arr1[5] = {10,20,30}; //未初始化的默认为0
int arr2[] = { 123,45,564,8,679, };
for (i = 0; i < 5; i++)
{
cout << "arr" << i << arr1[i] << endl;
cout << "arr" << i << arr2[i] << endl;
}
system("pause");
return 0;
}
2.一维数组的数组名的用途
(1)可以统计整个数组在内存中的长度:sizeof(数组名)
(2)可以获取数组在内存中的首地址
(3)获取数组中的元素个数:sizeof(数组名)/sizeof(其中一个元素)
#include <iostream>
using namespace std;
int main()
{
int arr[] = { 123,432,233,452,534,235 };
//1.可以统计整个数组在内存中的长度:sizeof(数组名)
cout << "数组的大小为" << sizeof(arr) << endl; //输出24 = 4 * 6
//2.可以获取数组在内存中的首地址
cout << "数组的首地址为" << arr << endl;
cout << "数组的第一个元素的地址为" << &arr[0] << endl; //两个地址相同
cout << "数组的第二个元素地址为" << &arr[1] << endl; //和前面一个相差4个字节地址
//3.获取数组中的元素个数:sizeof(数组名) / sizeof(其中一个元素)
cout << "数组中元素个数为" << sizeof(arr) / sizeof(arr[0]) << endl; //输出为6
system("pause");
return 0;
}
注意:数组名是常量,不能进行赋值操作。
3.在一个数组中找到最大值
#include <iostream>
using namespace std;
int main()
{
int arr[] = {623,345,654,324,765};
int i;
int max = arr[0];
for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
if (arr[i] >= max)
{
max = arr[i];
}
}
cout << "最大值为" << max << endl;
system("pause");
return 0;
}
4.将数组中的元素逆序
#include <iostream>
using namespace std;
int main()
{
int i;
//1.创建一个数组
int arr[] = {5,4,3,2,1};
cout << "逆序前" << endl;
for (i = 0; i < sizeof(arr) / sizeof(&arr[0]); i++)
{
cout << arr[i] << endl;
}
//2.实现逆序
//2.5循环执行2.1操作,直到起始位置 >= 结束位置
//2.1记录起始下标位置
int start = 0; //起始下标
//2.2记录结束下表位置
int end = sizeof(arr) / sizeof(arr[0]) - 1; //结束下标
while (start <= end)
{
//2.3起始下标与结束下标数组元素互换
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
//2.4起始位置++,结束位置--
start++;
end--;
}
//3.打印逆序后的数组
cout << "数组元素逆序后" << endl;
for (i = 0; i < sizeof(arr) / sizeof(&arr[0]); i++)
{
cout << arr[i] << endl;
}
system("pause");
return 0;
}
5.冒泡排序
#include <iostream>
using namespace std;
int main()
{
int i;
int arr[9] = { 4,2,8,0,5,7,1,3,9 };
cout << "排序前" << endl;
for (i=0;i<9;i++)
{
cout << arr[i] << " ";
}
cout << endl;
//开始排序
//总共排序个数为元素个数-1
for (int j = 0; j < 9 - 1; j++)
{
//内层循环对比 次数 = 元素个数 - 当前轮数 -1
for (int k = 0; k < 9 - j - 1; k++)
{
//如果第一个数大于第二个数,两数字交换
if (arr[k] > arr[k + 1])
{
int temp = arr[k];
arr[k] = arr[k + 1];
arr[k + 1] = temp;
}
}
}
cout << "排序后的结果" << endl;
for (int z = 0; z < 9; z++)
{
cout << arr[z] << " ";
}
system("pause");
return 0;
}
6.二维数组的定义
#include <iostream>
using namespace std;
int main()
{
int i,j;
int arr1[2][3] = {{1,2,3},{4,5,6} };
int arr2[2][3] = {1,2,3,4,5,6};
int arr3[][3] = { 1,2,3,4,5,6 };
for (i = 0; i < 2; i++)
{
for (j = 0; j < 3; j++)
{
cout << arr1[i][j] << " ";
}
cout << endl;
}
system("pause");
return 0;
}
7.二维数组的数组名
(1)查看二维数组所占内存空间大小
(2)获取二维数组首地址
#include <iostream>
using namespace std;
int main()
{
int arr[2][3] = { {1,2,3},{4,5,6} };
cout << "二维数组所占内存空间为" << sizeof(arr) << endl; //24 = 4*6
cout << "二维数组第一行所占内存空间为" << sizeof(arr[0]) << endl; //12 = 4*3
cout << "二维数组第一个元素所占内存空间为" << sizeof(arr[0][0]) << endl; //4
cout << "二维数组的行数为" << sizeof(arr)/sizeof(arr[0]) << endl; //2
cout << "二维数组的列数为" << sizeof(arr[0]) / sizeof(arr[0][0]) << endl; //3
cout << "二维数组的首地址为" << arr << endl; //008FF780
cout << "二维数组的第一行首地址为" << arr[0] << endl; //008FF780
cout << "二维数组的第一个元素首地址为" << &arr[0][0] << endl; //008FF780
cout << "二维数组的第二行首地址为" << arr[1] << endl; //008FF78C
system("pause");
return 0;
}
8.考试成绩统计
#include <iostream>
#include <string>
using namespace std;
int main()
{
int sum = 0;
//创建一个二维数组
int arr[3][3] = { {100,100,100},{90,50,100},{60,70,80} };
string name[3] = { "张三","李四","王五" };
//统计每个人的分数总和
for (int i=0;i<3;i++)
{
for (int j=0;j<3;j++)
{
//cout << arr[i][j] << " ";
sum += arr[i][j];
}
cout << name[i] << "的总分为:" << sum << endl;
}
system("pause");
return 0;
}