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   
5 pig

  ✔练习案例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   
reverse order

 

  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;
}

 

 

 

  

 

  

 

posted @ 2021-06-22 17:16  蓄芳  阅读(396)  评论(0)    收藏  举报