内容发布更新时间 : 2024/11/1 7:42:48星期一 下面是文章的全部内容请认真阅读。
习题九 指针
一.选择题
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
{ 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
} 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
} 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
二.填空题
三.编程题