工学

单选题若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是()。A i=*pB *p=*&jC i=&jD i=**p

题目
单选题
若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是()。
A

i=*p

B

*p=*&j

C

i=&j

D

i=**p

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

若有说明.inti,j=2,*p=,则能完成i=j赋值功能的语句是()。

A、i=*p;

B、*p=*

C、i=

D、i=**p;


参考答案:B

第2题:

有以下程序,其中函数f的功能是将多个字符串按字典顺序排序#includestring.hvoidf(char*p[],intn){char*t;inti,j;for(i=0;in-1;i++)for(j=i+1;jn;j++)if(strcmp(p[i],p[j])0){t=p[i];p[i]=p[j];p[j]=t;}}main(){char*p[5]={“abc”,“aabdfg”,“abbd”,“dcdbe”,“cd”}。

:A.2

B.3

C.6

D.4


正确答案:D

第3题:

若有说明:inti,j=7,*p=,则与i=j;等价的语句是()

A、i=*p;

B、*p=j;

C、i=

D、i=**p;


参考答案:B

第4题:

若有说明int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是 ( )

A.i=*p;

B.*p=*&j

C.i=&j

D.i=* *p;


正确答案:B

第5题:

有如下程序 #include(iostream.h> voidmain( ) {charch[2][5]={"6937","8254"),*p[2]; inti,j,s=0; for(i=0;i<2;i++)p[i]=ch[i]; for(i=0;i<2;i++) for(j=0;p[i][j])\0;j+=2) s=10*s+p[i][j]一0; cout<<S;} 该程序的输出结果是( )。

A.69825

B.63825

C.6385

D.693825


正确答案:C
C。【解析】该题主要要搞清楚以下几点:①定义了一个指针数组char*p[2]后,程序中第一个循环“for(i=0;i(2;i++)p[i]=ch[i]”的作用是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[1]元素指向了二维数组ch的第二行字符串,这样,就使指针数组P和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]。②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串“6937”,第二行ch[1]中的内容为字符串“8254”。③程序中第二个循环中的循环体“s=s*10+p[i][j]-0”的功能是这样的,每执行一次,将s中的值乘以10(即将s中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前p[i][j]中的字符量转换为相应的数字,然后把这个数字加到s的个位上。④注意到内层循环的循环条件p[i][3]>\0是指p[i][j]中的字符只要不是字符串结束标志\0就继续循环,语句j+=2;是使下标j每次增加2,即一个隔一个地从p[i]所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p[0]所指向的字符串“6937”中一个隔一个地取出字符,分别是“6”和“3”,然后从p[1]所指向的字符串“8254”中一个隔一个地取出字符,分别是“8”和“5”,同时经过转换和相加运算后,结果s中的值应该是6385。

第6题:

设有定义inti=123;longj=456;下面赋值不正确的语句是()

A.j=i;

B.j=(long)i;

C.i=(int)j;

D.i=j;


参考答案:D

第7题:

以下非法的赋值语句是( )。

A.n=(i=2,++i);

B.j++;

C.++(i+1);

D.x=j>0;


正确答案:C
解析:常量和表达式是不能被赋值的。选项A为复合表达式,首先计算(i=2,++i)的值,然后赋值给n,故选项A正确;选项B为简单自加运算,因为运算改变了变量j的内容,所以也算一种赋值语句,故选项B正确;选项c在表达式++(i+1);中,(i+1)不是变量,该表达式的值为常量,而在++运算中,其运算对象必须为变量,故选项C错误:选项D将逻辑表达式j>0的值赋给x,是合法的赋值语句。所以应当选择C。

第8题:

若有定义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]元素。

第9题:

若有说明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个元素。

第10题:

若有说明int i,j=2, *P=&i;,则能完成i=j赋值功能的语句是_______。

A.i=*p;

B.*P2=*&j;

C.i=&j;

D.i=**p;


正确答案:B
解析:指针是一种用来存放变量地址的特殊变量。本题中指针变量p用于存放整型变量i的地址,改变*p的值即为改变i的值。又因为“&”和“*”两个运算符的优先级别相同,按自右而左的方向结合,所以*&j先进行&j运算,得j的地址,再进行*运算,取所得地址里面的值,故*&j与j等价。

更多相关问题