定义数组AA(N,M),则二维和一维下标的换算关系是AA(I,J)=AA()
第1题:
该程序运行的结果是( )。
#include
#include
#define M 100
void fun(int m, int *a, int *n)
{ int i,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i==0)
a[j++]=i;
*n=j;}
main()
{ int aa[M],n,k;
clrscr();
fun(10,aa,&n);
for(k=0;k
if((k+1) ==0)printf("\n");
else printf("M",aa[k]);
printf("\n");}
第2题:
●若二维数组arr[1..M,1..N】的首地址为base,数组元素按列存储且每个元素占用K个存储单元,则元素arr[i,j]在该数组空间的地址为 (21)。
(21)
A. base+((i-1)*M+j-1)*K
B.base+((i-1)*N+j-1)*K
C.base+((j-1)*M+i-1)*K
D.base+((j-1)*N+i-1)*K
第3题:
请补充函数fun(),该函数的功能是:把数组aa中元素下标为偶数的元素按从小到大重新保存在原数组中,其它元素位置不变。
例如,输入“33,67,42,58,25,76,85,16,41, 56”,则输出“25,67,33,58,41,76,42,16,85,56”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
include<s tdio. h>
define N 10
void fun(int aa[])
{
int i, j, t;
for (i=0; i<N;i=i+2)
{
for(【 】; j<N; j=j+2)
if (【 】)
{
t=aa [j];
aa [j] =aa [i];
aa [i] =t;
}
}
}
main ()
{
int i;
int aa[N]={33, 67,42, 58, 25, 76, 85, 16,
41, 56};
clrscr ();
printf("\n*** original list ***\n");
for(i=0; i<N; i++)
printf ("%4d", aa [i] );
fun (aa);
printf("\n*** new list ***\n");
for(i=0; i<N; i++)
printf ("%4d", aa [i] );
}
第4题:
有以下程序: Void f(int a[],iht i,int j) { int t; if(i<j) { t=a[i]; a[i]=a[j]; a[j]=t; f(a,i+1,i-1); } } main() { int i,aa[5]={1,2,3,4,5}; f(aa,0,4); for(i=0;i<5;i++) printf("%d" ,aa[i]);printf("\n"); } 执行后输出结果是
A.5,4,3,2,1,
B.5,2,3,4,1,
C.1,2,3,4,5,
D.1,5,4,3,2,
第5题:
设数组 A[ 1..m,1...n.] 的每个元素占用 1 个存储单元,对于数组元素 A[i,j] (1≤i≤m≤1≤j≤n),在按行存储方式下,其相对于数组空间首地址的偏移量为( );在按列存储方式下,其相对于数组空间首地址的偏移量为( )。
A. i*(n-1)+j B. (i-1)*n+j-1 C. i*(m-1)+j D. (i-1)*m+j-1A. j*(n-1)+i B. (j-1)*n+i-1 C. j*(m-1)+iD. (j-1)*m+i-1
第6题:
第7题:
第8题:
第9题:
设二维数组A[1„m,1„n]按行存储在数组B中,则二维数组元素A[i,j]在一维数组B中的下标为()。
第10题:
若a为二维数组,它有m列,则a[i][j]在数组中的位置是()
第11题:
i*M+J
(i-1)*M+J
(i-1)*M+I
i*M+j-I
第12题:
n*(i-1)+j
n*(i-1)+j-1
i*(j-1)
j*m+i-1
第13题:
请补充函数fun(),该函数的功能是把数组aa中的偶数元素按原来的先后顺序放在原数组后面。
例如,输入“33,67,42,58,25,76,85,16,41,56”,输出结果“33,67,25,85,41,42,58,76,16,56”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
define N 10
void fun (int aa [] )
{
int i, j=0,k=0;
int bb [N];
for (i=0;i<N; i++)
{
if (【 】)
bb [k++] =aa [i];
else
aa [ j ++ ] =aa [i];
}
for(i=0;【 】;i++,j++)
aa[j] =bb [i];
}
main ( )
{
int i;
int aa[N]={33, 67,42,58,25, 76, 85, 16,
41,56};
clrscr ();
printf("\n*** original list ***\n");
for (i=0;i<N; i++)
printf ("%4d", aa [i] );
fun (aa);
printf("\n*** new list ***\n ");
for (i=0; i<N; i++)
printf ("%4d", aa [i] );
}
第14题:
● 若二维数组arr[1..M,1..N]的首地址为base,数组元素按列存储且每个元素占用K个存储单元,则元素arr[i,j]在该数组空间的地址为 (21) 。
A.base+((i-1)*M+j-i)*K
B.base+((i-1)*N+j-1)*K
C.base+((j-1)*M+i-1)*K
D.base+((j-1)*N+i-1)*K
第15题:
二维数组A[m,n]按行序为主序存放在内存,每个数组元素占1个存储单元,则元素aij的地址计算公式是( )。
A.LOC(aij)=LOC(a00)+[(i-1)*m+(j-1)]
B.LOC(aij)=LOC(a00)+[(j-1)*m+(i-1)]
C.LOC(aij)=LOC(a00)+[(i-1)*n+(j-1)]
D.LOC(aij)=LOC(a00)+[(j-1)*n+(i-1)]
第16题:
设有一个m行n列的矩阵存储在二维数组A[1..M,1..n]中,将数组元素按行排列,对于A[i,j](1≤i≤m,l≤j≤n),排列在其前面的元素个数为( )。
A.i*(n-1)+jB.(i-1)*n+J-1C.i*(m-l)+jD.(i-1)*m+J-1
第17题:
第18题:
第19题:
第20题:
第21题:
设二维数组A[1..m,1..n](即m行n列)按行存储在数组B[1..m*n]中,则二维数组元素A[i,j]在一维数组B中的下标为()。
第22题:
(i-1)*n+j
(i-1)*n+j-1
i*(j-1)
j*m+i-1
第23题:
(i-1)*n+j
(i-1)*n+j-1
i*(j-1)
j*m+i-1