有以下程序段:int *p1,*p2,a[10];p1=a;p2=&a[5];则p2-p1的值为(  )。

题目
单选题
有以下程序段:int *p1,*p2,a[10];p1=a;p2=&a[5];则p2-p1的值为(  )。
A

5

B

10

C

12

D

无法确定

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

第1题:

执行以下程序后,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

第2题:

下列程序的运行结果是【 】。 include include void main() {char * a[5

下列程序的运行结果是【 】。

include<iostream. h>

include<string. h>

void main()

{

char * a[5]={"stuent","worker","teacher","soldier"," peasant"};

char * p1, * p2;

p1=p2=a[0]

for(int i=0;i<5;i++)

{

if(strcmp(a[i],p1)>0)

p1=a[i];

if(strcmp(a[i],p2)<0)

p2=a[i];

}

cout<<p1<<","<<p2<<endl;

}


正确答案:workerpeasant
worker,peasant 解析:分析本题的for循环体内的语句可知,p1和p2将放置最大和最小的字符串,这里的比较是以第一个字符值为基准的。

第3题:

有以下程序

main()

{ int a=1,b=3,c=5;

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

*p =*p1*(*p2);

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

}

执行后的输出结果是

A)1

B)2

C)3

D)4


正确答案:C
答案 C
解析:程序使指针 p1,p2,p3 指向 a,b,c 值所存放的地址空间,然后再将指针变量 *p1 、 *p 2运算所得的值放入指针变量 *p , 即放入了 c 值的存放地址 。 则最后输出 c 的时候得到的值就是 c 地址里面的值。即 1*3=3 。

第4题:

有以下程序: main { int a=1,b=3,C=5,*P; int*p1=&a,*p2=&b,*p3=&c; *p=*p1*(*p2); } 执行后的输出结果是( )。

A.1

B.2

C.3

D.4


正确答案:C
本题中指针p1、p2、p3指向a、b、c值所存放的地址空间,然后再将指针变量*p1、*p2中值的乘积赋给指针变量*P,即赋给变量c,输出c的值3。

第5题:

下列程序的输出结果是______。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。

第6题:

下列程序的输出结果是______。 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。

第7题:

设有以下程序: include using namespace std; int main() {inta,b,k:4,m=6,*p1=&k

设有以下程序:

include<iostream>

using namespace std;

int main()

{

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

a=p1==&m;

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

cout<<a<<b<<end1;

return 0;

}

执行该程序后,a的值为【 】,b的值为【 】。


正确答案:0 7
0 7 解析:本题考核的知识点是有关指针的运算。程序中定义了两个指针变量p1和p2,并通过赋初值让它们分别指向了变量k和m。语句“a=p1==&m;”中先执行关系运算符“p1==&m”,显然是0(假),然后把0赋值给a。接着执行语句“b=(*p1)/(*p2)+7”,此处*p1的值就是k的值4,*p2的值就是m的值6,即把“4/6+7”的结果赋给b,b的值为7。

第8题:

写出下列程序的执行结果。 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

第9题:

分析下面的程序 main() { int*p1,*p2,*p; int x=4,y=6; p1=&x;p2=&y; if(x<y) {p=p1;p1=p2;p2=p; } printf("%d,%d,",*p1,*p2); printf("%d,%d\n",x,y); } 程序的输出结果为_______。

A.6,4,4,6

B.4,6,6,4

C.4,6,4,6

D.6,4,6,4


正确答案:A
解析:if语句执行前,指针变量p1指向变量x,指针变量p2指向变量y。由于xy成立,p1、p2分别指向变量y和变量x,因此,程序输出结果是6,4,4,6。

第10题:

分析下列程序:includemain(){int*p1,*p2,*p;int a=6,b=9;p1=&a;p2=&b;if(a

分析下列程序: #include<stdio.h> main() { int*p1,*p2,*p; int a=6,b=9; p1=&a;p2=&b; if(a<b){p=p1;p1=p2;p2=p;} printf("%d,%d",*p1,*p2); printf("%d,%d",a,b); } 程序的输出结果为( )。

A.9,6 6,9

B.6,9 9,6

C.6,9 6,9

D.9,6 9,6


正确答案:A
解析: 通过p1=&a,p2=&b分别将a、b的地址赋给指针p1、p2,接着执行if语句,发现ab成立,则通过交换p1、p2的值,即交换a、b所在存储单元的地址,但是a、b的值并没有发生变化。

更多相关问题