第八章 指 针 | |||||
一、 选择题 1、 若有定义:int x,*pb;则在以下正确的赋值表达式是 A) pb=&x B) pb=x C) *pb=&x D) *pb=*x 2、 以下程序的输出结果是 A)因变量无定义输出不定值 B) 0 C) -1 D) 1 #include "stdio.h" main() { printf("%d\n",NULL); } 3、 以下程序的输出结果是 A) 5,2,3 B) -5,-12,-7 C) -5,-12,-7 D) 5,-2,-7 void sub(int x,int y,int *z) { *z=y-x; } main() {int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf("%d,%d,%d\n",a,b,c); } 4、以下程序的输出结果是 A) 4 B) 6 C) 8 D) 10 main() { int k=2,m=4,n=6; int *pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf("%d\n",n); } 5、 已知指针P的指向如图8.5所示,则表达式*P++的值是 A) 20 B) 30 C) 21 D) 31
a[0] a[1] a[2] a[3] a[4]
P 图8.5 6、已知指针P的指向如图8.5所示,则表达式*++P的值是 A) 20 B) 30 C) 21 D) 31 7、 已知指针P的指向如图8.5所示,则表达式++*P的值 A) 20 B) 30 C) 21 D) 31 8、 以下程序的输出结果是 A) 23 B) 24 C) 25 D) 26 void prtv(int *x) { printf ("%d\n",++*x); } main() { int a=25; prtv(&a); } 9、 以下程序的输出结果是 A) 运行出错 B)100 C)a的地址 D)b的地址 main () {int **k, *a, b=100; j=&b;k=&a; printf("%d\n",**k); } 10、 以下程序的输出结果是 A) 4,3 B)2,3 C) 3,4 D) 3,2 void fun(float *a,float *b) {float w; *a=*a+*a; w=*a; *a=*b; *b=w; } main() {float x=2.0, 7=3.0; foaat *px=&x,*p7=&y; fun(px,py); printf("%2.0f,%2.0f\n",x,y); } 11、 以下程序的输出结果是 A) 9.000000 B) 1.500000 C) 8.000000 D) 10.500000 void sub(float x,float *y,float *z) {*y=*y-1.0; *z=*z+x; } main() { float a=2.5,b=9.0,*pa,*pb; pa=&a; pb=&b; sub(b-a,pa,pa); printf(:%f\n",a); } 12、 以下四个程序中不能对两个整型值进行交换的是 A) main() {int a=10,b=20; swap(&a,&b); printf("%d%d\n",a,b); } swap(int *p,int*q); {int *t,a; t=&a; *t=*p; *p=*q; *q=*t; }
B) main() {int a=10,b=20; swap(&a,&b); printf("%d%d\n",a,b); } swap(int *p,int*q); {int t; t=*p; *p=*q; *q=t; } C) main() {int *a,*b; *a=20,*b=20; swap(a,b); printf("%d%d\n",*a,*b); } swap(int *p,int*q) {int *t; t=p; p=q; q=t; } D) main() {int a=10,b=20; int *x=&a,*y=&b; swap(x,y); printf("%d%d\n",a,b); } swap(int *p,int*q) {int t; t=*p;*p=*q; *q=t; } |
|