C++第六章课后习题(共19页).doc
《C++第六章课后习题(共19页).doc》由会员分享,可在线阅读,更多相关《C++第六章课后习题(共19页).doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上第 六 章 数组、指针与字符串6-1 数组a10515一共有多少个元素?解:10*5*15=750个元素6-2 在数组a20中第一个元素和最后一个元素是哪一个?解:第一个元素是a0,最后一个是a196-3 用一条语句声明一个有5个元素的int型数组,并依次赋予15的初值。解:int integerArray5=1,2,3,4,56-4 已知有一个数组名叫oneArray,用一条语句求出其元素的个数。解:int nArrayLength=sizeof(oneArray)/sizeof(oneArray0);6-5 用一条语句声明一个有53个元素的二维int型数组,并依次
2、赋予115的初值。解:int theArray53=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;6-6 运算符“*”和 “&”的作用是什么?解:*是指针运算符,是一元操作符,表示指针所指向的对象的值。&是取地址运算符,也是一个一元运算符,用来得到一个对象的地址。6-7 什么叫做指针?指针中储存的地址和这个地址中的值有何区别?解:指针是一种数据类型,具有指针类型的变量称为指针变量。指针变量存放的是另外一个对象的地址,这个地址中的值就是另一个对象的类容。6-8 声明一个int型指针,用new语句为其分配包含10个元素的地址空间。解:int pInteger=new in
3、t10;6-9 在字符串”Hello,world!”中结束符是什么?解:06-10 声明一个有5个元素的int型数组,在程序中提示用户输入元素值,最后再在屏幕上显示出来。解:#includeusing namespace std;int main()int myArray5;int i;for(i=0;i5;i+)coutValue for my ArrayimyArrayi;for(i=0;i5;i+)couti:myArrayiendl;return 0;6-11 引用和指针有何区别?何时只能使用指针而不能使用引用?解:引用是一个别名,不能为NULL值,不能被重新分配;指针是一个存放地址的
4、变量。当需要对变量重新赋以另外的地址或赋值为NULL时只能使用指针。6-12 声明下列指针:float类型变量的指针pfloat,char类型的指针pstr、struct Customer型的指针pcus。解:float*pfloat;Char*pstr;Struct customer*pcus;6-13 给定float类型的指针fp,写出显示fp所指向的值的输出流语句。解:cout”Value=”*fp;6-14 在程序中声明一个double类型变量的指针,分别显示指针占了多少字节和指针所指的变量占了多少字节。解:#includeusing namespace std;int main()d
5、ouble*counter;coutnSize of pointer=sizeof(counter);coutendl;coutnSize of addressed value=sizeof(*counter);return 0; 6-15 const int * p1 和 int * const p2的区别是什么?解:const int *p1声明了一个指向整形常量的指针p1,因此不能通过指针p1来改变它所指向的整型值;int*const p2声明了一个指针型常量,用于存放整形变量的地址,这个指针一旦初始化后,就不能被重新赋值。6-16 声明一个int型变量a,一个int型指针p,一个引用r
6、,通过p把a的值改为10,通过r把a的值改为5解:int a;int*p=&a;int &r=a;*p=10;r=5;6-17 下列程序有何问题,请仔细体会使用指针时应避免出现这个的问题。#include using namespace std;int main() int *p; *p = 9; cout The value at p: *p; return 0;解:指针p没有初始化,也就是没有指向某个确定的内存单元,它指向内存中的一个随机地址,给这个随机地址赋值是非常危险的。6-18 下列程序有何问题,请改正;仔细体会使用指针时应避免出现的这个问题。#include using names
7、pace std;int fn1()int * p = new int (5);return *p;int main() int a = fn1();cout the value of a is: a;return 0;解:#include using namespace std;int*fn1();int main()int*a=fn1();coutthe value of a is:a;delete a ;return 0;int *fn1()int*p=new int(5);return p;6-19 声明一个参数为int型,返回值为long型的函数指针;声明类A的一个成员函数指针,其参
8、数为int型,返回值long型。解:long(*p_fn1)(int);Long(A:*p_fn2)(int);6-20 实现一个名为SimpleCircle的简单圆类,其数据成员int*itsRadius为一个指向其半径值的指针,存放其半径值。设计对数据成员的各种操作,给出这个类的完整实现并测试这个类。解:#include using namespace std;class SimpleCirclepublic:SimpleCircle();SimpleCircle(int);SimpleCircle(const SimpleCircle &);SimpleCircle()void setR
9、adius(int);int getRadius()const;private:int*itsRadius;SimpleCircle:SimpleCircle()itsRadius=new int(5);SimpleCircle:SimpleCircle(int Radius )itsRadius =new int(Radius);SimpleCircle:SimpleCircle(const SimpleCircle & rhs)int val=rhs.getRadius();itsRadius=new int(val);int SimpleCircle:getRadius()constre
10、turn*itsRadius;int main()SimpleCircle CircleOne ,CircleTwo(9);coutCircleOne:CircleOne.getRadius()endl;coutCircleTwo:CircleTwo.getRadius()endl;return 0; 6-21 编写一个函数,统计一条英文句子中字母的个数,在主程序中实现输入输出。解:#include #includeusing namespace std;int count(char*str)int i,num=0;for(i=0;stri;i+)if(stri=a&stri=A&stri=Z
11、)num+;return num;int main()char text100;cout输入一个英语句子:endl;gets(text);cout这个句子里有count(text)个字母。endl; 6-22 编写函数void reverse(string &s),用递归算法使字符串s倒序。解:#include #includeusing namespace std;string reverse(string & str)if(str.length()1)string sub=str.substr(1,str.length() -2);return str.substr(str.length
12、()-1,1)+reverse(sub)+str.substr(0,1);elsereturn str;int main()string str;coutstr;cout原字符串为:strendl;cout倒序反转后为:reverse(str)endl;return 0; 6-23 设学生人数N=8,提示用户输入N个人的考试成绩,然后计算出他们的平均成绩并显示出来。解:#include #includeusing namespace std;#define N 8float gradesN;int main()int i;float total,average;for(i=0;iN;i+)co
13、utEnter grade#(i+1)gradesi;total=0;for(i=0;iN;i+)total+=gradesi;average=total/N;coutnAverage grade:averageendl;return 0; 6-24 基于char*设计一个字符串类MyString,并且具有构造函数、析构函数、复制构造函数,重载运算符“+”、“=”、“+=”、“”,尽可能完善它,使之能满足各种需要。(运算符重载功能为选做,参见第8章)解:#include#includeusing namespace std;class MyStringpublic:MyString();MyS
14、tring(const char*const);MyString(const MyString&);MyString();char&operator(unsigned short offset);char operator(unsigned short offset)const;MyString operator+(const MyString&);void operator +=(const MyString&);MyString&operator =(const MyString&);unsigned short getLen()constreturn itsLen;const char*
15、getMyString()constreturn itsMyString;private:MyString(unsigned short);char*itsMyString;unsigned short itsLen;MyString:MyString()itsMyString=new char1;itsMyString0=0;itsLen=0;MyString:MyString(unsigned short len)itsMyString=new charitsLen+1;for(unsigned short i=0;i=len;i+)itsMyStringi=0;itsLen=len;My
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 第六 课后 习题 19
限制150内