<address id="9d9v3"></address>
        <form id="9d9v3"></form><listing id="9d9v3"><nobr id="9d9v3"><progress id="9d9v3"></progress></nobr></listing>
          <noframes id="9d9v3"><form id="9d9v3"></form>

          <address id="9d9v3"></address>

          <span id="9d9v3"><nobr id="9d9v3"><meter id="9d9v3"></meter></nobr></span>
          <address id="9d9v3"></address>
          <form id="9d9v3"><nobr id="9d9v3"></nobr></form>

          直播帶貨服務

          二維數組的定義和引用二維數組的元素

          一維數組是若干個同一類型有序變量的集合,由一個數組名來描述。但在實際問題中有很多量(如二維表格等)數據是二維的或多維的,因此C語言允許構造多維數組多維數組元素有多個下標,以標識它在數組中的位置,所以也稱為多下標變量。與一維數組不同,雖然一維數組能表示所有的數據,但不能表示出數據之間的分組關系,而二維數組可以表示數據間的二維表的關系。

          二維數組的定義和引用二維數組的元素

          1.二維數組的定義

          二位數組通常用于存放矩陣形式的數據,如二維表格等數據。

          定義二維數組的形式如下:

          類型說明符數組名[常量表達式1][常量表達式2]

          其中常量表達式1表示第一位下標的長度,常量表達式2標識第二維下表的長度。

          例如:

          int a[3][4]; /*3×4的矩陣,共12個元素*/

          float f[5][10];

          以上和一維數組相似,定義了一組變量,只不過這些變量有行和列的排列。

          如int a[3][4]的排列如下:

          a[0][0]    a[O][1]  a[0][2]  a[0][3]

          a[1][0]    a[l][1]  a[1][2]  a[1][3]

          a[2][0]    a[2][1]  a[2][2]  a[2][3]

          以上是便于理解和引用的邏輯排列結構,在計算機的內存中,其物理存儲結構會因為不同系統而不同。

          C語言中,二維數組是按行排列的。即在內存中按順序存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中的元素也是依次存放。如第一行最后一個元素a[0][N-1]緊鄰第二行第一個元素a[1][0]。

          2.引用二維數組的元素

          二維數組的元素表示的形式為:

          數組名[下標][下標]

          【例5-6】學生成績處理

          假設第一小組5個學生3門課的成績,如下表5-1所示,求全組平均成績以及各門課的平均成績。

          表5-1 學生成績表

          學生 英語 數學 C語言

          Stu1 80 77 76

          Stu2 61 35 67

          Stu3 56 75 70

          Stu4 89 90 85

          Stu5 85 67 73

          分析:設定數組a,5行3列,用來存放學生的成績,設定一維數組v,長度為3,用來存放每門課的總成績。

          程序的算法流程圖如圖5-6所示。

           二維數組的定義和引用二維數組的元素

          圖5-6 例5-6算法流程圖

          根據流程圖寫出的程序如下:

          #include <stdio.h>

          int main()

               int i,j,s=0,average,v[3],a[5][3]; 

               printf("input score:\n"); 

               for(i=0;i<3;i++)

               { 

               for(j=0;j<5;j++)

               { 

               scanf("%d",&a[j][i]); /*輸入學生的成績*/

               s=s+a[j][i];/*累加求出每一列上的所有元素之和*/

               } 

               v[i]=s/5; /*每門課的平均成績*/

               s=0; 

               } 

               average=(v[0]+v[1]+v[2])/3; /*數組v中所有元素的平均值賦值給average*/

               printf("English languag:%d\nMath:%d\nc languag:%d\n",v[0],v[1],v[2]); 

               printf("total:%d\n", average ); 

               return 0; 

          }

          程序運行結果:

          input score:

          56 78 92 23 89↙

          59 78 98 68 45↙

          75 80 78 90 67↙

          English languag:67

          Math:69

          c languag:78

          total:71

          3.二維數組的初始化

          二維數組的初始化形式可以有:

          int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12);    /*完全初始化*/

          int a[][4]={1,2,3,4,5,6,7,8,9,10,1 1,12);    /*省略行的完全初始化*/

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

          /*分行完全初始化,可讀性較好*/

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

          /*部分初始化,可以只對部分元素賦初值,未賦初值的元素自動取0值,數組a中各元素的值為:*/

          1 0 0 0

          2 0 0 0

          3 0 0 0

          【例5-7】打印楊輝三角

          存儲并打印楊輝三角的前10行。楊輝三角的具體形式為:

                                        1

                                     1     1

                                  1     2     1

                               1    3     3      1

                            1     4     6     4     1

          分析: 楊輝三角的特點為:

          (1)第0列好對角線上的元素都為1;

          (2)除第0列和對角線上的元素以外,其他元素的值均為前一行上的同列元素和前一列元素之和。

          #include <stdio.h>

          int main()

          int s[10][10];

          int i,j,k;

          for(i=0;i<10;i++)/*為數組中的對角線和第0列元素賦值*/

          s[i][i]=1;

          s[i][0]=1;

          }

          for(i=2;i<10;i++)/*為其它元素賦值*/

          for(j=1;j<i;j++)

          s[i][j]=s[i-1][j-1]+s[i-1][j];

          for(i=0;i<10;i++)

          {

                for(k=i;k<10;k++)/*控制輸出每行的空格*/

          printf("");

          for(j=0;j<=i;j++)

          printf("%4d",s[i][j]);

          printf("\n");

          }

          return 0; 

          }

          程序運行結果:

               1

               1   1

               1   2   1

               1   3   3   1

               1   4   6   4   1

               1   5  10  10   5   1

               1   6  15  20  15   6   1

               1   7  21  35  35  21   7   1

               1   8  28  56  70  56   28  8   1

               1   9  36  84 126 126 84  36  9   1

          【例5-8】找出二維數組元素最值,有一個3 4的矩陣,求出每行最小值及每列的最小值。

          分析:設定數組a,3行4列,由于共有3行,共有3個行最小值,可以設定一個長度為3的一維數組來保存每一行的最小值。同理,可以設定一個長度為4的一維數組來保存每一列的最小值。

          #include <stdio.h>

          int main()

               int a[3][4],b[3],c[4],i,j;

               for(i=0;i<3;i++)

               for(j=0;j<4;j++)

                  scanf("%d",&a[i][j]);/*向數組a中輸入數據*/

               for(i=0;i<3;i++)   /*判斷行,求出每行最小值,存在數組b中*/

                {

                  b[i]=a[i][0];

                  for(j=1;j<4;j++)

                  if(a[i][j]<b[i]) 

                   b[i]=a[i][j];

               }

              for(j=0;j<4;j++) /*判斷列,求出每列最小值,存在數組c中*/

              {

               c[j]=a[0][j];

               for(i=1;i<3;i++)

               if(a[i][j]<c[j]) 

               c[j]=a[i][j];

              }

              for(i=0;i<3;i++)

                  printf("%5d",b[i]);

              printf("\n");

              for(j=0;j<4;j++)

                 printf("%5d",c[j]);

              printf("\n");

              return 0; 

          }

          程序運行結果:

          56  67  98  23↙

          67  89  90  12↙

          78  90  23  67↙

          56  67  23  12


          © Copyright 六六互聯.Some Rights Reserved.www.ic.vip
          真正国产乱子伦高清对白