《C++指针》习题参考答案 下载本文

内容发布更新时间 : 2024/5/22 14:17:55星期一 下面是文章的全部内容请认真阅读。

1

《C++指针》习题

学号姓名 一、 选择题

1、有定义如下:int a[5], *p; 则下列描述错误的是B

A.表达式p=p+1是合法的 C.表达式p-a是合法的

B.表达式a=a+1是合法的 D.表达式a+2是合法的

2、函数定义为Fun(int &i),变量定义n=100,则下面调用该函数正确的 是C

A.Fun(20) B.Fun(20+n) C.Fun(n) D.Fun(&n) 3、若有说明int I,j=2,*p=&i;则能完成i=j赋值功能的语句是B

A.i=*p; B.*p=*&j; C.i=&j; D.i=**p;

4、设已有定义char *st = \下列程序中正确的是A A.char a[11],*p;strcpy(p=a+1,&st[4]); B.char a[11];strcpy(++a,st); C. char a[11];strcpy(a,st);

D. char a[],*p;strcpy(p=a[1],st+2);

5、设有数组int array[3][4],下列引用数组元素的方法中错误的是D A.array[i][j] B.*(*(array+i)+j) C. *(array[i]+j) D. *(array+i*4+j)

6、有定义int s[4][5],(*ps)[5];ps=s;则对数组s中元素引用的正确 的是C

A.ps+1 B.*(ps+3) C. ps[0][2] D. *(ps+1)+3 7、设有说明int b[4][4],以下不能等价表示元素b[3][3]的是:B

A.*&b[3][3] B.(*(*(b+3))+3) C.*(b[3]+3) D.*(*(b+3)+3) 8、若有说明\则表达 式*s[1]> *s[3]比较的是B

A.\和\.'5'和'3' C.'l'和'9' D.\和\9、设语句\*s[]={\执行语句\则输出结果是A A.T,Father,F B.Teacher,F,Father C.Teacher,Father,Father D.语法错无输出 10、设有以下说明语句:

char sl[20]=\ 以下语句中不符合C++语法规则的语句是D

A.strcpy(s2,ptr); B.ptr=s2; C.ptr=ptr+4; D.*ptr=*s2; 11、设s和t分别为指向两个长度相同的字符数组的指针,则循环语句while(C);可以正确实现字符串t到s的完整复制功能。 A.*s=*t&&*t!=O B.s++=t++&&*t!=0

1

2

C.*s++=*t++ D.*(++s)=*(++t)

12、设有说明:char s1[10],*s2=s1;则以下正确的语句是C

A.s1[]=”computer” B.s1[10]=”computer” C.s2=”computer” D.*s2=”computer”

13、设有说明:int a[][4]={1,2,3,4,5,6,7,8,9,10},*p=*(a+1);

以下可得数值为9 的表达式是B

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

14、设有说明:int a[4][4]={1,2,3,4,5,6,7,8,9,10},*p=a[1],(*q)[4]=a;则以下不能访问数值为7的数组元素的表达式是 A

A.*(a+1)+2 B. p[2] C.*(a[1]+2) D. q[1][2]

二、填空题

1、在如下定义中 float a[ ]={100,200,300}; float *p[ ]={&a[0], &a[1], &a[2]}; 语句cout<<*p[2]的输出是300 2、若有说明语句char *name=\则cout<

3、int a[5]={100, 200,300, 400, 500}, *p1=&a[0]; 则表达式(*p1)++的值是100。

4、有如下定义中char *str[ ]={“Follow me”, “BASIC”, “Great Wall”, “Department”}中输出”BASIC”字符串的语句是:cout<

6、设有说明语句char s[]=\,*p=s;执行以下两个语句:cout<<*(p+5)<<'\\n';cout<<(p+5)<<'\\n';则输出为5 和56。

7、设有如下函数定义。如果在主函数中有语句cout<

int f(char *s){ char *p=s;

while(*p++); return(p—s);}

8、执行以下程序后,y的值是10 int main(){

int a[4]={2,4,6}; int y=0,*p=a; for(;*p++;)if(*p)y+=*p; cout<

三、程序阅读题

1、写出如下程序的运行结果。 char s[] = \ p += 3; cout<

2

2、写出如下程序的运行结果。 char *p = \ long *q = (long *)p; q++; r = (char *)q; cout<

*z = y - x; }

int main() {

int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);

cout<

4、写出如下程序的运行结果。 void ss(char *s,char t) {

while(*s) {

if(*s==t)

*s = t - 'a' + 'A'; s++; } }

int main() {

char str1[100]=\ ss(str1,c);

cout<

5、void swap(int *p1, int *p2) { int *p;

p=p1; p1=p2; p2=p;

cout<<*p1<<'\\t'<<*p2<

int main(void) { int a=5, b=9;

3

3