版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章第四章目学生成绩统计项五学习目标了解逗号运算的原理和应用。掌握指针的原理机制、定义和实现技巧。掌握下标法表示数组元素与指针法表示数组元素的区别和实现技巧。掌握枚举型数据的原理机制、定义和实现技巧。具有基本的程序测试与调试的能力学习路径任务一计算学生课程总评成绩逗号运算逗号运算是C语言提供的一种特殊运算符,用“,”将表达式连接起来的式子称为逗号表达式。逗号表达式的一般格式如下:表达式1,表达式2,……,表达式n;指针(1)指针的概念指针是一种专门用于存放数据内存地址的数据类型。计算机内存是由连续的存储单元(通常称为字节)组成,不同的数据类型所占用的存储单元数不同,例如整型数据占2个单元,字符型数据占1个单元等。每个存储单元有一个唯一的编号,这就是内存“地址”,指针可以根据一个存储单元的地址而准确地找到该内存单元。指针(2)“直接访问”方式“直接访问”是一种按变量地址存取变量值的访问方式。编译程序将存储单元地址与变量名联系起来,程序引用某个变量名时,也就访问相应的存储单元。如图5.2所示,使用“直接访问”方式访问数据。指针(3)“间接访问”方式
“间接访问”是一种按存储单元中存放的数据地址间接读写数据的访问方式。如图5.2所示,访问变量i的数值时可通过变量i_ptr进行间接访问,编译程序为变量i_ptr分配了地址为2000开始的存储单元,存储内容为1000,也就是变量i占用存储单元的起始地址,通过这个地址就可以访问变量i的内容数值10指针(4)指针变量的使用
指针变量和普通变量的使用方法相同,都需要先声明和初始化再引用,才能正确对数据进行访问,未经初始化的指针变量不能使用,否则程序会产生错误的结果。指针变量使用之前必须把它声明为指针。声明格式如下:数据类型*变量名;指针(5)指针变量的引用引用指针变量需要使用“&运算符”和“*运算符”。“&运算符”是取地址运算符,可以实现取出变量的地址,在scanf()函数中,已经了解并使用过“&运算符”;“*运算符”是指针运算符,表示指针变量所指向的变量,需要注意指针运算符*和指针变量声明中的指针说明符*不同,表达式中运算符*表示指针变量所指的变量,指针变量声明中“*”是类型说明符,表示变量是指针类型指针与数组(1)指针与数组的关系假设已经声明整型数组a[10],数组名a表示该数组在内存的起始地址,也就是即第一个元素a[0]的地址&a[0]。则声明一个指向数组元素的指针变量如图指针与数组(2)指针访问数组一维数组的存储结构是线性的,在内存中占用一片连续的存储单元。若声明了指向数组的指针,将该指针指向数组的第一个元素,通过移动指针可以存取数组的每一个元素。任务二计算班级课程及格率、最高分和最低分指针变量作为函数参数使用指针做函数参时需注意以下3点要求:指针变量,既可以作为函数的形参,也可以作实参。做形参时被调用函数的定义和声明必须指出参数类型是指针而不是数值;指针变量作实参时,与普通变量一样,也是“单向值传递”,即将指针变量的值(地址)传递给被调用函数的形参(一个指针变量);被调用函数不能改变实参指针变量的值,但可通过形参指针变量改变它们所指向的变量的值任务三统计平时成绩、期末成绩和总评成绩各分数段人数枚举类型在C语言中,枚举类型是一种构造数据类型,它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。例如人的性别只有两种取值,星期只有七种取值等。
定义枚举类型的格式如下:enum
枚举类型名{值列表};任务四按总评成绩为全班学生排序排序算法(1)插入排序
插入排序就是假设已经有一个排好序的数字列,现在要把一个新数插入其中,使数列依然保持排序状态。具体算法可描述为以下6步:第一步:从第一个元素开始,该元素可以认为已经被排序;第二步:取出下一个元素,在已经排序的元素序列中从后向前扫描;第三步:如果该元素(已排序)大于新元素,将该元素移到下一位置;第四步:重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;第五步:将新元素插入到该位置后,第六步:重复步骤2~5。排序算法(2)插入排序
冒泡排序是一种简单直观的排序算法,这种方法主要是通过对相邻两个元素进行大小的比较,根据比较结果和算法规则对这两个元素的位置进行交换,这样逐个依次进行比较和交换,就能达到排序目的。具体算法可描述为以下4步:第一步:比较相邻的元素。如果第一个比第二个大,就交换它们两个;第二步:对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。遍历结束后,最后的元素应该会是当前最大的数;第三步:针对所有的元素重复以上的步骤,除了最后一个;第四步:持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。排序算法(3)选择排序
选择排序是对定位比较交换法(也就是冒泡排序法)的一种改进。它的基本思想是:每一次在n-i+1(i=1,2,…n-1)个数中选取最小值作为有序序列中第i
个记录。具体算法可描述为以下3步:第一步:第1次遍历,在待排序的n个数中选出最小值,将它与第一个数交换;第二步:第2次遍历,在待排序的n-1个数中选出最小值,将它与第二个数交换,以此类推;第三步:第i
次遍历,在待排序的n-i
个数中选出最小值,将它与第i
个数交换,使有序序列不断增长直到全部排序完毕。任务五班级成绩报表可视化程序测调(1)程序测试程序测试过程包括两个阶段,一是人工测试;二是基于计算机的测试。人工测试是一种高效的错误检测过程,依照常见错误列表对逐条语句进行分析。除了查找错误之外,还要查看编程风格和算法的选择。基于计算机的测试,就是在计算机上使用测试用例真正运行程序,然后检查运行显示的结果是否与测试用例的预期结果一致。运行时错误可能会产生运行时错误消息。
对于较大的程序而言,程序测试可按模块进行,模块测试也称单元测试,仅在模块范围内进行。因为每个模块都只完成相对独立和单一的功能,所以测试相对简单。所有模块都测试之后,再进行集成测试,来查看模块之间的数据是否匹配、传递是否正确等。程序测调(2)程序调试程序调试是指隔离和改正错误的过程。一个简单的调试方法是在程序中放置显示语句来显示变量的值。它将显示程序的动态信息,便于查看和比较执行不同语句后变量的变化,从而确定出错的语句。一旦确定出错位置并改正错误后,就可把调试语句去掉。或者使用C语言集成开发环境中提供的单步运行功能也可。另外两种程序调试方法,一种是使用推导过程,利用排除和细化过程来确定错误位置;另一种错误定位法是顺着程序的逻辑回推不正确结果,直到找到错误位置。常用简单程序调试方法如下:通过观察循环中的变量分析程序,如使用Alt+B,可设置需观察的变量;使用printf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《血友病的护理》课件
- 《行政许可法培训》课件
- 合肥市房屋租赁合同示范文本
- 工程施工合同约束条款的执行力度
- 《氮气处理的危险》课件
- 《蔬菜腌渍》课件
- 2025年吉林市考货运上岗证试答题
- 2025年酒泉b2从业资格证模拟考试题目
- 2025年曲靖货运从业资格证试题及答案
- 2025年天津从业资格货运资格考试题库答案解析
- 移动应用开发职业生涯规划书
- JGJ406T-2017预应力混凝土管桩技术标准附条文
- 环境空气自动监测站运维服务投标方案
- 第5讲-空间运动方程-潜艇
- 生物化学研究进展概述
- 03S702钢筋混凝土化粪池图集
- 2022-2023学年天津市新华重点中学高一上学期期末英语试卷原卷版+解析版无听力部分
- 《孙子兵法》与执政艺术学习通超星课后章节答案期末考试题库2023年
- 苁蓉山庄工程施工组织设计
- 新人教版二年级上册数学全册教案(含教学反思)
- 钣金件设计经验手册
评论
0/150
提交评论