C++指针习题参考答案_第1页
C++指针习题参考答案_第2页
C++指针习题参考答案_第3页
C++指针习题参考答案_第4页
C++指针习题参考答案_第5页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C卄指针习题学号姓名一、选择题1、有定义如下:int a5, *p;则下列描述错误的是BA. 表达式p=p+l是合法的B.表达式是合法的C.表达式pp是合法的D.表达式a+2是合法的2、函数定义为Fun(int &i),变量定义n=100,则下面调用该函数正确的 是 CA Fun(20)B. Fun(20+n) C. Fun(n) D. Fun(&n)3、若有说明int I, j=2, *p=&i;则能完成i=j赋值功能的语句是 A. i=*p; B. *p=*&j;C. i=&j; D. i=*p;4、设已有定义char *st = how are you:下列程序中正确的是AA. char

2、 all, *p;strcpy(p=a+l, &st4);B. char all;strcpy (+a, st);C. char all ;s trcpy(a, st);D. char a, *p;strcpy(p=al, st+2);5、设有数组int array3 4,下列引用数组元素的方法中错误的是丄A. arrayi j B *(*(array+i)+j)C. * (array i+j) D. * (array+i*4+j)6、有定义int s4 5, (*ps) 5;ps=s;则对数组s中元素引用的正确的是 A. ps+1 B. (ps+3) C. ps0 2D. *(ps+l)+3

3、7、设有说明int b44,以下不能等价表示元素b3 3的是:BA. *&b3 3 B. (*(*(b+3)+3) C. *(b3+3) D. *(*(b+3) +3)8、若有说明char *s: = 23456789012,34567890;,则表 达式*sl *s3比较的是BA- 1234和9012 B/ 5,和3 C/T 和,9,D. 5678和34569、设语句ch*s = Student, Teacher, Father, Mother, *ps=s2执 行语句 /,cout*sl,J ps,1 *ps, n 则输出结果是 A. T, Father, FB. Teacher, F,

4、FatherC. Teacher, Father, Father D.语法错无输出10、设有以下说明语句:char sl20=hello, s220=china;const char *ptr=sl;以下语句中不符合c卄语法规则的语句是DA. strcpy(s2, ptr); B. ptr=s2; C. ptr=ptr+4; D. *ptr=*s2;11. 设s和t分别为指向两个长度相同的字符数组的指针,则循环语句wle( );可以正确实现字符串t到s的完整复制功能。A. *s=*t&*t!=O B. s+=t+&*t!=0C. *s+=*t卄D. *(卄s)=*(+t)12、设有说明:cha

5、r si 10, *s2=sl;则以下正确的语句是 A. sl=” computerB. si 10= computerC. s2二computerwD. *s2二computerw13、设有说明:int a 4 = 1, 2, 3,4, 5, 6, 7, 8, 9,10, *p=*(a+l);以下可得数值为9的表达式是BA. p+=3, *p+B. p+=4, * (p+)C. p+=4, *+pD. p+=4, +*p14、设有说明:int a4 4 = 1, 2, 3, 4, 5, 6, 7, & 9,10, *p=al, (*q) 4=a;则以下不能访问数值为7的数组元素的表达式是_A

6、A. *(a+l)+2 B. p2C. *(al+2) D. ql 2二、填空题1、在如下定义中 float a = 100, 200, 300; float *p = &a0, &al, &a 2;语句cout*p2的输出是 2n 若有说明语句 char *name二newspaper;则 coutname+2 的输出是 wspaper cout* (name+3) 的输 出 是 s。3、int a5=100, 200, 300, 400, 500, *pl=&a0;则表达式(*pl)+的值是 100。4、有如下定义中 char *str = Follow me” , BASIC” , Gr

7、eat Wall” , “Department” 中输出” BASIC” 字符串的语句是:cout strl5、执行以下语句:int a5 = 25, 14, 27, 18, *p=a; (*p)+;则切的值为 26,再执行语句:切+;则* D的值为146、设有说明语句char s二123t45600089,水p二s;执行以下两个语句:cout*(p+5) n ;cout(p+5), n ;则输出为 5 和 7、设有如下函数定义。如果在主函数中有语句coutf( “goodbye!”);则 输岀 9int f(char *s) char *p=s;while(*p+);return (ps);

8、8、执行以下程序后,y的值是_ 10int main() int a4 = 2, 4, 6; int y=0, *p=a;for(; *p卄;)if (*p) y+=*p;coutyendl;9、三、程序阅读题1、写出如下程序的运行结果。char s = abcdefgh , *p = s;P += 3;coutstrlen (strcpy (p, ABCD) endl;/4coutsendl; /abcABCD2、写出如下程序的运行结果。char *p = abcdefgh,long *q = (long *)p;q+;r = (char *)q;coutrendl; /efgh3、写出如下

9、程序的运行结果。void sub (int x, int y, int *z)*z = y - x;int main()int a, b, c;sub (10, 5, &a);sub (7, a, &b);sub (a, b, &c);couta, t, b, tJ cendl;-5 -12 -7return 0;4、写出如下程序的运行结果。void ss (char *s, char t)while(*s)if(*s=二t)*s = t - a + A;s+;int mainOchar strl100=dbcddfefdbd, c=(T ; ss(strl, c);coutstrlendl;

10、 /abcDDfefDbD return 0;5、void swap(int *pl, int *p2) int *p;p二pl; pl=p2; p2=p;cout*pl, t, *p2endl;int main(void) int a=5, b=9;swap (&a,&b);couta, tf bendl;return 0;程序第一行输出9 5,第二行输出5 96、void exchange (int *x, int *y) int temp;temp=*x;*x=*y;*y=temp;void main(void)int data8=15,12, 20, 0, 8,-5,17,1;for(

11、int i=0;i=7;i+)for (int j=i;jdatajj)exchange (Adata i, &dataj);coutdataiendl;函数exchange的作用是:交换指针变量指向的数, &datai表示的是:datai的地址 ,程序的输出结果是:-5 0 1 8 12 15 17207、写出如下程序的输出结果void invert (char*a, int x, int y)char t, *p, *q;p二a+x;while (pq)*p=*q;*q=t;p+ ; q;int main()char dt13=GoodBookNice;int i=0, n=l;while

12、(i8)invert (dt, i, i+5);cout*第n+次计算:endl;for(int j=i;j d o, o)G,第2次计算:e, c, i, N, k, o,共执行了 12次计算8、写出如下程序的运行结果。char ch25=69348254;char *p2;int i, j, s=0;for(i=0;i2;i+)pi=chi;for(i=0;iO, &pij=,9 ; j+=2) s+=10*(pij- O);couts; /2209、写出如下程序的运行结果。int sum(int p, int *w, int n)int i;int s=0, m=0;for(i=0;im

13、)m=pi;*w=i;return s;int main()int aa3 3=2, 4, 8, 7, 5, 3, 2, 6, 9;int row 3, col 3 = 0, 0, 0;for (int i=0;i col+i, 3); coutrow Ci) =/rrowi endl;for(i=l;i3;i+) cout第行位置:col i endl;return 0;row (0)=14row (1)=15row (2) =17第1行位置:0第2行位置:210、写出如下程序的运行结果。 double fl (double x)return x+x;double f2(double (*f

14、)(double x), int a)int x;double sum=0;for (x=a;x=a+l;x+) sum+=f (x) * f (x);return sum;int mainOdouble sum;for(int i=l;i i); cout sumendl;205210016411以下程序运行后,输出是,如果去掉A行的continue语句,则输出 343char *s=*121*;int k=0, a=0, b=0:do k+;if (k%2=0) a+=sk-O;continue; /Aif(sk) b+二sk-O ;a+=sk- 01 ; while (sk);coutk

15、J t a, tJ b, n,;四、程序填空题1、下面程序的功能是:主函数定义了一个整型数组data,从键盘上输入一 个数x,调用函数fsum()断该数x是否在数组data中。如果x在数组中,则得 到x在data中第一次出现时的下标值p,同时求出下标从0到P之间所有元素 之和,函数返回x的下标值p;否则,x不在数组中,函数fsum()返回-1,主函 数提示相应信息。主函数输出计算结果。请完善程序。ftinclude using namespace std;int fs(int *a, int n, int x, int &sum)sum=0;for(int i=0;in;i卄)sum = su

16、m + ai;if(x=ail)return i;return -1;int main()int data = 12, 31,16, 28, 7, 29, 35,18,40;int x, s, index;cout请输入要找的数:;cinx;index=fs ( date 9, x, s);if ( index=l)coutx*不在数组中*endl;elsecoutx是数组中下标为index的元素。;cout数组中前index项之和为:/rsendl;return 0;2. 下面程序的功能是:从输入的一行字符串中求出最长英文单词长度及最 长单词个数,并输出长度和个数,单词之间只能用一个或多个空格隔开。如输 入字符串T am a student时,最长单词的长度为7,个数为1。而输入字符 串word body book try时,最长单词的长度为4,个数为3,即有三个单词 均为最长单词。#includeint lenofLongest(char *s, int &num)int m2ixlen=0, curlen=0;num=0;for (;)wh订e(*s= )s+;跳过空格辻(*s!二0) while(*s!=, & *s) curle

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论