资源描述:
《练习10指针(答案)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1若有定义:intx,*pb;则以下正确的赋值表达式是A)pb=&xB)pb=xC)*pb=&xD)*pb=*x2以下程序的输出结果是A)因变量定义输出不定值B)0C)-1D)1#include“stdio.h”main(){printf(“%d”,NULL);}3以下程序的输出结果是A)5,2,3B)-5,-12,-7C)-5,-12,-17D)5,-2,-7voidsub(intx,inty,int*z){*z=y-x;}main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(“%d,%d,%d”,a,b,c);}4
2、以下程序的输出结果是A)4B)6C)8D)10main(){intk=2,m=4,n=6;int*pk=&k,*pm=&m,*p;*(p=&n)=*pk*(*pm);printf(“%d”,n);}5已知指针p的指针如图所示,则执行语句*p++;后,*p的值是A)20B)30a[0]a[1]a[2]a[3]a[4]C)21D)311020304050↑p6已知指针p的指向如图,则表达式*++p的值是A)20B)30C)21D)317已知指针p的指向如图,则表达式++*p的值是A)20B)30C)21D)318以下程序的输出结果是A)23B)24C)25D)26voidprtv(int*x
3、){printf(“%d”,++*x);}main(){inta=25;prtv(&a);}9以下程序的输出结果是A)运行出错B)100C)a的地址D)b的地址main(){int**k,*a,b=100;a=&b;k=&a;printf(“%d”,**k);}10以下程序的输出结果是A)4,3B)2,3C)3,4D)3,2voidfun(float*a,float*b){floatw;*a=*a+*a;w=*a;*a=*b;*b=w;}main(){floatx=2.0,y=3.0;float*px=&x,*py=&y;fun(px,py);printf(“%2.0f%2.0f
4、”,x,y);}11以下程序的输出结果是A)9.000000B)1.500000C)8.000000D)10.500000voidsub(floatx,float*y,float*z){*y=*y-1.0;*z=*z+x;}main(){floata=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;sub(b-a,pa,pa);printf(“%f”,a);}12以下程序段的输出结果是__110___int*var,ab;ab=100;var=&ab;ab=*var+10;printf(“%d”,*var);13以下程序的输出结果是_71__intast(intx,int
5、y,int*cp,int*dp){*cp=x+y;*dp=x-y;}main(){inta,b,c,d;a=4;b=3;ast(a,b,&c,&d);printf(“%d%d”,c,d);}14若有定义:charch;(1)使指针p可以指向变量ch的定义语句是__char*p=&ch;___。(2)使指针p指向变量ch的赋值语句是__p=&ch;___。(3)通过指针p给变量ch读入字符的scanf函数调用语句是__scanf(“%c”,p);___。(4)通过指针p给变量ch赋字符的语句是__ch=*p;___。(5)通过指针p输出ch中字符的语句是__printf(“%c”,*p);
6、或putchar(*p);___。15若有如图8.5所示五个连续的int类型的存储单元并赋值如图,且p和s的基类型皆为int,p已指向存储单元a[1]。(1)通过指针p,给s赋值,使其指向最后一个存储单元a[4]的语句是__s=p+3;___。(2)用以移动指针s,使之指向中间的存储单元a[2]的表达式是__s=s-2___。(3)已知k=2,指针s已指向存储单元a[2],表达式*(s+k)的值是__50___。(4)指针s指向存储单元a[2],不移动指针s,通过s引用存储单元a[3]的表达式是__*(s+1)___。(5)指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值
7、是__2___。(6)若p指向存储单元a[0],则以下语句的输出结果是___1020304050__。for(i=0;i<5;i++)printf(“%d”,*(p+i));a[0]a[1]a[2]a[3]a[4]printf(“”);1020304050↑p