05 数组;数组名的妙用
0、特点:
1) 数组是由连续内存位置组成的。
2) 数组内元素数据类型一致。
1、一维数组
1.1 定义方式:
数据类型 数组名[数组长度];
数据类型 数组名[数组长度]={值1,值2,...}; \\ 若{} 内小于数组长度,默认用0补齐
数组类型 数组名[ ]={值1,值2,...};
1.2 一维数组名的用途
1) 可以统计数组在内存中的长度和占用空间。
2)可以获取数组在内存中的首地址。
int main() { //数组名用途 //1、可以获取整个数组占用内存空间大小 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; cout << "整个数组所占内存空间为: " << sizeof(arr) << endl; cout << "每个元素所占内存空间为: " << sizeof(arr[0]) << endl; cout << "数组的元素个数为: " << sizeof(arr) / sizeof(arr[0]) << endl; //2、直接打印数组名,可以查看数组所占内存的首地址 cout << "数组首地址为: " << (int)arr << endl; \\将arr强制转换成整型输出 cout << "数组中第一个元素地址为: " << (int)&arr[0] << endl; cout << "数组中第二个元素地址为: " << (int)&arr[1] << endl; //arr = 100; 错误,数组名是常量,因此不可以赋值 system("pause"); return 0; }
✔练习案例1:五只小猪称体重
在一个数组中记录了五只小猪的体重,如:int arr[5] = {300,350,200,400,250};找出并打印最轻的小猪体重。
 
1 //用冒泡法,输入5只猪重量再排序再输出最轻猪体重 2 #include <iostream> 3 using namespace std; 4 5 int main() 6 { 7 int arr[5],i,j=0; 8 cout<<"please input pigs weight:"<<endl; 9 for(i=0;i<5;i++) 10 { 11 cin>>arr[j]; 12 j++; 13 } 14 for(i=0;i<5-1;i++) 15 { 16 for(j=0;j<5-1;j++) 17 { 18 if(arr[j]>arr[j+1]) 19 { 20 int temp=arr[j]; 21 arr[j]=arr[j+1]; 22 arr[j+1]=temp; 23 } 24 } 25 } 26 /*for(i=0;i<5;i++) 27 { 28 cout<<arr[i]<<" "; 29 }*/ 30 cout<<"the thinnes pig is "<<arr[0]<<"kg"<<endl; 31 system("pause"); 32 return 0; 33 } 34 35 36 37
✔练习案例2:数组元素逆置
请声明一个5个元素的数组,并且将元素逆置.(如原数组元素为:1,3,2,5,4;逆置后输出结果为:4,5,2,3,1);
 
1 //用冒泡法,输入5只猪重量再排序再输出最轻猪体重 2 #include <iostream> 3 using namespace std; 4 5 int main() 6 { 7 int arr[5],temp,i,j=0; 8 cout<<"please input 5 nums:"<<endl; 9 for(i=0;i<5;i++) 10 { 11 cin>>arr[j]; 12 j++; 13 } 14 cout<<"your nums:"<<endl; 15 for(i=0;i<5;i++) 16 { 17 cout<<arr[i]<<" "; 18 } 19 20 for(i=0;i<5/2;i++)//重复n/2次即可完成数组逆置 21 { 22 temp=arr[i]; 23 arr[i]=arr[4-i]; 24 arr[4-i]=temp; 25 } 26 cout<<"\nthe reverse order:"<<endl; 27 for(i=0;i<5;i++) 28 { 29 cout<<arr[i]<<" "; 30 } 31 system("pause"); 32 return 0; 33 } 34 35 36 37
1.3 冒泡排序
介绍:最常用排序算法,对数组元素进行排序
step1:比较相邻的元素。如果第一个比第二个大,就交换他们两个。
step2:对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。
step3:重复以上的步骤,每次比较次数-1,直到不需要比较
//示例: 将数组 { 4,2,8,0,5,7,1,3,9 } 进行升序排序 int main()
{ int arr[9] = { 4,2,8,0,5,7,1,3,9 }; for (int i = 0; i < 9 - 1; i++) { for (int j = 0; j < 9 - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; //round1 把最大的挪到最后面 } //round2 把次最大的挪到倒数第二 } //round3,4...以此类推,完成排序
} for (int i = 0; i < 9; i++) { cout << arr[i] << endl; } system("pause"); return 0; }
2、二维数组
2.1 定义方式
1) 数据类型 数组名[行数] [列数];
2) 数据类型 数组名[行数] [列数]={ {数据1,数据2} , {数据3,数据4} }; //推荐此方式
3) 数据类型 数组名[行数] [列数]={ 数据1,数据2,数据3,数据4 };
4) 数据类型 数组名[ ] [列数]={ 数据1,数据2,数据3,数据4 };
2.2、二维数组名称
1) 可以统计数组在内存中的长度和占用空间。
2)可以获取数组在内存中的首地址。
int main() { //二维数组数组名 int arr[2][3] = { {1,2,3}, {4,5,6} }; 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; //地址 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; }
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号