zoukankan      html  css  js  c++  java
  • 黑马程序员——数组

    黑马程序员——数组

     

    1、概念:定义数组时需要指定这批变量类型、数组名称,数组中包含变量的个数 。  

    例如:int a[10]    表示定义了一个整形数组,数组名为a,此数组有10个元素。

    2、一维数组定义数组基本方式为类型符  数组名[常量表达式]

    注意:定义数组时,用到的“数组名[常量表达式]”和引用数组元素时用到的“数组名[下标]”在形式上相似,但在含以上和用法上是不同的。如:

          int a[10];        /*定义素组长度为10*/

          t=a[6];          /*引用a数组中序号为6的元素,此时6不代表数组长度*/

    如果在数组名[常量]前有类型名(如int,float,char),则此时是定义数组;如果在其前面没有类型名,则是引用数组元素

    例:引用数组元素,利用循环数组元素a[0]~a[9]赋值为0~9,然后按逆序输出各元素的值

              

     1  #include "stdio.h"
     2 
     3 void main()
     4 
     5 {
     6 
     7    int i,a[10];//定义整型变量i和整形数组a,a有10个元素
     8 
     9    for(i=0;i<=9;i++)//先后对10个数组元素赋值
    10 
    11    a[i]=i;
    12 
    13    for(i=9;i>=0;i--)
    14 
    15    printf("%d",a[i]);//按逆序先后输出数组a中的10个元素
    16 
    17    printf("\n");
    18 
    19 }

    运行结果为:9876543210

    **3、数组的初始化**

          在数组赋的初值,是按循序赋给相应的数组元素的。如果只是一部分赋初值,那么剩下的元素就会自动设为0。

        数组:int a[]={1,2,3,4};  //由于有4个初值,系统自动确定数组有4个元素

          如果所定义的数组的长度和初始化的数据的个数相同,则定义数组时可以不写数组长度

    **4、二维数组**

      二维数组的一般式为:类型名  数组名[常量表达式][常量表达式];

       常量表达式可以为整形常量,也可以为整型表达式如a[2-1][2*2-1]

    **5、二维数组的初始化**

       1)分行给二维数组赋初值

    int [3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

       2)可以将所有数据写在一个大括号,按数组排列的顺序对各元素赋初值

    int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12,13};

       3)可以对部分元素赋初值(这种方法对非0元素少时方便使用)

    int a[3][4]={{1},{5},{9}};

     1 /*假如有10个数,比较10个数的大小并排序 */
     2 
     3 #include "stdio.h"
     4 
     5 void main()
     6 
     7 {
     8 
     9     int a[10];
    10 
    11     int i,j,t;
    12 
    13     printf("请输入10个数字:\n");
    14 
    15     for(i=0;i<10;i++)
    16 
    17     scanf("%d",&a[i]);//先后输入10个数字
    18 
    19     printf("\n");
    20 
    21     for(j=0;j<9;j++)//进行9次循环,实现9次比较
    22 
    23      for(i=0;i<9-j;i++)//在每一次中进行9-j次比较
    24 
    25      if(a[i]>a[i+1])//相邻两个数比较
    26 
    27      {
    28 
    29          t=a[i];a[i]=a[i+1];a[i+1]=t;
    30 
    31      }
    32 
    33      printf("排序后的数字:\n");
    34 
    35      for(i=0;i<10;i++)
    36 
    37      printf("%d\t",a[i]);
    38 
    39 }

    结果:

     1 /* 将二维数组a的行与列互换存在另一个数组b中 */
     2 
     3 /*编程思路:将a数组中的i行j列赋值给b数组的j行i列,如a[0][1]赋给b[1][0],a[0][2]b[2][0],可以利用双层循环来除了,用外循环控制行数的变化,内循环控制列的变化*/
     4 
     5 #include "stdio.h"
     6 
     7 void main()
     8 
     9 {
    10 
    11     int a[2][3]={{1,2,3},{4,5,6}};//定义数组a并赋值
    12 
    13     int b[3][2],i,j;//定义数组a
    14 
    15     printf("a的变化\n");
    16 
    17     for(i=0;i<2;i++)//用i控制行数的变化
    18 
    19     {
    20 
    21           for(j=0;j<3;j++)//用j控制列数的变化
    22 
    23           {
    24 
    25                  printf("%5d",a[i][j]);//输出a数组中的i行j列元素
    26 
    27                  b[j][i]=a[i][j];//将a数组中的i行j列赋值给b数组的j行i列
    28 
    29           }
    30 
    31           printf("\n");
    32 
    33     }
    34 
    35     printf("b的变化\n");
    36 
    37      for(i=0;i<3;i++){
    38 
    39           for(j=0;j<2;j++)
    40 
    41                  printf("%5d",b[i][j]);//输出b数组元素
    42 
    43                  b[j][i]=a[i][j];
    44 
    45           printf("\n");
    46 
    47     }
    48 
    49 }

    结果:

     

  • 相关阅读:
    HDU 4278 Faulty Odometer 8进制转10进制
    hdu 4740 The Donkey of Gui Zhou bfs
    hdu 4739 Zhuge Liang's Mines 随机化
    hdu 4738 Caocao's Bridges tarjan
    Codeforces Gym 100187M M. Heaviside Function two pointer
    codeforces Gym 100187L L. Ministry of Truth 水题
    Codeforces Gym 100187K K. Perpetuum Mobile 构造
    codeforces Gym 100187J J. Deck Shuffling dfs
    codeforces Gym 100187H H. Mysterious Photos 水题
    windows服务名称不是单个单词的如何启动?
  • 原文地址:https://www.cnblogs.com/gaozp/p/4835786.html
Copyright © 2011-2022 走看看