《郑秋生版c++答案习题八15121.pdf》由会员分享,可在线阅读,更多相关《郑秋生版c++答案习题八15121.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第八章 指针与引用 习题答案 一、选择题 CBCBCC 二、简答题(1)&运算符:取地址运算符,用来得到一个普通变量的地址。*运算符:间接引用运算符,用来获取指针变量所指向变量的值。(2)指针:一个变量在内存中所占存储单元的首地址称为该变量的指针,也就是指向该变量的指针。指针中存储的地址是其所指向的变量的地址,指针中存储的地址里的值就是其所指向变量的值。(3)引用与指针的区别是,通过某个指针变量指向一个对象后,对它所指向的变量通过*运算符进行间接操作,程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。可以建立数组的指针,但不能建立数组的引用,因为数
2、组是一个由若干个元素所组成的,所以就无法建立一个数组的别名。(4)const int*p1 表示p1所指向的int变量为常量,int*const p1 表示p1为常量 三、改错题(1)int a;b;改成 int a,b;pointer_1=a;改成 pointer_1=&a;cout*a *bendl;改成 couta bendl;coutpointer_2*aendl;改成 cout(*pointer_2)*aendl;(2)有 int*p,a=9;p=&a;cout”the value of p is”*p;四、阅读程序写结果(1)ABCDEFG(2)x=1.5 y=2.5z=4(3)2
3、0 50 50 41(4)m-n=15 五、编程题(1)实现字符串逆序输出。#include#include const char*fun(const char *p1)while(*p1+);p1-;return p1;int main(void)char s1100;const char *q,*p1;cout输入一个字符串:;cin.getline(s1,100);cout逆向输出串:;q=s1;p1=fun(s1);do cout*p1;p1-;while(q=p1);return 0;(2)输入任意一个字符串,将其中的大写字母转换成小写字母。#include int main(voi
4、d)char s100;int i=0;cout=A&si=Z)si=si+32;coutsi;i+;while(si);return 0;(3)用指针的方法处理:输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。#include#include int main(void)int a10,i=0,t;int*p,*min,*max;for(i=0;iai;p=&a1;min=max=a;for(i=1;i(*p)min=p;cout*min;if(*max)(*p)max=p;p+;t=*min;*min=a0;a0=t;t=*max;*max=a9;a9=t;for
5、(i=0;i10;i+)coutai;return 0;(4)编写取子串程序。即将一个字符串中从第i个字符开始的全部字符复制为另一个字符串。#include#include void subi(char from,char to,int i)int j=0;if(i0&i=strlen(from)while(fromi-1)toj+=from(i+)-1;toj=0;int main(void)char s1100;char s2100;cout;cin.getline(s1,100);subi(s1,s2,3);couts2;return 0;(5)用将一个整数n转换成一个字符串。如将1234转换为1234。#include#include void itos(int n,char to)int j=0,i;char t;while(n)toj+=0+n%10;n=n/10;toj=0;j-;for(i=0;ij;i+,j-)t=toi;toi=toj;toj=t;int main(void)int n=0;char s100;coutn;itos(n,s);cout*p2)return 1;if(*p1=1&month=12)return arrmonth;else return NULL;