一、一维数组
1、数组定义、遍历
#include <iostream> using namespace std; int main() { // 数组的三种定义 int arr1[10]; int arr2[5] = {1, 2, 3}; int arr3[] = {11, 22, 33}; arr1[0] = 10; // 遍历输出 数组所占的空间sizeof(arr1) 第一个元素所占的空间sizeof(arr1[0]) 数组元素的个数sizeof(arr1)/ sizeof(arr1[0]) for (int i = 0; i < sizeof(arr1)/ sizeof(arr1[0]); ++i) { cout << arr1[i] << " "; } cout << endl; for (int i = 0; i < sizeof(arr2)/ sizeof(arr2[0]); ++i) { cout << arr2[i] << " "; } cout << endl; for (int i = 0; i <sizeof(arr3)/ sizeof(arr3[0]); ++i) { cout << arr3[i] << " "; } cout << endl; cout<<arr3[5]<<endl; return 0; }
10 0 0 0 8 0 4199705 0 8 0 1 2 3 0 0 11 22 33 3
2、 数组长度、地址
#include <iostream> using namespace std; int main() { int arr[3]={1,2,3}; 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; cout<<"数组第三个元素的地址:"<<&arr[2]<<endl; return 0; }
整个数组占用的内存空间:12 每个元素占用的内存空间:4 数组中元素的个数:3 数组的地址:0x62fe14 数组第一个元素的地址:0x62fe14 数组第二个元素的地址:0x62fe18 数组第三个元素的地址:0x62fe1c
3、找出数组最大值
#include <iostream> using namespace std; int main() { //找出数组最大的值 int arr[] = {-9, 69, 9, 4, 32}; // 计算数组的长度 int length = sizeof(arr) / sizeof(arr[0]); int max=0; for (int i = 0; i < length; ++i){ if(arr[i]>max){ max=arr[i]; } } cout<<"数组中最大的值为:"<<max<<endl; return 0; }
数组中最大的值为:69
4、逆置
#include <iostream> using namespace std; int main() { //找出数组逆置 int arr[] = {-9, 69, 9, 4, 32, 56}; // 计算数组的长度 int length = sizeof(arr) / sizeof(arr[0]); cout << "原数组:" << endl; for (int i = 0; i < length; ++i) { cout << arr[i] << " "; } cout << endl; // 逆置 start开始坐标 end结束坐标 int start = 0; int end = length - 1; while (start < end) { int tem = arr[start]; arr[start] = arr[end]; arr[end] = tem; start++; end--; } cout << "逆置后数组:" << endl; for (int i = 0; i < length; ++i) { cout << arr[i] << " "; } cout << endl; return 0; }
原数组: -9 69 9 4 32 56 逆置后数组: 56 32 4 9 69 -9
5、冒泡排序
#include <iostream> using namespace std; int main() { //冒泡排序 升序 int arr[11] = {4, 2, 8, 0, 5, 7, 1, 3, 9, 56, 78}; // 计算数组的长度 int length = sizeof(arr) / sizeof(arr[0]); cout << "原数组:" << endl; for (int i = 0; i < length; ++i) { cout << arr[i] << " "; } cout << endl; // 排序 for (int i = 0; i < length - 1; ++i) { for (int j = i + 1; j < length; ++j) { if (arr[j] > arr[i]) { int tem = arr[i]; arr[i] = arr[j]; arr[j] = tem; } } } cout << "排序后:" << endl; for (int i = 0; i < length; ++i) { cout << arr[i] << " "; } cout << endl; return 0; }
原数组: 4 2 8 0 5 7 1 3 9 56 78 排序后: 78 56 9 8 7 5 4 3 2 1 0
二、二维数组
1、定义
#include <iostream> using namespace std; int main() { //二维数组 //定义一 int arr1[2][3]; arr1[0][0]=0; arr1[0][1]=2; arr1[0][2]=3; arr1[1][0]=4; // 定义二 int arr2[2][3] = {{1, 2, 3}, {4, 5, 6}}; // 定义三 int arr3[2][3] = {1, 2, 3, 4, 5, 6}; // 定义四 int arr4[][3] = {1, 2, 3, 4, 5, 6,7,8,9}; // 二维数组的行数与列数 cout<<"二维数组占用的内存空间:"<<sizeof(arr3)<<endl; cout<<"二维数组第一行占用的内存空间:"<<sizeof(arr3[0])<<endl; cout<<"二维数组第一个元素占用的内存空间:"<<sizeof(arr3[0][0])<<endl; cout<<"二维数组行数:"<<sizeof(arr3)/sizeof(arr3[0])<<endl; cout<<"二维数组列数:"<<sizeof(arr3[0])/sizeof(arr3[0][0])<<endl; cout<<"二维数组的地址:"<<arr3<<endl; cout<<"数组第一行的地址:"<<&arr3[0]<<endl; cout<<"数组第一个元素的地址:"<<&arr3[0][0]<<endl; cout<<"数组第二行的地址:"<<&arr3[1]<<endl; cout<<"数组第二行的地址:"<<&arr3[1][0]<<endl; return 0; }
二维数组占用的内存空间:24 二维数组第一行占用的内存空间:12 二维数组第一个元素占用的内存空间:4 二维数组行数:2 二维数组列数:3 二维数组的地址:0x62fdc0 数组第一行的地址:0x62fdc0 数组第一个元素的地址:0x62fdc0 数组第二行的地址:0x62fdcc 数组第二行的地址:0x62fdcc
2、应用
#include <iostream> using namespace std; int main() { //二维数组的应用 int arr[3][4] = {{100, 100, 100}, {90, 50, 100}, {60, 70, 80}}; // 数组的行数 //行 int rows = sizeof(arr) / sizeof(arr[0]); //列 int columns = sizeof(arr[0]) / sizeof(arr[0][0]); for (int i = 0; i < rows; ++i) { int max = 0; for (int j = 0; j < columns; ++j) { max += arr[i][j]; } cout << "计算第" << i + 1 << "行的和:" << max << endl; } return 0; }
计算第1行的和:300 计算第2行的和:240 计算第3行的和:210