C++第5章习题解答.doc

C++第5章习题解答.doc

ID:54802

大小:207.00 KB

页数:20页

时间:2017-04-30

C++第5章习题解答.doc_第1页
C++第5章习题解答.doc_第2页
C++第5章习题解答.doc_第3页
C++第5章习题解答.doc_第4页
C++第5章习题解答.doc_第5页
资源描述:

《C++第5章习题解答.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第五章数组与指针习题第五章数组与指针习题一、.基本概念与基础知识自测题5.1填充题5.1.1数组定义时有三个要素:数组名,数组元素的(1)和数组元素的(2)。按元素在数组中的位置进行访问,是通过(3)进行的,称为(4)或(5)访问。为了使数组声明中数组的大小修改更为方便,总是将(6)用于声明数组长度。答案:(1)类型(2)数量(3)下标运算符(4)下标(5)索引(6)常变量5.1.2C/C++中的多维数组用的是一个(1)的定义,即多维数组的基本定义是(2)构成的数组,三维数组的元素是(3)。答案:(1)嵌套(2)以数组作为元素(3)

2、二维数组5.1.3计算机内存是一维编址的,多维数组在内存中的存储(1),C/C++多维在内存中的排列是(2)方式,即越(3)的下标变化(4)。设数组a有m行n列,每个元素占内存u个字节,则a[i][j]的首地址为(5)+(6)。答案:(1)必须要转化为一维方式,(2)按行方式(3)右(4)越快(5)a数组的首地址(6)(i*n+j)*u5.1.4对于多维数组,(1)的大小是确定的,所谓“不检查数组边界”只是不检查(2)的边界,而(3)的边界是在控制之中的,所以多维数组名作为函数的参数只可以(4)缺省。答案:(1)较低各维的(2)最高

3、维(第一维)(3)较低各维(4)最高维5.1.5指针变量保存了另一变量的(1)值,不可以任意给指针变量赋一个地址值,只能赋给它(2)和(3)的地址。使用变量名来访问变量,是按(4)来直接存取变量称为(5)方式;而借助指针变量取得另一变量的地址,访问该变量称为(6)方式。答案:(1)地址(2)NULL20第五章数组与指针习题(3)已经分配了内存的变量的地址(4)按变量的地址(5)直接访问(6)间接访问5.1.6固定指向一个对象的指针,称为(1),即(2),定义时const放在(3)。而指向“常量”的指针称为(4),指针本身可以指向别的

4、对象,但(5),定义时const放在(6)。答案:(1)指针常量(2)指针本身是常量(3)const放在类型说明之后,变量名之前(4)常量指针(5)不能通过该指针修改对象(6)const放在类型说明之前5.1.7数组名在表达式中被自动转换为指向(1)的指针常量,数组名是地址,但数组名中放的地址是(2),所以数组名(3)。这样数组名可以由(4)来代替,C++这样做使用时十分方便,但丢失了数组的另一要素(5),数组名是指向数组(6)的指针,而不是指向数组(7)的。编译器按数组定义的大小分配内存,但运行时对(8)不加检测,这会带来无法预知

5、的严重错误。答案:(1)数组第一个元素(2)不可改变的(3)称指针常量(4)指针(5)数组元素的数量(6)元素(7)整体(8)对数组的边界不加检测5.1.8有一个三维数组:intz3d[2][3][4];给出指向三维数组第i行第j列第k页元素的指针的三种表达方式(1),(2),(3)。再给出这些元素的三种表达方式(4),(5),(6)。答案:(1)z3d[i][j]+k或&z3d[i][j][k](2)*(z3d[i]+j)+k(3)*(*(z3d+i)+j)+k(4)z3d[i][j][k]或*(z3d[i][j]+k)(5)*(

6、*(z3d[i]+j)+k)(6)*(*(*(z3d+i)+j)+k)5.2简答题5.2.1物理上,C++是怎样访问数组元素的?请对访问方法作简单介绍。答:物理上,C++语言的下标运算符[]是以指针作为操作数的,a[i]20第五章数组与指针习题被编译系统解释为*(a+i),即表示为a所指(固定不可变)元素向后第i个元素。无论我们是以下标方式或指针方式存取数组元素时,系统都是转换为指针方法实现。这样做对多维数组尤其方便。5.2.2什么是回溯算法?答:回溯法是对枚举法的一种改进。回溯法的基本思想是,通过对问题的分析找出解决问题的线索,先

7、在一个局部上找出满足问题条件的局部的解,然后逐步由局部解向整个问题的解的方向试探,若试探成功就得到问题的解,试探失败逐步向后退,改变局部解再向前试探。回溯法能避免枚举法的许多不必要的搜索,使问题比较快地得到解决。5.2.3用数组名作为函数的参数时,可否加上数组的长度?如果需要加则怎样加?为什么?答:被调函数中作为形式参数的一维数组不需要说明长度,即使说明了大小也不起作用,因为C++只传递数组首地址,而对数组边界不加检查。5.2.4需要编写一个对多维数组通用的算法(即各维的大小未定),怎样才能把实参多维数组的信息全部传递到函数中去?答

8、:最佳方法是用函数模板,多维数组用模板类型参数传递,各维的大小作为参数传递。也可以用一维数组加各维的大小都作为参数传递。5.2.5解释运算符“*”和“&”的作用,运算符“.”和“->”的作用。答:在应用指针变量时,“*”是间接引用(d

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。