阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。 【说明】 在一个矩阵中,如果其零元素的个数远远多于其非零元素的个数时,称这样的矩阵为稀疏矩阵。稀疏矩阵通常采用三元组数组表示。每个非零元素用一个三元组来表示,即非零元素的行号、列号和

admin2010-01-15  44

问题 阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。
    【说明】
   在一个矩阵中,如果其零元素的个数远远多于其非零元素的个数时,称这样的矩阵为稀疏矩阵。稀疏矩阵通常采用三元组数组表示。每个非零元素用一个三元组来表示,即非零元素的行号、列号和它的值。然后按某种顺序将全部非零元素的三元组存于一个数组中。例如,对于以下二维数组:
   int x[3][4]={{1,0,0,0},{0,5,0,0),{0,0,7,2}};
   可用以下数组a来表示:
   int a[][3]={{3,4,4},{0,0,1},{1,1,5),{2,2,7},{2,3,2}};
   其中三元数组a的第1行元素的值分别存储稀疏矩阵×的行数、列数和非零元素的个数。
   下面的流程图描述了稀疏矩阵转换的过程。
   【流程图】

选项

答案(1)a[0][2]=W; (2)x[i][j]≠0; (3)a[k][2]=x[i][j]; (4)k++; (5)i++;

解析 本题考查程序流程图及数组的操作。
   根据题目的意思,本题的流程图是用来描述稀疏矩阵转换过程的。而三元数组d的第1行元素的值分别用来存储稀疏矩阵x的行数、列数和非零元素个数,在第(1)空位置处,前面已经分别存储了稀疏矩阵x的行数和列数,只差非零元素的个数没有存储进数组a。因此,此空应该填a[0][2]=W。
   在第(2)空的前面有两条判断语句,我们可以看出它们是为了保证取到的元素是稀疏矩阵中的元素,再往下我们应该判断此元素是否是0,因此,此空应该填x[j]≠0。
   根据程序流程图,如果第(2)空中的条件为真,即取到的元素不为0,那么我们应该将该元素存放到三元数组a中,第(3)空的前面两条语句已经分别用于存储了稀疏矩阵非0元素的行号和列号,那么接下来应该是保存其值。因此,此空的答案是 a[k][2]=x[j]。
   由题目中对三元数组a的描述可以知道,三元数组a的每一行只存储3个元素。再看流程图,第(4)空的前面三条语句都表示向三元数组a中存储一个元素。因此,如果再要往数组中添加元素,就需要存放到另外一行。因此,第(4)空应该是将数组的行号加1,即 k++。
   结合流程图中三个判断语句的结构和作用来分析,第(5)空应该是i++,它的作用是保证能取到稀疏矩阵中每一行的元素。
转载请注明原文地址:https://kaotiyun.com/show/2BjZ777K
0

最新回复(0)