2 思考题
1.若要对a进行自减运算,则a应有下面说明 。
A)int p[3]; B)int k; C)char *a[3] D)int b[10];
int *a=p; int *a=&k; int *a=b+1;
2. 以下选项中,对指针变量p的不正确操作是 。
A)int a[3], *p; B)int a[5], *p; C)int a[5]; D)int a[5]
p=&a; p=a; int *p=a=100; int *p1,*p2=a;
*p1=*p2;
3.下面程序段的输出是 。
int a[ ]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k;
for (k=01 k<4; k++) q[k]=&a[k*3];
printf(“%d\n”,q[3][0]);
A)8 B)16 C)20 D)输出不合法
4.下面程序的运行结果是 。
main ( )
{ int x[5]={2,4,6,8,10}, *p, **pp ;
p=x , pp = &p ;
printf(“%d”,*(p++));
printf(“%3d”,**pp);
}
A)4 4 B)2 4 C)2 2 D)4 6
5. 若有定义int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[3]=x ; 则能够正确表示数组元素x[1][2]的表达式是 。
A)*((*p+1)[2]) B)(*p+1)+2
C)*(*(p+5)) D)*(*(p+1)+2)
6.写出下面程序的运行结果。
func(char *s,char a,int n)
{ int j;
*s=a; j=n ;
while (*s<s[j]) j-- ;
return j;
}
main ( )
{ char c[6] ;
int i ;
for (i=1; i<=5 ; i++) *(c+1)=’A’+i+1;
printf(“%d\n”,fun(c,’E’,5));
}
- -对这个完全没兴趣,只求过2级。