直播带货服务

二维数组的应用及应用案例

二维数组在概念上是二维的,但在内存中是连续存放的;换句话说,二维数组的各个元素是相互挨着的,彼此之间没有缝隙。那么,如何在线性内存中存放二维数组呢?有两种方式:

  • 按行排列, 即放完一行之后再放入第二行;

  • 按列排列, 即放完一列之后再放入第二列。

二维数组的应用及应用案例

案例描述】

按下图将数字矩阵化输出。要求:输入数字,输出该数字的矩阵表示。输入的数字不是[0,9]上的整数时,需重新输入。

二维数组的应用及应用案例

案例分析】

             从上面的数字化矩阵可以看出:组成数字的各行只有五种状态:

001:即左侧二个方格为空,右侧一个方格非空。标记为“0”状态。

010:只有中间方格非空,标记为“1”状态。

100:只有左侧方格非空,标记为“2”状态。

101:只有中间方格为空,标记为“3”状态。

111:三个方格均非空,标记为“4”状态。

         用一个数组保存各状态的显示字符

char a[5][7]={"    ●","  ●  ","●    ","●  ●","●●●"};

其中a[k]对应状态k的字符串。k=0,1,2,3,4。

注意:字符“●”显示时会占2个字符位,故在数组a中,一个空位需要输出2个空格。

十个数字各行显示的字符串用状态记录,得到以下数组:

char b[10][5]={{4,3,3,3,4},{1,1,1,1,1},{4,0,4,2,4}, {4,0,4,0,4},{3,3,4,0,0},{4,2,4,0,4},{4,2,4,3,4}, {4,0,0,0,0},{4,3,4,3,4},{4,3,4,0,4}};

       那么,数字k第i行应显示的字符串就是a[b[k][i]]。

二维数组的应用及应用案例

【参考代码】

#include<stdio.h>

main()

{ char i,k,a[5][7]={"    ●","  ●  ","●    ","●  ●","●●●"};

  char b[10][5]={{4,3,3,3,4},{1,1,1,1,1},{4,0,4,2,4},

  {4,0,4,0,4},{3,3,4,0,0},{4,2,4,0,4},{4,2,4,3,4},

  {4,0,0,0,0},{4,3,4,3,4},{4,3,4,0,4}};

  while(1)

  {  setbuf(stdin,NULL);

scanf("%d",&k);

     if(k>=0&&k<=9)break;

  }

  for(i=0;i<5;i++)printf("%s\n",a[b[k][i]]);

}


© Copyright 六六互联.Some Rights Reserved.www.ic.vip