C 程序设计案例教程 刘玉山 第4章 数组 指针与引用新.pptVIP

  • 2
  • 0
  • 约7.37千字
  • 约 97页
  • 2018-06-08 发布于四川
  • 举报

C 程序设计案例教程 刘玉山 第4章 数组 指针与引用新.ppt

C 程序设计案例教程 刘玉山 第4章 数组 指针与引用新

第4章 数组、指针与引用 学习目标 1)了解多维数组、指针和引用的作用。 2)理解指针和引用的区别和联系。 3)掌握一维和二维数组的用法。 4)掌握new和delete的用法。 第4章 数组、指针与引用 4.1 数组 4.2 指针 4.3 引用 4.4 动态存储方式 4.1 数组 数组是由一组具有相同数据类型的元素组成的集合,这些数组元素在内存中占有一片连续的存储单元。可以用一个统一的数组名标识这一组数据,而用下标来指明数组中各元素的序号。根据数组的维数,分为一维数组、二维数组和多维数组。常用的是一维数组和二维数组。 4.1.1 一维数组 任务1:求一个班级内期末C++成绩的平均分 (1)任务描述 对于一个班级而言,期末某门课程成绩的平均分是经常被我们所求。这里就以课程C++的成绩为例来求计05-1班C++成绩的平均分。 (2)任务分析 既然是求某门课程的平均分,就需要知道班内每一个学生的个人成绩。而个人的成绩需要存储,要用到前面我们介绍了变量。 如果要使这些成绩都单独放在一个个变量中,需要为每一个学生都声明一个变量。比较繁琐,而且不变于记忆。 如果用一段连续的地址空间来存储这些成绩,我们通过首地址的运算,就可以得到该地址中所存储的数据值。这样通过数组简化了用户的操作,提高程序的简洁性和可读性。 (2)任务分析 这里选取数据的存储类型为float型,并且选取的变量地址与部分学号的对应关系见表4-1。 (3)任务实现 见程序Student411.cpp (4)要点总结 这里学生的成绩存储在一片连续的地址空间中,通过对变量地址的加运算,从而得到了其中存储的成绩值。 对于函数“float avg(float A[],int n)”的选择,需要输入n个学生的成绩,而A又无法得到其长度,所以只能通过参变量n来指定,避免访问越界。而成绩定义的数据类型为float类型,所以返回类型自然也应该是float类型。 (5)涉及到知识点 一维数组: 1)一维数组的定义格式: 〈类型〉〈数组名〉 [〈常量表达式〉]; 2)一维数组的初始化。 C++语言中允许在定义数组时对其中的全部或部分指定初始值,称为数组的初始化。 初始化的语法格式为: 〈类型〉〈数组名〉 [〈常量表达式〉]={值1,值2,…,值n}; (5)涉及到知识点 3)数组的赋值。 ① 用“=”赋值。 与数组元素的初始化不同,在给数组元素赋值时,必须逐一赋值。 ② 用流命令赋值。 其语法格式为: cin数组名[下标]; (5)涉及到知识点 4)数组元素的引用 数组在定义后即可引用。其引用形式为: 数组名[下标] 表示要引用的是该数组中第(下标+1)个元素。 4.1.2 二维数组 任务2:求一个班期末C++成绩的平均分,要求数据的存储用二维数组 (1)任务描述 对于上一个任务而言,对学生成绩的存储,我们通过数组的下标来映射学生的编号。这对我们来说,缺少灵活性。只能是一个接着另一个存储。即使中间空着学号,它空着的空间也不能被其他的学号所利用等等。 这里要求采用二维数组来存储学生的编号和科目的成绩,然后再求班内学生的C++期末成绩的平均分。 (2)任务分析与设计 由于上一个任务的实现是通过一维数组来存储每个学生的C++成绩,而数组的下标表示学生的编号。缺乏灵活性。这里我们对学号和成绩进行分别存储。 (2)任务分析与设计 由于有两个信息--学号和成绩需要存储,所以这里选择二维数组来进行存储。这里假设有n个学生,那么该数组就可以声明为A[n][2]。下标n表示学生的个数,下标2表示每一个学生需要存储两个信息(学号和成绩)。由于数组只能存放同一种数据类型。所以这里就需要我们作出一种选择,要么以学号的数据类型为该数组的数据类型,要么以成绩的数据类型为该数组的数据类型。假设我们的成绩如上一个任务所描述的那样,选取float数据类型。那么学号也只能存储为float数据类型。不过我们知道学号不可能被设计为带小数的数字。值得庆幸的是int可以被系统默认转化为float。 (3)任务实现 见Student412.cpp (4)要点总结 从以上两个任务中我们认识到一个问题的解决,很大程度上依赖于对问题的分析以及在该分析之上的数据结构的选择。 通过这两个任务我们还认识到数组中存储的是相同数据类型的数据。所以对于二维数组,如果选择它用来存储两个不同意义的数据,一定慎重。判断是否可以转化为一种数据类型。 (5)涉及到知识点 二维数组: 1)二维数组的定义格式。 类型 数组名 [常量表达式1][常量表达式2]; 2)二维数组的初始化。 和一维数组一样,二维数组也能在定义时被初始化,只是要注意必须按

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档