黑马程序员——数组

黑马程序员——数组

 

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 }

结果:

 

原文地址:https://www.cnblogs.com/gaozp/p/4835786.html