假设用下面语句申请了一块动态内存,并用指针变量指p向了它,用这块内存保存m*n个整型元素,即作为一个二维动态数组来使用,那么下面哪种通过p访问这个二维动态数组第i行第j列元素的方法是正确的()。 p = (int *) malloc(m*n*sizeof(int)); 或者 p = (int *) calloc(m*n, sizeof(int));
A.p[i*n+j]
B.*(p+i*n+j)
C.p[j*n+i]
D.p[i][j]
E.*p[i*n+j]
F.p+i*n
G.p+i*n+j
第1题:
阅读下列函数说明和C函数,回答问题1~2,将解答填入栏内。
[说明]
若矩阵Am×n中存在某个元素aij满足:aij…是第i行中最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。下面程序的功能是输出A中所有鞍点,其中参数A使用二维数组表示,m和n分别是矩阵A的行列数。
[程序]
void saddle (int A[ ] [ ], int m, int n)
{ int i,j,min;
for (i=0;i <m;i + + )
{ min: (1);
for (j=1; j<n; j+ +)
if(A[i][j]<min) (2);
for (j=0; j<n; j+ +)
if ((3))
{ p=0;
while (p<m&&(4))p+ +;
if (p > = m)printf ("%d,%d,%d\n",i,j,min);
}
}
}
[问题1] 将函数代码中的(1)~(4)处补充完整
[问题2]在上述代码的执行过程中,若A为矩阵,则调用saddle(A,3,3)后输出是(5)。
第2题:
若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是
A.p=2*(int*)malloc(sizeof(int));
B.p=(int*)mall0c(2*sizeof(int));
C.p=(int*)malloc(2*2);
D.p=(int*)calloc(2,sizeof(int));
第3题:
若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元 int *p p=______malloc(sizeof(int)); 则应填入______。
A.int
B.int*
C.(*int)
D.(int*)
第4题:
若有定义:iht*p[3];,则以下叙述中正确的是
A.定义了一个基类型为int的指针变量p,该变量具有三个指针
B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C.定义了一个名为*p的整型数组,该数组含有三个int类型元素
D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
第5题:
若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句是( )
A.p=2 *(int *)malloc(sizeof(int));
B.p=(int*)calloc(2*sizeof(int));
C.p=(int*)malloc(2* sizeof(int));
D.p=2 *(int*)calloc(sizeof(int));
第6题:
若有定义int*p[3];,则以下叙述中正确的是______。
A.定义了一个基类型为int的指针变量p,该变量有三个指针
B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C.定义了一个名为*p的整型数组,该数组含有三个int类型元素
D.定义了一个可指向二维数组的指针变量p,所指一维数组应具有三个int类型元素
第7题:
若要用下面的程序片段使指针变量p指向—个存储整型变量的动态存储单元 int *p; p=______malloc(sizeof(int)); 则应填入______。
A.int
B.int*
C.(*int)
D.(int*)
第8题:
若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确的语句是( )。
A.p=2*(int*)malloc (sixeof(int))
B.p=(int*)calloc (2*sixeof(int))
C.p=(int*)malloc (2*sizeof(int))
D.p=2*(int*)calloc (sizeof(int))
第9题:
第10题:
指向数组元素为整型的一维数组的指针变量的定义是()。
第11题:
若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()。
第12题:
10
20
30
40
第13题:
请编一个函数void fun( int tt[M][N], int pp[N], tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include <conio.h>
include <stdio.h>
define M 3
define N 4
void fun(int tt[M][N],int pp[N])
{
}
main()
{
int t[M] [N]={{68,32,54,12},{14,24,88,
58},{42, 22, 44, 56}};
int p[N],i,j,k;
clrscr();
printf("The riginal data is:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nThe result is:\n");
for(k=0;k<N;k++)
printf("%4d",p[k]);
printf("\n");
}
第14题:
若有定义"int*p[3];",则以下叙述中下确的是
A.定义了一个基类型为int的指针变量p,该变量具有三个指针
B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类犁为int的指针
C.定义了一个名为*p的整型数组,该数组含有三个int类型元素
D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
第15题:
若要用下面的程序片段指针变量p指向一个存储整型变量的动态存储单元int *p;p=______ malloc (sizeof (int));则应填入 ______。
A.int
B.int*
C.(*int)
D.(int*)
第16题:
在下面语句中,其含义为“p为指向含n个元素的一维数组的指针变量”的定义语句是 ( )
A.int p [n]
B.int * p( );
C.int * p(n);
D.int( * p)[n]
第17题:
以下fun函数的功能是在N行M列的整型二维数组中,选出一个最大值作为函数值返回,请填空。(设M,N已定义)
int fun(int a[N][M])
{int i,j,row=0,col=0;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>a[row][col])(row=i;col=j;)
return(_____);
}
第18题:
请完成函数fun(),它的功能是:用选择法对数组中n个元素按从大到小的顺序进行排序。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在下划线上填入所需的内容。
include<stdio.h>
define N 20
void fun(int a[],int n)
{
int i,j,t,p;
for(j=0;j<n-1; 1 )
{ p=j;
for(i=j;i<n;i++)
if(a[i] 2 a[p]
p=i;
t=a[p];
a[p]=a[j];
a[ 3 ]=t;
}
}
main()
{int a[N]={11,32,-5,2,14},i,m=5;
for(i=0;i<m;i++)
printf("%d\n",a[i});
fun(a,m);
for(i=0;i<m;i++)
printf("%d"a[i]);
}
第19题:
动态分配一整型数据长度的空间,使指针p指向该存储空间,则下列空缺处应填入的正确语句是( )。 int*p; p=______malloc (sizeof(int));
A.int
B.int*
C.(*int)
D.(int*)
第20题:
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
[说明]
函数int psort(int a[],int n)实现将含n个整数的数组a[]的不同元素按从小到大顺序存于数组a[]中。实现方法是从未确定的元素列中找到最小元素并将a[]的第i最小元素交换至a[i]位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。
[C函数]
int psort(int a[],int n)
{int i,J,k,P;
for(i=0,k=0;i<(1);i++){
for(j=i+1, (2) ;j<n; j++)
if(a[p]>a[j])
p=j;
if(p!=i){
t=a[p];
a[p]=a[i];
a[i]=t;
}
if( (3) ) k++;
else if( (4) <a[i])
(5)=a[i];
}
return k;
}
int a[]={5,7,5,6,4,3,4,6,7};
main()
{int k,n;
for(k=0;k<(Sizeof a)/Sizeof(int);k++)
printf("%5d",a[k]);
printf ("\n\n");
n=psort(a,(sizeof(a))/sizeof(int));
for(k=0;k<n;k++)
printf("%5d",a[k]);
printf("\n\n");
}
第21题:
假定有语句为"int *p=calloc(10+20,sizeof(int)),则p所指向的动态数组中所包含的元素个数为()。
A10
B20
C30
D40
第22题:
有说明语句int *p=new int[10];访问动态数组元素的正确语句是()
第23题:
p=2*(int*)malloc(sizeof(int));
p=(int*)malloc(2*sizeof(int));
p=(int*)malloc(2*2);
p=(int*)calloc(2,sizeof(int))。
第24题:
int a=p;
int a=*p;
delete int[]p
delete p int[10]