有定义:int a[10], n, *p1=a,*p2=a[9];,则正确的赋值语句为()。A、n=p2-p1;B、n=p2*p1;C、n=p2+p1;D、n=p1/p2;

题目

有定义:int a[10], n, *p1=a,*p2=&a[9];,则正确的赋值语句为()。

  • A、n=p2-p1;
  • B、n=p2*p1;
  • C、n=p2+p1;
  • D、n=p1/p2;
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

若有说明:int*p1,*p2,n=8,m;下列均是正确赋值语句的选项是( )。

A.p1:&n;p2=&pl;

B.p1=n;

C.p1=&n;*p2=p1;

D.p1=&n;p2=p1;


正确答案:D
解析:本题考查指针变量的赋值。选项A)中,p1、p2本身都是地址变量,不能再将 p1取地址赋给p2;选项B)中,不能将整型数据直接赋值给指针型数据;选项C)中,*p2代表了一个整型变量,而*p2=p1这个语句试图把一个地址值放入一个整型变量中是错误的;选项D)中指针间的赋值是正确的。

第2题:

下列程序的输出结果是______。 main() {int a=2,b=4,c=6; int*p1=&a,*p2=&b,*p; *(p=&

下列程序的输出结果是______。

main()

{ int a=2,b=4,c=6;

int*p1=&a,*p2=&b,*p;

*(p=&C) =*p1*(*p2);

printf("%d\n",c);

}


正确答案:8
8 解析:本程序定义了3个指针变量p1、p2、p,并且将a、b的地址分别赋给p1、p2,则*p1=a=2,*p2=b=4,所以表达式*p1*(*p2)的值是8。在赋值语句的左边是 *(p=&c),即使指针p指向了变量c,因而*(p)代表了c的存储单元,赋值语句“*(p=&c)=*p1*(*p2);”是把整数 8赋给了变量c。

第3题:

写出下列程序的执行结果。 swap(p1,p2) int*p1,*p2; {int p; p=*p1;*p1=*p2;*p2=p; } main() {int a,b,*p1,*p2; scanf("%d%d",&a,&B); p1=&a;p2=&b; if(a<B)swap(p1,p2); printf("\na=%d,b=%d\n",a,B); } 若a=7,b=8,则程序的运行结果为( )。


正确答案:a=8b=7
a=8,b=7

第4题:

下列程序的输出结果是______。main(){ static int num[5]=}1,3,5,7,9};int*p1,**p2;p1=num;p2=&am

下列程序的输出结果是______。 main() { static int num[5]=}1,3,5,7,9}; int*p1,**p2; p1=num; p2=&p1; printf("%d,",*(++p1)); printf("%d\n",**p2); }

A.3,1

B.3,3

C.1,1

D.1,3


正确答案:B
解析:指针p1指向数组num的首地址(同第一个元素的地址),二级指针变量p2指向p1。第一个输出语句中p1先移动一个单位,指向第二个数组元素,再输出元素的值(3),p1的移动不改变p2的指向。因此,第二个输出语句输出的也是3。

第5题:

栈的入栈序列是1,2,„,n,输出序列为p1,p2,„pn,若p1=n,则pi为()。

A.i

B.n-i

C.n-i+1

D.不确定


参考答案:C

第6题:

执行以下程序后,a,b的值分别为

main()

{ int a,b,k=4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

b=(*p1)/(*p2)+7;

printf("a=%d\n",A.;

printf("b=%d\n",B.;

}

A.-1,5

B.1,6

C.0,7

D.4,10


正确答案:C

第7题:

若有说明:int*p1,*p2,m=3,n;则p1=&m;p2=p1;是正确的赋值语。()

此题为判断题(对,错)。


参考答案:正确

第8题:

若有说明:int*p1,*p2,n=8,m;下列均是正确赋值语句的选项是( )。

A.p1=&n;p2=&p1;

B.p1=n;

C.p1=&n;*p2=p1;

D.p1=&n;p2=p1;


正确答案:D
解析:本题考查指针变量的赋值。选项A)中,p1、p2本身都是地址变量,不能再将p1取地址赋给 p2;选项B)中,不能将整型数据直接赋值给指针型数据;选项C)中,*p2代表了一个整型变量,而*p2=p1这个语句试图把一个地址值放入一个整型变量中是错误的;选项D)中指针间的赋值是正确的。

第9题:

有以下程序: float f1(float n) { return n*n; } float f2(float n) { return 2*n; } main() {float(*p1)(float),(*p2)(float),(*t)(float),y1,y2; p1:f1; p2=f2; y1=p2(p1(2.0)); t=p1; p1=p2; p2=t; y2=p2(p1(2.0)); printf("%3.0f,%3.0f\n",y1,y2); } 程序运行后的输出结果是 ______。

A.8, 16

B.8, 8

C.16, 16

D.4, 8


正确答案:A
解析:题中“(*p1)(float)”定义了一个指向函数的指针变量p1,此函数的返回值是float类型。在main函数中,使得p1指向了函数f1,P2指向了函数缀。语句“y1=p2(p1(2.0));”先调用了p1函数,将其返回值4.000000传递给了f2的形参n,并使其函数返回值8.000000赋值给y1。然后在main函数中交换了p1、p2指针变量的指向,使p1指向了函数侵,p2指向了函数f1,并先调用函数f2,得到返回值4.000000,使其传递给f1函数的形参n,并带回返回值16.000000赋值给y2。在输出y1、y2时,各浮点数占3列,小数位数为0,即输出了  8,16。

第10题:

有以下程序 float fl(float n) { return n*n; } float f2(float n) { return 2*n;} main() {float(*p1)(float),(*p2)(float),(*t)(float),y1,Y2; p1=f1; p2=f2; y1=p2(p1(2.O)); t=p1; p1=p2; p2=t; y2=p2(pl(2.0)); printf("%3.0f,%3,Of\n",y1,y2); } 程序运行后的输出结果是

A.8,16

B.8,8

C.16,16

D.4,8


正确答案:A
解析:题目一开始定义了两个函数,f1()实现的是返回参数的平方;f2()实现的是返回参数的2倍。接下来在主函数中定义了三个函数指针p1,p2,t。语句p1=f1;p2=f2;让指针p1指向函数n(),指针p2指向函数9()。然后调用p2(p1(2.0)),即让2先平方再乘以2,结果为8并赋给y1。然后语句序列t=p1;p1=p2;p2=t;交换了p1和p2的值,即p1指向f2(),p2指向f1()。再调用p2(p1(2.0)),让2先乘以2再平方,结果为16赋给y2.最后输出y1,y2的值为8和16,应该选择A。

更多相关问题