ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:19.54KB ,
资源ID:2891421      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2891421.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第四版课后习题答案 第06章 数组指针与字符串.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第四版课后习题答案 第06章 数组指针与字符串.docx

1、第四版课后习题答案 第06章 数组指针与字符串第 六 章 数组、指针与字符串6-1 数组A10515一共有多少个元素?解:10515 = 750 个元素6-2 在数组A20中第一个元素和最后一个元素是哪一个?解:第一个元素是A0,最后一个元素是A19。6-3 用一条语句定义一个有五个元素的整型数组,并依次赋予15的初值。解:源程序:int IntegerArray5 = 1, 2, 3, 4, 5 ;或:int IntegerArray = 1, 2, 3, 4, 5 ;6-4 已知有一个数组名叫oneArray,用一条语句求出其元素的个数。解:源程序:nArrayLength = sizeo

2、f(oneArray) / sizeof(oneArray0);6-5 用一条语句定义一个有53个元素的二维整型数组,并依次赋予115的初值。解:源程序:int theArray53 = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ;或:int theArray53 = 1,2,3, 4,5,6, 7,8,9, 10,11,12,13,14,15 ;6-6 运算符*和&的作用是什么?解:*称为指针运算符,是一个一元操作符,表示指针所指向的对象的值;&称为取地址运算符,也是一个一元操作符,是用来得到一个对象的地址。6-7 什么叫做指针?指针中储存的地址和这个地址中的值

3、有何区别?解:指针是一种数据类型,具有指针类型的变量称为指针变量。指针变量存放的是另外一个对象的地址,这个地址中的值就是另一个对象的内容。6-8 声明一个整型指针,用new语句为其分配包含10个整型元素的地址空间。解:源程序:int *pInteger = new int10;6-9 在字符串”Hello,world!”中结束符是什么?解:是NULL字符。6-10 定义一个有五个元素的整型数组,在程序中提示用户输入元素值,最后再在屏幕上显示出来。解:源程序:#include int main()int myArray5;int i;for ( i=0; i5; i+)cout Value fo

4、r myArray i myArrayi;for (i = 0; i5; i+)cout i : myArrayi n;return 0;程序运行输出:Value for myArray0: 2Value for myArray1: 5Value for myArray2: 7Value for myArray3: 8Value for myArray4: 30: 21: 52: 73: 84: 36-11 引用和指针有何区别?何时只能使用指针而不能使用引用?解:引用是一个别名,不能为NULL值,不能被重新分配;指针是一个存放地址的变量。当需要对变量重新赋以另外的地址或赋值为NULL时只能使用

5、指针。6-12 声明下列指针:float类型变量的指针pFloat,char类型的指针pString和struct customer型的指针prec。解:float *pfloat;char *pString;struct customer *prec;6-13 给定float类型的指针fp,写出显示fp所指向的值的输出流语句。解:cout Value = *fp;6-14 程序中定义一个double类型变量的指针。分别显示指针占了多少字节和指针所指的变量占了多少字节。解:double *counter;cout nSize of pointer = sizeof(counter);cout

6、nSize of addressed value = sizeof(*counter);6-15 const int * p1 和 int * const p2的区别是什么?解:const int * p1 声明了一个指向整型常量的指针p1,因此不能通过指针p1来改变它所指向的整型值;int * constp2声明了一个指针型常量,用于存放整型变量的地址,这个指针一旦初始化后,就不能被重新赋值了。6-16 定义一个整型变量a,一个整型指针p,一个引用r,通过p把a的值改为10,通过r把a的值改为5解:void main()int a;int *p = &a;int &r = a;*p = 10

7、;r = 5;6-17 下列程序有何问题,请仔细体会使用指针时应避免出现这个的问题。#include int main()int *p;*pInt = 9;cout The value at p: *p;return 0;解:指针p没有初始化,也就是没有指向某个确定的内存单元,它指向内存中的一个随机地址,给这个随机地址赋值是非常危险的。6-18 下列程序有何问题,请改正;仔细体会使用指针时应避免出现的这个问题。#include int Fn1();int main()int a = Fn1();cout the value of a is: a;return 0;int Fn1()int *

8、p = new int (5);return *p;解:此程序中给*p分配的内存没有被释放掉。改正:#include int* Fn1();int main()int *a = Fn1();cout the value of a is: *a;delete a;return 0;int* Fn1()int * p = new int (5);return p;6-19 声明一个参数为整型,返回值为长整型的函数指针;声明类A的一个成员函数指针,其参数为整型,返回值长整型。解:long (* p_fn1)(int);long ( A:*p_fn2)(int);6-20 实现一个名为SimpleCi

9、rcle的简单圆类,其数据成员int *itsRadius为一个指向其半径值的指针,设计对数据成员的各种操作,给出这个类的完整实现并测试这个类。解:源程序:#include class SimpleCirclepublic:SimpleCircle();SimpleCircle(int);SimpleCircle(const SimpleCircle &);SimpleCircle() void SetRadius(int);int GetRadius()const;private:int *itsRadius;SimpleCircle:SimpleCircle()itsRadius = ne

10、w 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() constreturn *itsRadius;int main()SimpleCircle CircleOne, CircleTwo(9);cout CircleOne: CircleOne

11、.GetRadius() endl;cout CircleTwo: CircleTwo.GetRadius() endl;return 0;程序运行输出:CircleOne: 5CircleTwo: 96-21 编写一个函数,统计一个英文句子中字母的个数,在主程序中实现输入、输出。解:源程序:#include #include int count(char *str)int i,num=0;for (i=0; stri; i+)if ( (stri=a & stri=A & stri=Z) )num+;return num;void main()char text100;cout 输入一个英语

12、句子: endl;gets(text);cout 这个句子里有 count(text) 个字母。 endl;程序运行输出:输入一个英语句子:It is very interesting!这个句子里有19个字母。6-22 编写函数reverse(char *s)的倒序递归程序,使字符串s倒序。解:源程序:#include #include void reverse(char *s, char *t)char c;if (s t)c = *s;*s = *t;*t = c;reverse(+s, -t);void reverse( char *s)reverse(s, s + strlen(s)

13、- 1);void main()char str120;cout str1;cout 原字符串为: str1 endl;reverse(str1);cout 倒序反转后为: str1 endl;程序运行输出:输入一个字符串:abcdefghijk原字符串为:abcdefghijk倒序反转后为:kjihgfedcba6-23 设学生人数N=8,提示用户输入N个人的考试成绩,然后计算出平均成绩,显示出来。解:源程序:#include #include #define N 8float gradesN; /存放成绩的数组void main()int i;float total,average;/提示

14、输入成绩for(i = 0; i N; i+ )cout Enter grade # (i +1) gradesi;total = 0;for (i = 0; i N; i+)total += gradesi;average = total / N;cout nAverage grade: average endl;程序运行输出:Enter grade #1: 86Enter grade #2: 98Enter grade #3: 67Enter grade #4: 80Enter grade #5: 78Enter grade #6: 95Enter grade #7: 78Enter gr

15、ade #8: 56Average grade: 79.756-24设计一个字符串类MyString,具有构造函数、析构函数、拷贝构造函数,重载运算符+、=、+=、,尽可能地完善它,使之能满足各种需要。(运算符重载功能为选做,参见第8章)解:#include #include class MyStringpublic:MyString();MyString(const char *const);MyString(const MyString &);MyString();char & operator(unsigned short offset);char operator(unsigned s

16、hort offset) const;MyString operator+(const MyString&);void operator+=(const MyString&);MyString & operator= (const MyString &);unsigned short GetLen()const return itsLen; const char * GetMyString() const return itsMyString; private:MyString (unsigned short); / private constructorchar * itsMyString;

17、unsigned short itsLen;MyString:MyString()itsMyString = new char1;itsMyString0 = 0;itsLen=0;MyString:MyString(unsigned short len)itsMyString = new charlen+1;for (unsigned short i = 0; i=len; i+)itsMyStringi = 0;itsLen=len;MyString:MyString(const char * const cMyString)itsLen = strlen(cMyString);itsMy

18、String = new charitsLen+1;for (unsigned short i = 0; iitsLen; i+)itsMyStringi = cMyStringi;itsMyStringitsLen=0;MyString:MyString (const MyString & rhs)itsLen=rhs.GetLen();itsMyString = new charitsLen+1;for (unsigned short i = 0; iitsLen;i+)itsMyStringi = rhsi;itsMyStringitsLen = 0;MyString:MyString

19、()delete itsMyString;itsLen = 0;MyString& MyString:operator=(const MyString & rhs)if (this = &rhs)return *this;delete itsMyString;itsLen=rhs.GetLen();itsMyString = new charitsLen+1;for (unsigned short i = 0; i itsLen)return itsMyStringitsLen-1;elsereturn itsMyStringoffset;char MyString:operator(unsi

20、gned short offset) constif (offset itsLen)return itsMyStringitsLen-1;elsereturn itsMyStringoffset;MyString MyString:operator+(const MyString& rhs)unsigned short totalLen = itsLen + rhs.GetLen();MyString temp(totalLen);for (unsigned short i = 0; iitsLen; i+)tempi = itsMyStringi;for (unsigned short j

21、= 0; jrhs.GetLen(); j+, i+)tempi = rhsj;temptotalLen=0;return temp;void MyString:operator+=(const MyString& rhs)unsigned short rhsLen = rhs.GetLen();unsigned short totalLen = itsLen + rhsLen;MyString temp(totalLen);for (unsigned short i = 0; iitsLen; i+)tempi = itsMyStringi;for (unsigned short j = 0

22、; jrhs.GetLen(); j+, i+)tempi = rhsi-itsLen;temptotalLen=0;*this = temp;int main()MyString s1(initial test);cout S1:t s1.GetMyString() endl;char * temp = Hello World;s1 = temp;cout S1:t s1.GetMyString() endl;char tempTwo20;strcpy(tempTwo,; nice to be here!);s1 += tempTwo;cout tempTwo:t tempTwo endl;

23、cout S1:t s1.GetMyString() endl;cout S14:t s14 endl;s14=x;cout S1:t s1.GetMyString() endl;cout S1999:t s1999 endl;MyString s2( Another myString);MyString s3;s3 = s1+s2;cout S3:t s3.GetMyString() endl;MyString s4;s4 = Why does this work?;cout S4:t s4.GetMyString() endl;return 0;程序运行输出:S1: initial tes

24、tS1: Hello WorldtempTwo: ; nice to be here!S1: Hello World; nice to be here!S14: oS1: Hellx World; nice to be here!S1999: !S3: Hellx World; nice to be here! Another myStringS4: Why does this work?6-25编写一个33矩阵转置的函数,在main()函数中输入数据。解:#include void move (int matrix33)int i, j, k;for(i=0; i3; i+)for (j=0

25、; ji; j+)k = matrixij;matrixij = matrixji;matrixji = k;void main()int i, j;int data33;cout 输入矩阵的元素 endl;for(i=0; i3; i+)for (j=0; j3; j+)cout 第 i+1 行第 j+1 dataij;cout 输入的矩阵的为: endl;for(i=0; i3; i+)for (j=0; j3; j+)cout dataij ;cout endl;move(data);cout 转置后的矩阵的为: endl;for(i=0; i3; i+)for (j=0; j3; j+

26、)cout dataij ;cout endl;程序运行输出:输入矩阵的元素第1行第1个元素为:1第1行第2个元素为:2第1行第3个元素为:3第2行第1个元素为:4第2行第2个元素为:5第2行第3个元素为:6第3行第1个元素为:7第3行第2个元素为:8第3行第3个元素为:9输入的矩阵的为:1 2 34 5 67 8 9转置后的矩阵的为:1 4 72 5 83 6 96-26 编写一个矩阵转置的函数,矩阵的维数在程序中由用户输入。解:#include void move (int *matrix ,int n)int i, j, k;for(i=0; in; i+)for (j=0; ji; j+)k = *(matrix + i*n + j);*(matrix + i*n + j) = *(matrix + j*n + i);

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2