C指针习题参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.
《C++指针》习题
学号姓名
一、选择题
1、有定义如下:int a[5], *p; 则下列描述错误的是 B
A.表达式p=p+1是合法的 B.表达式a=a+1是合法的
D.表达式p-a是合法的 a+2是合法的 C.表达式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 = how are you;下列程序中正确的是 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、若有说明char *s[]={?,.78,9012,?6,_x0007_890};,则表达
式*s[1]> *s[3]比较的是 B
A.??尴和9012 B.'5'和'3' C.'l'和'9' D.??尸和?6
9、设语句char *s[]={Student,Teacher,Father,Mother},*ps=s[2];,执行语句cout<<*s[1]<<','< A.T,Father,F B.Teacher,F,Father C.Teacher,Father,Father D.语法错无输出 10、设有以下说明语句: char sl[20]=hello,s2[20]=china;const char *ptr=s1; 以下语句中不符合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 .. . 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= ewspaper; 则cout< wspaper ,cout<<*(name+3) 的输出是 s 。 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<< str[1] 5、执行以下语句:int a[5]={25,14,27,18},*p=a;(*p)++; 则 *p的值为 26 ,再执行语句:*p++;则 * p的值为 14 6、设有说明语句档牡猠嵛尽㈱尳瑜?尶ぜ??,*p=s;执行以下两个语句: cout<<*(p+5)<<'\n';cout<<(p+5)<<'\n';则输出为 5 和 56 。 7、设有如下函数定义。如果在主函数中有语句cout< 出 9 int f(char *s){ char *p=s; while(*p++);