代码改变世界

c++——数组

2021-12-08 18:32  路漫漫,快快学  阅读(99)  评论(0)    收藏  举报
  1 #include <iostream>
  2 #include<string>
  3 using namespace std;
  4 int main()
  5 {
  6     /*数组:用于存储相同数据元素   定义方式
  7     * 数据类型  数组名[数据长度];       数据长度是指有多少数据
  8       数据类型  数组名[数据长度] = {值1,值2, ...};
  9       数据类型  数组名[ ] = {值1,值2, ...};
 10     
 11     * 特点:
 12     1、放在一块连续的内存空间中,
 13     2、元素都是相同的数据类型
 14     */
 15     int arr[5];   //未赋值时默认为0;
 16     int i = 0;
 17     arr[0] = 10;   // 第一个数据
 18     arr[1] = 10;
 19     arr[2] = 10;
 20     arr[3] = 10;
 21     arr[4] = 10;
 22     int arr2[5] = { 10,20,30,40,50 };    //初始值没有赋值的默认为0;
 23     int arr3[ ] = {10,20,30,40,50};
 24     for (i; i < 5; i++)
 25     {
 26         arr[i] = (i + 1) * 100;     //对数组 arr[]  每个元素赋值
 27         std::cout << i << "元素为:\t" << arr[i] << "\n";
 28     }
 29     /*
 30     1、可通过 数组名 统计整个数组所占空间长度
 31     2、可通过 数组名 查看数组首地址
 32 
 33     数组名是一个常量
 34     */
 35     std::cout << "数组arr所占空间长度为" << sizeof(arr) << endl;
 36     std::cout << "数组arr首地址为" << arr << endl;
 37     std::cout << "数组中第一个元素的地址" << &arr[0]<<endl;//  & (取地址符)  
 38     std::cout << "数组中第二个元素的地址" << &arr[1]<<endl;
 39     //案例,五只小猪称体重,选出最重的,并且打印输出
 40     
 41     
 42     
 43     //调出最大的数
 44     int arr5[5] = { 300,350,200,400,250 };   //五只小猪的重量
 45     int max = 0;                             //最终的质量
 46     for (i = 0; i < 5; i++)
 47     {
 48        // std::cout << arr5[i] << endl;
 49         if (arr5[i] > max)                  //用每一只小猪与最大质量依次比较
 50         {
 51             max = arr5[i];                  //将质量大的赋值给最终质量
 52         }
 53     }
 54    // std::cout << "五只小猪最重的重量为" << arr5{i} << endl;
 55    //这里表示输出该元素的地址
 56     std::cout << "五只小猪最重的重量为" << max << endl;//输出max最大质量
 57 
 58    
 59     
 60     //元素逆置
 61     int arr6[5] = { 1,3,2,5,4 };
 62     std::cout << "逆置之前的数组" << endl;
 63     for (i = 0; i < 5; i++)
 64     {
 65         std::cout <<  arr6[i] << endl;  //打印逆置之前的数组
 66     }
 67     std::cout << sizeof(arr6)<<endl;     //计算数组 arr6 所占内存总长度
 68     std::cout << sizeof(arr6[0])<<endl;  //计算数组 arr6 单个元素所占内存长度
 69     int end = sizeof(arr6) / sizeof(arr6[0]) - 1;//计算数组 arr6 所拥有元素的个数
 70     i = 0;   //初始化 i 的值
 71     while (i < end)    //条件为真则一直运行
 72     {
 73       /* int a = 0;
 74         int b = 0;
 75         a = arr6[i];
 76         b = arr6[end];
 77         arr6[i] = b;
 78         arr6[end] = a;  //循环语句是将 元素逆置
 79         */
 80        
 81         // 另一种简洁一些的
 82         int a = 0;
 83         int b = 0;
 84         a = arr6[i];
 85         arr6[i] = arr6[end];
 86         arr6[end] = a;    //循环语句是将 元素逆置
 87 
 88         i++;
 89         end--;
 90     }
 91     std::cout << "逆置之后的数组" << endl;
 92     for (i = 0; i < 5; i++)
 93     {
 94         std::cout << arr6[i] << endl;   //打印输出逆置之后的数组
 95     }
 96 
 97 
 98 
 99 
100     //排序算法
101     //顺序(由小到大)  想要逆序只需将判断处的符号改变为小于
102     int acc[] = { 4,5,2,9,6,8,0,7,1,3,9 };
103     int f = 0;
104     f = sizeof(acc) / sizeof(acc[0]) - 1;    //计算数组元素个数
105     for (int a = 0; a < f; a++)            //保证每一次比较都是从第一个数开始
106     {
107         for (int b = 0; b < (f-a); b++)     //每次循环可以选出一个最大的数放在最后,每循环一次就少比较一次
108         {
109             if (acc[b] > acc[(b + 1)])    //判断相邻两位数大小
110             {
111                 int c = 0;
112                 c = acc[b];
113                 acc[b] = acc[(b + 1)];
114                 acc[(b + 1)] = c;        //如果前面大于后面则调换位置,否则下一循环
115                 
116             }
117         }
118     }
119     std::cout << "由小到大为:" << endl;
120     for (int i = 0; i < f; i++)
121     {
122         std::cout << acc[i] << endl;
123     }
124 
125 
126 
127     system("pause");
128 }