习题九 指针.

习题九 指针

一.选择题

1. 设int *p,a;以下正确的语句是( ) A)p=103; B)a=p; C)p=2*p; D)p=&a;

2. 若给出以下定义: char m[10]; char *p=m;

则以下表达式不正确的是 ( )

A)p=m+5 B)m=p+m; C)m[3]=p[4]; D)*p=m[0];

3. 对于基类型相同的指针变量,不能进行( )运算 A)+ B)- C)= D)==

4. 下面程序的执行结果是( ) #include void main()

{ int a[]={1,2,3,4,5,6};

int *p; p=a ;

*(p+3)+=2;

printf(“%d,%d\\n”,*p,*(p+3)); }

A)1,3 B)1,6 C)3,6 D)1,4

5. 下面程序的输了结果是( ) void main()

{ int a[]={1,2,3,4,5,6,7,8,9,0},*p; p=a;

printf(“%d,%d\\n”*p+9);

}

A)0 B)1 C)10 D)9

6. 若有以下定义和语句:

int a[]={1,2,3,4,5,6,7,8,9,0},*p=a; 则值为3的表达式是( )

A)p+=2,*(p++) B)p+=2,*++p C)p+=3,*p++ D)p+=2,++*p

7. 设有以下定义和语句:

int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*pp)[3]=a,*p=a[0];

下列能正确表示数组元素a[1][2]的表达式是( ) A)*((*pp+1)[2]) B)*(*(p+5)) C)(*pp+1)+2 D)*(*(a+1)+2)

8. 以下四个程序中不能对两个整型变量的值进行交换的是( )

A) #include B) #include void main() void main() {int a=10,b=20; {int a=10,b=20; swap(&a,&b); a=&m;b=&n; printf (“%d,%d\\n”,a,b); swap(a,b);

} printf (“%d,%d\\n”,a,b); void swap(p,q) }

int *p,*q; void swap(p,q) { int *t; int *p,*q; t=(int*)malloc(sizeof(int)); {int t;

*t=*p;*p=*q;*q=*t; t=*p;*p=*q;*q=t; } }

C) #include D) #include void main() void main() {int a=10,b=20; {int a=10,b=20; swap(&a,&b); a=&m;b=&n; printf (“%d,%d\\n”,a,b); swap(m,n);

} printf (“%d,%d\\n”,a,b); void swap(p,q) }

int *p,*q; void swap(p,q) { int t; int *p,*q; *t=*p;*p=*q;*q=*t; {int t;

} t=*p;*p=*q;*q=t; }

9. 设有以下定义:

char *p={“abcd”,”ABCD”}; 则以下说法正确的是( )

A) p数组元素的值分别是”abcd”和”ABCD”

B) p是指针变量,它指向含有两个数组元素的是字符一维数组 C) p数组的两个元素中分别存放了字符’a’和字符’A’的地址

D) p数组的两个元素中分别存放的是含有4个字符的一维字符数组的起始地址

10.设有以下定义:

Char s[20]=”hello”,*p=s;

则不能代表字符e的表达式的是( )

A)p+1 B)P[1] C)s[1] D)p+=1,*p

二.填空题

三.编程题

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4