版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计案例教程授课教师:XXX
授课日期:20XXx月x日数据处理本篇重点:1)掌握数组的相关知识。2)掌握大量数据的搜索算法。3)掌握大量数据的冒泡排序方法。4)掌握结构体的应用。5)掌握文件处理的基本操作。6)学会利用函数组织程序。Case1收拾整理—数组的应用收拾整理—数组的应用任务描述:有一堆数:如何把它们提交给计算机保存并进行相应的处理(如输出)?收拾整理—数组的应用相关知识:数据结构+算法=程序,这个公式说明,程序设计首先要考虑数据的存放问题。1.数组的概念在程序设计中,为了方便处理,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。因此,按数组元素的类型不同,数组又可分为数值数组、字符数组(字符串)、结构数组等。收拾整理—数组的应用2.一维数组的使用使用数组与使用变量一样,也要先定义后使用。一维数组定义的一般格式:类型说明符数组名[常量表达式];收拾整理—数组的应用3.注意事项使用数组时要注意以下几点:1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。2)数组名的命名规则应符合标识符的命名规定。3)数组名不能与其他变量名相同。收拾整理—数组的应用4)方括号中的常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。其下标从0开始计算,因此这5个元素分别为a[0]、a[1]、a[2]、a[3]、a[4]。5)允许在同一个类型说明中,定义多个数组和变量。收拾整理—数组的应用4.一维数组的使用数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。使用一维数组元素的一般格式为:数组名[下标]收拾整理—数组的应用5.一维数组的初始化除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值的方法。数组初始化赋值是指在定义数组时给数组元素赋予初值。数组初始化是在编译阶段进行的,这样可以减少运行时间,提高效率。一维数组初始化赋值的一般格式为:类型说明符数组名[常量表达式]={值,值……值};收拾整理—数组的应用活动指南:1)分团队讨论任务提出的问题。2)抢答。3)老师点评。4)进行程序设计并上机调试运行。①数据结构。申请一个带10个数组元素的数组来保存这10个实数,参考语句如下:②数据的处理。收拾整理—数组的应用可通过键盘输入的方式实现数组赋值,一般使用for循环来实现,参考语句如下:界面要求参考如图所示。收拾整理—数组的应用我来试一试:输入10名同学的数学成绩,计算平均成绩并在屏幕上显示。提示:1)数据结构。定义一个浮点型数组math[10],申请一个计算总成绩的浮点型变量total并赋初始值,申请一个浮点型变量ave来保存平均分。参考语句如下:收拾整理—数组的应用2)算法分析。①接收用户输入10个学生的数学成绩,并存放在数组math[10]中。②累加求出总成绩total,参考程序段如下:③利用总成绩total除以总人数,求出平均成绩ave。④输出平均成绩ave。3)界面参考如图所示。收拾整理—数组的应用我来归纳:1)数组是用来存放相同数据类型的值的列表。2)要用下标来访问数组的单个元素,下标从0开始。3)如果想遍历数组的每一个元素(输入、输出或进行处理),则可以用循环来实现。4)在数组中,不要使用比所定义的长度更多的元素。5)使用数组前一定要进行量化的操作。Case2捉迷藏—数据搜索捉迷藏—数据搜索任务描述:在一个二维字符数组name_list[10][10]中保存了奇葩团队的10个成员名单,如:相关知识:1.二维数组charname_list[10][10]是一个二维的字符类型数组。二维数组定义的一般格式是:捉迷藏—数据搜索定义一个一维的字符数组:charname[10]="liming";,那么这个字符数组name一次只能保存一个名字。空间分配图如图所示。捉迷藏—数据搜索它代表可以保存3个字符个数小于10的名字,内存空间分配图如图所示。从图可以看出,使用以下语句就可以实现一个团队名单的录入(设一个团队有6人)。捉迷藏—数据搜索2.数据搜索(1)数据搜索的概念数据搜索也叫数据查询,是指根据查询要求从一个计算机文件或数据库中提取所需要的数据的技术,是数据处理的基本技术之一。(2)两种数据查找方法1)顺序查找。2)二分查找。捉迷藏—数据搜索活动指南:1)数据分析。团队成员的名单已通过数组初始化的方式保存在一个二维字符数组name_list里,这些名字是随机排列的。2)算法分析。根据数据分析确定数据查找的方法——顺序查找。3)实现步骤如下:①变量的申请。可以设置接收查找名字的关键字变量nameSearch,控制数组循环的变量i,参考语句如下:捉迷藏—数据搜索②从键盘接收输入的姓名,利用顺序查找的方法查找名字,参考语句如下:4)程序参考界面如图所示。Case3排队—数据排序排队—数据排序任务描述:把从键盘输入的10个数按从小到大的顺序输出。相关知识:1.排序的概念排序是计算机内经常要进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列,分内部排序和外部排序两种。2.冒泡排序已知一组无序数据a[1]、a[2]、……、a[n],需要将其按升序排列。首先,比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变。再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变。再比较a[3]与a[4],以此类推,最后比较a[n-1]与a[n]的值排队—数据排序活动指南:1)数据分析。申请一个长度为10的整型数组保存输入的数据,参考语句如下:申请一个中间变量进行数据交换,申请两个整型变量来控制循环,参考语句如下:2)输入数据部分设计,参考语句如下:排队—数据排序3)数据处理部分设计。利用冒泡排序的方法对数据进行排序,参考语句如下:4)输出结果设计,参考语句如下:5)程序界面参考如图所示。排队—数据排序我来试一试:在上面活动中的每个数的前面加上姓名(如组成学生成绩),那么如何实现带姓名的成绩从小到大的排列显示?假设有成绩表(见表4-1):程序运行的参考界面如图所示。我来归纳:1)计算机数据处理的一个重要环节就是排序。2)冒泡排序算法可以实现数组数据的有序排列。Case4名片—结构体的应用名片—结构体的应用任务描述:卡片处理:将以下3张卡片的内容保存到计算机中,当用户输入一个卡号或姓名时,就能找到对应卡号的个人信息并显示。名片—结构体的应用相关知识:下面先来感受一个画面,如图所示。同样都是积木,可给人的感觉却完全不一样。左边画面的积木零散没有组织,右边画面的积木却是有组织的组合在一起,形成了一个明确的整体,因而积木在右边画面中显示了一些积木特有的性质与作用。名片—结构体的应用1.结构体的概念在实际问题中,一组数据往往具有不同的数据类型。2.结构体的构造构造一个结构体的一般格式为:3.结构类型变量的定义定义结构变量有以下3种方法,下面用上面定义的structstu为例来加以说明。1)先构造结构体,再定义结构变量。2)在构造结构体类型的同时定义结构变量。3)直接定义结构体类型变量。名片—结构体的应用4.结构变量的引用在程序中使用结构变量时,往往不把它作为一个整体来使用,但在ANSIC编译系统中允许具有相同类型的结构变量相互赋值。而对结构变量的使用,包括赋值、输入、输出、运算等都是通过结构变量的成员来实现的。引用结构体变量成员的一般格式是:例如:名片—结构体的应用5.结构变量的初始化和其他类型变量一样,结构体变量也可以在定义时指定初始值。名片—结构体的应用6.结构体变量的赋值结构体变量的赋值就是给各成员赋值,可用输入语句或赋值语句来完成。上例程序可以改为:名片—结构体的应用7.结构体数组的定义数组的类型可以是结构体类型,因此可以构建结构型数组。结构数组的每一个元素都是具有相同结构类型的下标结构变量。名片—结构体的应用8.结构体数组的具体应用例1:计算学生的平均成绩和不及格的人数,代码如下。名片—结构体的应用8.结构体数组的具体应用例1:计算学生的平均成绩和不及格的人数,代码如下。名片—结构体的应用活动指南:1.数据分析3张卡片的内容固定,卡片信息独立,可使用结构体数组的形式来保存这3张卡片的内容,参考语句如下:名片—结构体的应用2.算法分析1)本任务要根据输入的关键字(姓名或序号)查找卡片信息,由于姓名和序号是两个不同类型的数据,所以输入时要分开提示,参考语句如下:名片—结构体的应用2.算法分析1)本任务要根据输入的关键字(姓名或序号)查找卡片信息,由于姓名和序号是两个不同类型的数据,所以输入时要分开提示,参考语句如下:名片—结构体的应用2)卡片信息的搜索使用顺序查找法,参考语句如下:名片—结构体的应用2)卡片信息的搜索使用顺序查找法,参考语句如下:3.运行程序上机调试,运行程序,程序运行结果参考界面如图所示。名片—结构体的应用我来试一试:用结构体类型改写前面做过的学生成绩表排序程序。要求计算每个学生的总分,并按总分进行排名。学生成绩表见表4-2。提示:1.数据分析创建学生成绩记录结构,内容包括:姓名,成绩1,成绩2,总分,名次。参考语句如下:名片—结构体的应用2.算法分析1)输入学生成绩,并进行总分统计,参考语句如下:2)数据处理,按总分进行排序(冒泡排序),参考语句如下:名片—结构体的应用2)数据处理,按总分进行排序(冒泡排序),参考语句如下:3)输出排序后的结果,界面参考如图所示。名片—结构体的应用我来归纳:1)结构是一种构造数据类型,它允许由两个或多个属于不同或相同的数据类型的成员组成,形成一个独立的逻辑单元。2)同一结构的成员存储在相邻的内存单元中。3)结构声明通常放在程序的开始部分,位于头文件之后。4)使用“结构体变量名.成员名”的方式访问结构成员。5)可对结构体变量进行直接的赋值运算。6)数组元素的类型为结构的数组称为结构数组。Case5珍藏—数据的存储名片—结构体的应用任务描述:把从键盘输入的10个学生的成绩保存到硬盘的exam.dat文件里。相关知识:如图所示,又带来一个主题清晰的画面——存钱。1.以文件的方式存储数据文件是程序设计中的一个重要概念。“文件”一般是指存储在外部介质上的数据的集合。(1)C文件的本质从操作系统的角度来看,每一个与主机相连的输出输入设备都看作是一个文件。名片—结构体的应用(2)C文件规定在C语言中,没有输入输出语句,对文件的读写都是用库函数来实现的。ANSI规定了标准输入输出函数,用它们对文件进行读写。(3)C文件操作(数据存储方式)在C程序中使用文件,需要完成以下4步操作(简称4步法)。第1步:要声明一个FILE*类型的变量(也叫文件指针变量)。第2步:要使用fopen()函数打开文件。打开一个具体的文件(有相应的文件名),并指明该文件是用于输入还是输出。第3步:调用stdio.h中的函数完成对文件的读写操作。第4步:调用fclose()函数关闭文件。这名片—结构体的应用活动指南:1.数据分析输入10个学生的成绩,并保存,使用一个变量来接收即可,参考语句如下:要输入10个数,最好用循环来控制,申请控制循环的变量:文件操作的文件指针变量:名片—结构体的应用2.算法分析1)输入处理:一边输入数据一边进行保存,参考语句如下:2)界面设计。程序运行结果参考如图所示。名片—结构体的应用我来试一试:在以上任务中的每个成绩前加上一个姓名,那么如何进行保存?提示:数据的处理增加了一个字符串数组:那么,文件保存的语句应修改为:程序运行结果参考如图所示。名片—结构体的应用我来归纳:1)文件是数据存储的主要方式。2)在C语言中,文件的存储以字节为单位,称为流文件。3)C语言对文件的操作要经过4步。第1步:申请文件指针变量。第2步:文件打开。第3步:文件操作(读或写)。第4步:文件关闭。4)文件操作的函数都包含在库文件“stdio.h”中。5)用fprintf()函数可以实现指定格式数据的保存操作。Case6汲取—文件的读取名片—结构体的应用任务描述:假如在file1.txt文件中有如下难确定个数的数据,如图所示。相关知识:文件的读取使用fscanf()函数,它的一般格式是:fscanf(文件指针变量,格式字符串,输入表列);数据分析如在F盘下有一个圣诞字符画文件(mydata1.dat),如图所示。名片—结构体的应用第1步:申请文件指针变量。第2步:打开文件。第3步:如果文件存在,则读取文件内容;如果文件不存在,则报错。第4步:关闭文件。fclose(fptr);名片—结构体的应用综合起来,整个程序代码如下:程序运行的结果如图所示。名片—结构体的应用活动指南:1.数据分析文件的内容是整型数据,所以要申请整型的变量来保存读出的数据,参考语句如下:申请文件指针:FILE*fp;。保存总数大小的变量:inttotal=0;。数据较多,一行一般显示不下,因此申请变量i来控制一行显示的个数:名片—结构体的应用2.算法分析1)文件操作,参考语句如下:2)输出结果设计。名片—结构体的应用3.运行程序上机调试、运行程序,程序界面参考如图所示。名片—结构体的应用我来试一试:读取file2.txt文件中的数据,把它们放入结构体数组里进行总分从大到小的排序输出,并保存在file3.txt文件中。file2.txt文件中的数据如图所示。1.数据分析读取的数据结构是一个记录集合,要用结构体数组来保存,参考语句如下:名片—结构体的应用2.算法分析1)把从文件读出的数据放入结构体数组中,参考语句如下:名片—结构体的应用2)数据排序。3)复制排序结果(相当于文件的写操作),参考语句如下:我来归纳:1)fscanf()函数可以实现文件的读取操作。2)文件读取之前,使用指向文件的指针变量是否等于NULL来判断文件是否存在。3)文件读取时要使用feof()函数来判断文件是否结束。Case7组织管理—用函数组织程序组织管理—用函数组织程序任务描述:读如下程序,找出与以往程序不同的地方。组织管理—用函数组织程序任务描述:读如下程序,找出与以往程序不同的地方。组织管理—用函数组织程序相关知识:1.结构化程序设计结构化程序设计(structuredprogramming)是进行以模块功能和处理过程设计为主的详细设计的基本原则,其概念最早由迪克斯特拉(E.W.Dijikstra)在1965年提出,是软件发展的一个重要里程碑。(1)结构化程序设计的基本要点1)采用自顶向下,逐步求精的程序设计方法。2)使用3种基本控制结构构造程序。3)主程序员组的组织形式指开发程序的人员组织方式应以一个主程序员。组织管理—用函数组织程序(2)结构化程序设计的特点结构化程序中的任意基本结构都具有唯一的入口和出口,并且程序不会出现死循环。写书结构图如图所示。组织管理—用函数组织程序2.函数(1)函数的定义1)函数的传统定义:设在某变化过程中有两个变量x、y,如果对于x在某一范围内的每一个确定的值,y都有唯一确定的值与它对应,那么就称y是x的函数,x叫作自变量。2)函数在程序设计中的定义:C源程序是由函数组成的,虽然在前面各案例的程序中大都只有一个主函数,但实际程序往往由多个函数组成。(2)无参函数无参函数定义的一般格式如下:组织管理—用函数组织程序(3)有参函数有参函数定义的一般格式如下:3.函数的使用(函数调用)无参函数调用的一般格式为:4.局部变量和全局变量C语言中所有的变量都有自己的作用域。变量说明的方式不同,其作用域也不同。C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。组织管理—用函数组织程序活动指南:1)在VC6.0平台上把上述程序输入并进行调试、运行,观察程序运行效果。2)分团队讨论程序的结构与以往的程序有什么不同。3)以团队的方式来回答以下问题:①这个程序完成了什么功能?②程序设计有什么特色?③采用了什么数据结构来保存和处理数据,各种变量的作用域范围一样吗?④程序采用了什么样的结构来进行设计,与以往的程序设计比较,它有什么好处?⑤有没有更好的处理方法?4)画出函数调用的线路图。5)以团队的方式探讨改进此程序的更好的算法。6)教师对各环节学生的表现及时进行点评。组织管理—用函数组织程序我来归纳:1)结构化程序中的任意基本结构都具有唯一的入口和出口,并且程序不会出现死循环。2)结构化程序设计采用的方法:①自顶向下。②逐步细化。③模块化设计。④结构化编码。3)函数是程序中的一个相对独立的单元或模块,可以实现结构化程序设计的思想。4)自定义函数是用户在程序中根据需要自行编写的函数。5)函数要先定义后使用。Case8快乐生活—班级学生期末成绩处理综合演练快乐生活—班级学生期末成绩处理综合演练任务描述:以团队合作的方式完成对指定班级(如1、2或3班)的学生期末考试成绩(至少3科成绩)进行总分排名的操作。程序要实现以下功能:1)直接从创建好的班级成绩表文件(stu1.dat、stu2.dat或stu3.dat)中读取数据。2)对指定班级成绩表进行如下操作:①对每位同学进行成绩汇总。②按总分进行从高到低的排序,并记录各同学的名次。3)把对应班级排序好后的结果保存到另一文件(paixu1.txt、paixu2.txt或paixu3.txt)中。4)在屏幕上显示对应班级成绩排序后的结果。快乐生活—班级学生期末成绩处理综合演练相关知识:软件设计是一个将需求转变为软件陈述(表达)的过程。1.任务软件设计的任务是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案。2.设计阶段(1)概要设计概要设计阶段主要包括以下几点:1)结构设计。 2)接口设计。3)全局数据结构设计。4)过程设计。(2)详细设计快乐生活—班级学生期末成绩处理综合演练3.设计要素软件设计包括软件的结构设计、数据设计、接口设计和过程设计。1)结构设计:定义软件系统各主要部件之间的关系。2)数据设计:将模型转换成数据结构的定义。3)接口设计:软件内部,软件和操作系统间以及软件和人之间如何进行通信。4)过程设计:系统结构部件转换成软件的过程描述。快乐生活—班级学生期末成绩处理综合演练4.指导方针1)设计应该展现层次结构,使得软件各部分之间的控制更优。2)设计应当模块化,也就是说,软件应在逻辑上划分为实现特定功能和实现子功能两部分。3)设计应当由清晰且可分离的数据和过程表达来构成。4)设计应使得模块展现独立的功能特性。5)设计应使得界面可以降低模块之间以及与外部环境的连接的复杂性。快乐生活—班级学生期末成绩处理综合演练活动指南:1.分配任务1)信息的采集与整理。创建相关信息文件,包括程序介绍PPT、各班级学生期末考试成绩信息文件(stu1.dat、stu2.dat、stu3.dat)。(1~2人)2)程序分5块完成。①程序展示界面(包括团队标志、口号、团队人员分工信息等)文件的创建(xuelogo.txt),并用程序实现以文件读取的方式完成界面的动态展示功能。(1人)②指定班级的学生期末考试成绩信息文件数据读入部分的程序设计。(1人)③各学生按总分进行从大到小的排序处理的程序设计。(1人)④设计排名后的学生成绩保存程序(文件操作)。(1人)⑤设计排名后的学
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年秋新教材译林版九年级上册英语Unit 8 Detective stories单元测试卷(含答案)
- 江苏省苏州市昆山市2025-2026学年四年级上学期期末语文试题(文字版含答案)
- 2026年医院后勤运维管理专员医疗卫生事业招聘考试笔试试题(含答案)
- 2026年职业卫生宣教医疗卫生事业招聘考试笔试试题(含答案)
- 2026年烟草财务核算外勤专员烟草公司招聘考试笔试试题(含答案)
- 2026 年重症急性胰腺炎早期肠内营养护理个案
- 2026年秋季高中开学第一课 防溺水安全教育教学设计
- 2026年秋季高中开学主题班会 行为规范与品德培养课件
- 2026年秋季生物科学专业开学第一课 职业发展前景分析教学设计
- 红十字会救护员培训理论考试试卷及答案
- 2026年云南省地矿测绘院有限公司招聘(37人)笔试备考试题及答案详解
- 2026浙江省交通投资集团有限公司成员单位中后台职能岗位(第二批)联合招聘15人笔试模拟试题及答案详解
- 临床成人危重症ENI全程防治新进展
- 《PLC应用项目工单实践教程》课件 模块9 S7-1500 PLC网络通信应用
- 《PLC应用项目工单实践教程》课件 模块3 S7-1500PLC定时器计数器指令应用
- 益阳事业单位笔试真题2024
- 涂装工考试:初级涂装工题库知识点(题库版)
- 儿童护理:儿童保健各年龄儿童保健课件
- NB/T 10731-2021煤矿井下防水密闭墙设计施工及验收规范
- LY/T 2111-2013美国白蛾防治技术规程
- GB/T 25000.10-2016系统与软件工程系统与软件质量要求和评价(SQuaRE)第10部分:系统与软件质量模型
评论
0/150
提交评论