c语言复习题大家帮帮忙

23.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行赋值语句的是 。
A、c=*p1+*p2 B、p2=c
C、p1=p2 D、c=*p1*(*p2)
24.下列语句定义p为指向float类型变量d的指针,其中哪一个是正确的 。
A、float d,*p=d; B、float d,*p=&d;
C、float *p=&d,d; D、float d,p=d;
25.若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是 。
A、i= *P; B、*P=*&J; C、i=&j; D、i=* *p;
26.对语句“int a[10],*p=a;”,下列表述中哪一个是正确的 。
A、*p被赋初值为a数组的首地址 B、*p被赋初值为数组元素a[0]的地址
C、p被赋初值为数组元素a[1]的地址 D、p被赋初值为数组元素a[0]的地址
26.若有以下定义,则对a数组元素的正确引用是 。
int a[5],*p=a;
A、*a+1 B、p+5 C、&a+1 D、&a[0]
28.数组定义为“int a[4][5];”,引用“a+3”表示 。
A、a数组第4列的首地址 B、a数组第1行第4列元素的值
C、a数组第4行的首地址 D、a数组第1列第4行元素的值
29.若有语句int *point,a=4;和point=&a;则下面均代表地址的一组是 。
A、a,point,*&A B、&*a,*point,&a
C、&a,*&point,*point D、&a,&*point,point
30.下列语句定义x为指向int类型变量a的指针,其中哪一个是正确的 。
A、int a,*x=a; B、int a,*x=&a; C、int *x=&a,a; D、int a,x=a;
大哥大姐们帮帮忙

23.B(因为字符型变量可以看成是单字节整型数字,因此A,C,D正确;指针类型和字符类型不匹配,因此B不能正确赋值)

24.B(赋值语句要看类型是否匹配,因为p是指针(int *型),d是变量(int 型),则用*和&操作后:&d是指针,d是变量,d要赋值需要在p之前赋值,因此B选项正确)

25.B(A相当于i = i;C中i是变量,&j是地址,类型不匹配;D中i是变量,**p本身就不正确;B中,*p指的是i,*&j指的是对j取址再取值,还是j本身,相当于i=j)

26.D(*p是对p指针所指变量取值,与地址不对应,因此A,B不正确;p是初值为a[0]的地址,因此D正确)

27.D(数组名本身也是指针,指针本身包含整型部分,因此可以和整型数字相加减,因此A,C有其它操作不正确,B中由于数组只有5个值,+5就超过了上限,因此不正确)

28.B(现在的C语言数组中都是先行后列,并且,a+0表示a[0][0],a+1表示a[0][1],以此类推,a+3表示a[0][3],即第一行第4列)

29.D(*是取值,&是取址,因此*&就是本身,以这个规律判断,只有D正确)

30.B(这道和24题原理一样!)
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-12
23 B
24 B
25 B
26 A
26 C
28 B
29 D
30 B
相似回答