计算机二级

若有说明int m[3][4]={3,9,7,8.5},(*q)[4];和赋值语句q=m;,则对数组元素m[i][j](其中O<=i<3,0<=j<4)值的正确引用为( )。A)(q i)[j]B)*q[il][j]C)*(*q[i] j)D)*(*(q i) j)

题目

若有说明int m[3][4]={3,9,7,8.5},(*q)[4];和赋值语句q=m;,则对数组元素m[i][j](其中O<=i<3,0<=j<4)值的正确引用为( )。

A)(q i)[j]

B)*q[il][j]

C)*(*q[i] j)

D)*(*(q i) j)

参考答案和解析
正确答案:D
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

若有定义int a[2][3];,则对a数组的第i行第j列(假调i,j已正确说明并赋值)元素值的正确引用为

A.*(*(a+i)+j)

B.(a+i)[j]

C.*(a+i+j)

D.*(a+i)+j


正确答案:A
解析:本题考查了二维数组元素的引用方法。选项A中a+i指向了数组a的第i+1行,*(a+i)则是第i+1行第0列的地址值,*(a+i)+j指向了数组a第i+1行,j+1列,*(*(a+i)+j)取到的是数组a的a[i][j]元素。

第2题:

若有定义语句:int a[4][10],* P,* q[4];且0<=i<4,则错误的赋值是( )。

A.P=a

B.q[i]=a[i]

C.p=a[i]

D.p=&a[2][1]


正确答案:A
二维数组名是指向指针的指针,所以a和q都为指向指针的指针,而P为指向int类型的指针。所以选项A)是将一个指向int类型的指针用来指向一个指针的指针,显然是错误的。其他几个选项都是正确的赋值,其中选项D)是用&返回整数的地址,然后赋值给P。

第3题:

●试题一

阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。

【函数1.1说明】

函数strcpy(char*to,char*from)将字符串from复制到字符串to。

【函数1.1】

void strcpy(char*to,char*from)

{while( ( 1 ) );}

【函数1.2说明】

函数merge(int a[ ],int n,int b[ ],int m,int *c)是将两个从小到大有序数组a和b复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。

【函数1.2】

void merge(int a[ ],int n,int b[ ],int m,int *c)

{ int i,j;

for(i=j=0;i<n && j<m;)

*c++=a[i]<b[j]? a[i++]:b[j++];

while( (2) )*c++=a[i++];

while( (3) )*c++=b[j++];

}

【函数1.3说明】

递归函数sum(int a[ ],int n)的返回值是数组a[ ]的前n个元素之和。

【函数1.3】

int sum(int a[ ],int n)

{ if(n>0)return (4) ;

else (5) ;

}


正确答案:

●试题一

【答案】(1)*to++=*from++ 或 (*to++=*from++)!=′\0

(2)i<n i!=n(3)j<m 或 j!=m

(4)an-1+sum(an-1);或 a0+sum(a+1n-1)(5)return 0

【解析】(1)完成字符的复制,并使指针指向下一元素。(2)当出现某一数组所有元素均已合并完成,则将另一数组其他元素直接进行复制。b串已复制完。(3)判断a串是否已复制完。(4)递归函数sun()完成数组n个元素的累加,当n>0时,使用规模为n-1的函数进行递归。(5)n<=0时,返回0即可。

 

第4题:

若有说明int m[3][4]={3,9,7,8.5},(*q)[4];和赋值语句q=m;,则对数组元素m[i][j](其中O<=i<3,0<=j<4)值的正确引用为( )。

A)(q i)[j]

B)*q[il][j]

C)*(*q[i] j)

D)*(*(q i) j)


正确答案:D
(q i)指向第i行首地址, (*(q i) j)代表第i行第i个元素。

第5题:

若有定义语句“intm[]={5,4,3,2,1),i=4;”则下列对m数组元素的引用中错误的是( )。A.m[--i]SXB

若有定义语句“intm[]={5,4,3,2,1),i=4;”则下列对m数组元素的引用中错误的是( )。

A.m[--i]

B.m[2*2]

C.m[m[o]]

D.m[m[i]]


正确答案:C
C。【解析】数组的下标是从零开始的。一维数组的一般定义方式为数型说明符数组名[常置表达式],其中“[]”中的内容可以是整型数量,也可以是整型表达式。选项C中,m[0]=5,m[m[o]]=m[5],数组下标越界。

第6题:

若有定义语句:"int a[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是( )。A.D=aB.q[i]=a[i]C.p=a[l]D.

若有定义语句:"int a[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是( )。

A.D=a

B.q[i]=a[i]

C.p=a[l]

D.P=&a[2][1]


正确答案:A
数组名是一个存放一个数组首地址的值,是一个地址常量。而p=a不是合法的,因为p和a的基本类型不同。

第7题:

阅读下列函数说明和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)。


正确答案:[问题1](1)A[i][0] (2)min=A[i][j] (3)A[i] [j]==min (4)A[p][j]=min或min=A[P] [j] [问题2](5)1211
[问题1](1)A[i][0] (2)min=A[i][j] (3)A[i] [j]==min (4)A[p][j]=min或min=A[P] [j] [问题2](5)1,2,11 解析:本算法的基本思想是:对矩阵A逐行处理,求出每一行的最小值,对于这一行上等于最小值的那些元素,逐个判断该元素是否是所在列的最大元,如果是则打印输出。
(1)由上下文可知min代表第i行的最小值,此处应对其赋初值:本行第一个元素;
(2)遍历第i行后面的元素,若有元素比miu小,则应更新min的值;
(3)此处应挑出本行中取最小值的元素进行判断;
(4)此循环用于判断min是否是本列的最大元。
(5)所给矩阵中只有一个鞍点11,若行列号从。开始计,它位于第l行第2列。

第8题:

若有定义语句: int a[4][10],*p,*q[4]; 且 0 ≤ i<4 ,则错误的赋值是

A)p=a

B)q[i]=a[i]

C)p=a[i]

D)p=&a[2][1]


正确答案:A

第9题:

阅读以下说明和C++程序,将应填(n)处的字句写在对应栏内。

[说明]

设计一程序,输入10个整数到一个数组中,调整这10个数在数组中的位置,使得其中最小的一个数成为数组的首元素,最大的一个数成为数组的末元素。

[C++程序]

include <iostream.h>

define SIZE 10

void main ( )

{

int data [SIZE];

int m;

cout<<"请输入"<<SIZE<<"个整数:";

for ( m=0;m<SIZE; m++ ) (1);

int j=0,k=0;

for ( int i=1;i<SIZE; i++ )

if ((2)) j=i;

else if ( data[i]<data[k] ) (3);

if (j>0 ) {

int d=data[0];

(4);

data[k]=d;

}

if ( k<SIZE-1 )

{

int d=data [SIZE- 1 ];

data[SIZE- 1 ]=data[j];

(5);

}

cout<<end1<<" 排序后: ";

for ( m=0;m<SIZE; m++ ) cout<<data[m]<<" " ;

}


正确答案:(1)n>>data [m] (2) data[i]>data[j] (3) k=i (4) data[0]=data[k] (5) data[j]=d
(1)n>>data [m] (2) data[i]>data[j] (3) k=i (4) data[0]=data[k] (5) data[j]=d

第10题:

有如下程序:includeclass Base{protected:int i;public:int j;};class Derived:pub

有如下程序: #include<iostream.h> class Base { protected:int i; public:int j; }; class Derived:public Base { int m; public:int n; }; int main() { Derived d; d.i=0; //[1]d.j=0; //[2]d.m=0; //[3]d.n=0; //[4]return 0; } 其中主函数中有两个赋值语句有错,这两个错误的赋值语句是( )。

A.[1]和[2]

B.[1)和[3]

C.[2]和[3]

D.[2]和[4]


正确答案:B

更多相关问题