设二维数组A[m][n](即m行n列)按行存储在数组B[1..m×n]中,则二维数组元素A[i][j]在一维数组B中的
设二维数组A[m][n](即m行n列)按行存储在数组B[1..m×n]中,则二维数组元素A[i][j]在一维数组B中的下标为()。
A.(i—1)×n+j
B.(i一1)×n+j-1
C.i×(j一1)
D.j×m+i—l
设二维数组A[m][n](即m行n列)按行存储在数组B[1..m×n]中,则二维数组元素A[i][j]在一维数组B中的下标为()。
A.(i—1)×n+j
B.(i一1)×n+j-1
C.i×(j一1)
D.j×m+i—l
第1题
请编写函数fun(),该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
例如,若二维数组中的数据为:
W WWW
S S S S
H H H H
则字符串中的内容应是WSHWSHWSHWSH。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include<stdio.h>
define M 3
define N 4
void fun(char (*s)[N],char *b)
{
}
main()
{
char a[100],w[M][N]={{ 'W', 'W', 'W', 'W'},
{'S', 'S', 'S', 'S'},{'H', 'H', 'H', 'H'}};
int i,j;
printf("The matrix:\n");
for(i=0;i<M;i++)
{ for(j=0;j<N;j++)
printf("%3c",w[i][j]);
printf("\n");
}
fun(w,a);
printf("The A string:In");
puts(a);
printf("\n\n");
}
第2题
编写函数arraycopy(int(*a)[N],int*b,int m)实现把二维数组的M行N列数据复制到一维数组b中。
第3题
二维数组M的成员是6个字符(每个字符占一个存储单元)组成的串,行下标i的范围从0到8,列下标i的范围从0到9,则存放M至少需要多少个字节?M的第8列和第5行共占多少个字节?若M按行优先方式存储,元素M[8][6]的起始地址与当M按列优先方式存储时哪个元素的起始地址一致?
第4题
A.M[2][4]
B.M[3][4]
C.M[3][5]
D.M[4][4]
第5题
二维数组M的成员是6个字符(每个字符占一个存储单元)组成的串,行下标i的范围从0到8,列下标j的范围从1到10,则存放M至少需要_________个字节;M的第8列和第5行共占______个字节;若M按行优先方式存储,元素M[8][5]的起始地址与当M按列优先方式存储时的_______元素的起始地址一致。
第6题
以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值,请填空。
#defineN 3
#defineM 4
void LineMax(int x[N][M])
{
int i,j,p;
for(i=0;i<N;i++)
{
p=0;
for(j=1;j<M;j++)
if(x[i][p]<x[i][j])______;
printf("The max value in line%d is%d\n",i,x[i][p]);
}
}
main()
{
int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
______;
}
第7题
(1)试给出i和j的取值范围;
(2)试给出通过i和j求解k的公式.
第8题
第9题
#define N 3
#define M 3
select(int a[N][M],int *n)
(int i,j,row=1,colum=1;
for(i=0;i<N:i++)
for(j=0;j<M; j++)
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n=______;
return______:
}
main()
{
int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n):
printf("max=%d,line=%d\n",max,n);
}
第10题