若二二维数组a有m列 则在a【i】【j】前的元素个数为()A)i*m i B)i*m j C)j*m i 1 D)i*m j 1
A.i*m i
B.i*m j
C.j*m i 1
D.i*m j 1
B、i*m j
A.i*m i
B.i*m j
C.j*m i 1
D.i*m j 1
B、i*m j
第2题
A.M[2,4]
B.M[3,4]
C.M[3,5]
D.M[4,4]
第3题
A.M[2][4]
B.M[3][4]
C.M[3][5]
D.M[4][4]
第4题
A.A[8,5]
B.A[3,1 0]
C.A[5,8]
D.A[0,9]
第5题
下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中,请填空。
main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;______;j++)
{
printf("%5d",a[i][j]);
______;
}
printf("\n");
}
printf("array b:\n");
for(i=0;______ ;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf(”\n”);
}
}
第6题
已知二维数组A[m][n]采用行序为主方式存储,每个元素占k个存储单元,并且第一个元素的存储地址是LOC(A[0][0]),则A[i][j]的地址是______。
第7题
第8题
稀疏矩阵的带行指针数组的二元组表示是更节省存储的存储表示。
(1)写出带行指针数组的二元组表示的类定义;
(2)编写一个算法,根据矩阵元素的行、列下标值i和j求矩阵元素;
(3)讨论这种方法和三元组表相比有什么优缺点。
第9题
(1)试给出i和j的取值范围;
(2)试给出通过i和j求解k的公式.
第10题
试题二(共 15分)
阅读以下说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明 1】
函数Counter(int n, int w[])的功能是计算整数n的二进制表示形式中1的个数,同时用数组w记录该二进制数中1所在位置的权。
例如,十进制数22的二进制表示为10110。对于该二进制数,1的个数为3,在w[0]中存入2(即 )、w[1]中存入4(即 )、w[2]中存入16(即 )。
1
2 2
2 4
2
【C函数 1】
int Counter(int n, int w[])
{ int i = 0, k = 1;
while ((1) ) {
if (n % 2) w[i++] = k;
n = n / 2; (2) ;
}
return i;
}
【说明 2】
函数 Smove(int A[], int n)的功能是将数组中所有的奇数都放到所有偶数之前。其过程为:设置数组元素下标索引i(初值为0)和j(初值为n-1),从数组的两端开始检查元素的奇偶性。若 A[i]、A[j]都是奇数,则从前往后找出一个偶数,再与 A[j]进行交换;若 A[i]、A[j]都是偶数,则从后往前找出一个奇数,再与A[i]进行交换;若 A[i]是偶数而A[j]是奇数,则交换两者,直到将所有的奇数都排在所有偶数之前为止。
【C函数 2】
void Smove(int A[], int n)
{ int temp, i = 0, j = n-1;
if (n < 2 ) return;
while (i < j ) {
if (A[i] % 2 == 1 && A[j] % 2 == 1 ) { (3) ; }
else if (A[i] % 2 == 0 && A[j] % 2 == 0 ) { (4) ; }
else {
if ((5) ) {
temp = A[i]; A[i] = A[j]; A[j] = temp;
}
i++, j--;
}
}
}
第11题
假设以二维数组g(1...m,1...n)表示一个图像区域,g[i,j]表示该区域中点(i,j)所具颜色,其值为从0到k的整数。编写算法置换点(i0,j0)所在区域的颜色。约定和(i0,j0)同色的上、下、左、右的邻接点为同色区域的点。