目录
数组定义
数组特点
一维数组定义方式
一维数组数组名用途
一维数组案例:五只小猪称体重
一维数组案例:数组元素逆置
一维数组案例:冒泡排序
就是一个集合,里面存放相同类型的数据元素
1.数组中每个数据元素都是相同的数据类型
2.数组是由连续的内存位置组成的
1.数据类型 数组名[ 数组长度 ];
2.数据类型 数组名[ 数组长度 ]={ 值1,值2...};
3.数据类型 数组名[ ]={ 值1,值2...};
int main() { //定义方式1:数据类型 数组名[ 元素个数 ]; int score[10]; //10个数,下标从0~9 //利用下标赋值 score[0] = 100; score[1] = 50; //利用下标访问数据元素 cout << score[0] << endl; //定义方式2:数据类型 数组名[ 数组长度 ]={ 值1,值2...}; //如果在初始化数据时,没有全部填写完,会用0来填补剩余的数据 int arr[5] = { 10,20,30,40,50 }; //利用下标访问数据元素 //cout << arr[3] << endl; //利用循环,输出数组中的元素 for (int i = 0; i < 5; i++) { cout << arr[i] << endl; } //定义方式3:数据类型 数组名[ ]={ 值1,值2...}; int arr1[ ] = { 10,20,40,50,1,3 }; //访问数据元素 for (int i = 0; i < 6; i++) { cout << arr1[i] << endl; } system("pause"); return 0; }
1.统计整个数组在内存中的长度 sizeof(arr)、sizeof(arr[2])
2.获取数组在内存中的首地址 cout<<arr<<endl
int main() { //1.统计整个数组在内存中的长度 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; cout << "整个数组占用内存空间为:" << sizeof(arr)<<endl; cout << "每个元素占用内存空间为:" << sizeof(arr[2]) << endl; cout << "数组中元素的个数:" << sizeof(arr) / sizeof(arr[2]) << endl; //2.获取数组在内存中的首地址 cout << "数组首地址为:" << arr << endl;//十六进制 cout << "数组首地址为:" << int(arr) << endl;//十进制 cout << "数组中第一个元素地址为:" << (int)&arr[0] << endl; cout << "数组中第二个元素地址为:" << (int)&arr[1] << endl; //arr = 100; //数组名是常量,不可以进行赋值操作 system("pause"); return 0; }
一个数组中记录了五只小猪的体重,打印出最重的那只
int main() { //1.统计整个数组在内存中的长度 int arr[5] = { 300,350,200,400,250 }; int max = 0; for (int i = 0; i < 5; i++) { if (arr[i] > max) { max = arr[i]; } } cout << "最重的小猪为:" << max << endl; system("pause"); return 0; }
一个5个元素数组,并且将元素逆置
int main() { //创建数组 int arr[5] = { 300,350,200,400,250 }; cout << "数组逆置前" << endl; for (int i = 0; i < 5; i++) { cout << arr[i] << endl; } //实现逆置 //1.记录起始下标位置 //2.记录结束下标位置 //3.起始下标与结束下标的元素互换 //4.起始位置++,结束位置-- //5.循环执行1,知道起始位置>=结束位置 int start = 0; int end = sizeof(arr) / sizeof(arr[start])-1; //数组中元素的个数-1=结束下标。 注:减1 while (start < end) { //元素互换 int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; //下标更新 start++; end--; } //打印逆置后数组 cout << "数组逆置后" << endl; for (int i = 0; i < 5; i++) { cout << arr[i] << endl; } system("pause"); return 0; }
比较相邻的元素,如果第一个比第二个大,就交换他们两个。每一对相邻元素做相同的工作,执行完毕,找到第一个最大值。重复以上的步骤,每次比较次数-1,直到不需要比较。
int main() { //利用冒泡排序实现升序排列 int arr[9] = { 4,2,8,0,5,7,1,3,9}; cout << "排序前的数组为:" <<endl; for (int i = 0; i < 9; i++) { cout << arr[i] << " "; } cout << endl; //排序总轮数=元素个数-1 for (int i = 0; i < 9; i++) { //每轮对比的次数=元素个数-排序轮数-1 for (int j = 0; j < 9 - i - 1; j++) { if (arr[j] > arr[j + 1]) { //第一个数字大于第二个,交换元素 int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } //排序后结果 cout << "排序前的数组为:" << endl; for (int i = 0; i < 9; i++) { cout << arr[i] << " "; } cout << endl; system("pause"); return 0; }