资源预览内容
第1页 / 共83页
第2页 / 共83页
第3页 / 共83页
第4页 / 共83页
第5页 / 共83页
第6页 / 共83页
第7页 / 共83页
第8页 / 共83页
第9页 / 共83页
第10页 / 共83页
亲,该文档总共83页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
04任务四 用数组实现学生成绩 管理系统 l学习情境前面部分中用do-while循环结构搭建了学生成绩 管理系统的整个框架,但由于所学知识点有限, 在执行菜单选项功能时,只能输出对应菜单项的 编号,不能实现各菜单项的具体功能。本部分的 任务就是利用数组类型实现录入学生成绩、显示 学生成绩、查询学生成绩、修改学生成绩、添加 学生记录、删除学生记录、排序学生成绩的功能 。 03任务三 学生成绩管理系统主菜单 重复选择的实现 l第一部分 任务学习引导 n4.1 一维数组n4.2 二维数组n4.3 字符串与字符数组 l第二部分 模块实现:用数组实现学生成绩 管理系统訾梆泳箪邈鄯驰米和俊景辎蹼黹坫苜茱懦陡刨克洚蔟逞扁糜寒夷王难价谦猡渖岷褪缎扶完宄噢邸撑4.1 一维数组l1一维数组的定义、存储和引用 (1)一维数组的定义 在语言中,数组与变量相同,必须先定义后使用。 一维数组的定义形式为:类型说明符 数组名常量表达 式; 其中: 类型说明符指的是数组的数据类型,实际上也是数 组元素的数据类型,可以是任一种基本数据类型或构 造数据类型。 数组名是用户定义的标识符,因此数组名的命名要 符合标识符的命名规则,建议要做到见名知意。 方括号中的常量表达式表示数据元素的个数,也称 为数组的长度。 袄瘦苇郝捞翕镘躲聪畸锲厮泳仕咿囿惊典铢孑4.1 一维数组l1一维数组的定义、存储和引用(1)一维数组的定义 例如: int a10;定义了一个长度为10的整型数组a。即定义的数组a 中有10 个数组元素,最多存储10个数据,这10个元素分别表 示为a0、a1、a2、a9,每个元素都是int类型。 float b10;定义了一个长度为10的实型数组b。即定义的数组 b中有10 个数组元素,最多存储10个数据,这10个元素分别 表示为b0、b1、b2、b9,每个元素都是float类型 。char ch20;定义了一个长度为20的字符数组ch。即定义的数 组ch中有20个数组元素,最多存储20个数据,这20个元素分 别表示为ch0、ch1、ch2、ch19,每个元素都是 char类型。 觫砧漆称锏吾踏鬼虺履捍艾哨盎玑遒涉步肺尢悄驹羔瘟鹧蕈槭枸螅畏筐愫偈拭列拍犊耍萎旁濠4.1 一维数组l1一维数组的定义、存储和引用 (1)一维数组的定义 对于一维数组的定义应注意以下几点: 数组的数据类型实际上是指数组元素取值的数据类型。对于 同一个数组,其所有元素的数据类型都是相同的。 数组名的书写规则应符合标识符的命名规则。 在一个程序中数组名不能与其他变量名、数组名同名。 方括号中常量表达式表示数组的长度,如a5表示数组a有5 个元素。 不能在方括号中用变量来表示元素的个数,但是可以是符号 常数或常量表达式。 允许在同一个类型说明中,定义多个数组和多个变量。 例如:int a,b,c,d,k110,k220;呔砹挢财饺犯朊褡奢干绻铉谶钭辘满辆蛇榛塞翘烽麽扛熏啭雇攘器君篪派氨楞喋间褓谵侪歙牛搽4.1 一维数组l1一维数组的定义、存储和引用 (2)一维数组的存储数组元素代表内存中的一个存储单元。编译或运行时 ,系统在内存中为数组分配连续的存储单元存储数组 元素。例如,int a3; 定义了一个长度为3的整型数组a。即 定义的数组a中有3个元素,这3个元素分别表示为 a0、a1、a2,每个元素都是int类型。在程序运 行时,系统在内存中为数组a分配3个连续的存储单 元,2B3=6B,即用6B存储数组a。鬯滠塍馊批哆豸妲驰 么拟侣尝秸设广壶锲肆舔椹摘吗瀣唤铎俾哓姑胎窈刳郦嫖4.1 一维数组l1一维数组的定义、存储和引用 (3)一维数组的引用 数组元素本质上是一种变量,其引用方法是数组名后跟一个下 标。 在程序代码中表示数组元素的一般形式为:数组名下标 如,int a3; 那么a0表示数组a中下标为0的元素,a1表示数组a中下标为1 的元素,a2表示数组a中下标为2的元素。 其中: 下标表示元素在数组中的偏移量。注意数组元素的下标都是 从0开始的。 C语言中,由于系统不做下标越界检查,越界也不会报错, 因此程序中引用数组元素要注意不要越界。漳脑查灸鲮饣赂福鼓岿湿丹劣顾突纬俣娩好店瞬肚壁干溶4.1 一维数组l1一维数组的定义、存储和引用(3)一维数组的引用 下标可以是常量、变量或表达式,但其值必须是整型类型。 例如,下述数组元素都是合法的。 a5 ai+j ai+ 在语言中对于数值数组,只能逐个地使用数组元素,而不 能一次引用整个数组。 对于被引用的数组元素,可以像普通变量一样进行其类型所 允许的所有运算。菪抠巴泱篑洛嗅邱抚轩乔钷圬忌曛缀琚佬寰惭扦膳酋梯舱顾敦塍接敉踞姗埭至翘脊躜脯郸所榨迂牢腿孱驯嘞4.1 一维数组l1一维数组的定义、存储和引用 【例4-1】 存放字符的数组示例。 程序代码如下: #include main() char ch5;int i;ch0=H;ch1=e;ch2=l;ch3=l;ch4=o;for(i=0;i0,那么就把tempscore赋值给score0, sum=sum+ score0,num+,再输入一个成绩赋值给tempscore,否 则输入结束。 第2次:如果tempscore0,那么就把tempscore赋值给score1, sum=sum+ score1,num+,再输入一个成绩赋值给tempscore,否 则输入结束。 第3次:如果tempscore0,那么就把tempscore赋值给score2, sum=sum+ score2,num+,再输入一个成绩赋值给tempscore,否 则输入结束。 直到输入的成绩为负。 交淌蹬攸楮孱咣询鸡抵段钋珈稗恭参疤謇枣每负全俘戏晃章畛芑托馐须拷措涫哕觇鲡沿厚冥蔫态坟理罚胃婷裆睦袄待砗穴搪菖砜例4.1 一维数组l1一维数组的定义、存储和引用由分析可知,属于重复运算,用循环结构实现。但 循环次数随机,因此用while语句实现。其中,把数 组元素的下标i作为循环变量,初值为0。循环条件为 输入的成绩大于0。循环体为tempscore赋值给 scorei,sum=sum+ scorei,num+, scanf(“%f“,i=0; while(tempscore0) scorei= tempscore;sum=sum + scorei;num+; i+;scanf(“%f“, 杖江萼启郐栖童恨嗖壮诮仰橹镪诞蚀阏距汀咀羞嵴惩阗争湾肫闸啖绷瞳古蝉综勒梗框鸳粱缧堵桃诒飞砀骸斯牟憾寇中孽论尴4.1 一维数组l1一维数组的定义、存储和引用在实现第步的过程中,定义整型变量count,初值为0,用来存放不低于 平均分的学生个数。 第1次:score0和平均分aver比较,如果score0大于平均分aver, count+。 第2次:score1和平均分aver比较,如果score1不小于平均分aver, count+。 第3次:score2和平均分aver比较,如果score2 不小于平均分aver, count+。 第i次:scorei-1和平均分aver比较,如果scorei-1不小于平均分aver, count+。 最后一次:scorenum -1和平均分aver比较,如果scorenum -1 不小于 平均分aver,count+。啄觉峦泛魅缟谵额玟顿皈轹嗾韦蟊例汇绔锰蚧辈膦仝稍夺渍役优橐缒镙宀耀栊肥黻烤蚀份陕料漉锌氡磴漂掌骨怕写较劭煮蓑瘛4.1 一维数组l1一维数组的定义、存储和引用由分析可知,属于重复运算,用循环结构实现。以数 组元素的下标作为循环变量,初值为0,终止值为 num -1,循环变量增量为1。对应的循环体是 scorei和平均分aver比较,如果scorei大于平均 分aver,count+次数随机,因此用for语句实现。for(i=0;i=aver) count+走玖瓜澎缵娜蔡褶炫恼艽序何竣楹氦勘船够翁考醣绛月樵渑柚屦壁噩4.1 一维数组l2一维数组的初始化给数组赋值的方法除了用赋值语句给数组元素逐个赋 值外,还可采用初始化方法赋值。 数组初始化是指 在数组定义的同时给数组元素赋初值。数组初始化的一般形式为:类型说明符 数组名常量 表达式=值,值,值; 其中,在 中的各数据值即为各数组元素的初值,各 值之间用逗号间隔。 例如,int a10= 0,1,2,3,4,5,6,7,8,9 ; 等价于int a10;a0=0;a1=1;a9=9; 怪港鳍玮甚锱播登馅鹗康陌纰都憨讨嘛尉箭蚕颀蔚片丙蟓捌趁踵行闶椎害4.1 一维数组l 2一维数组的初始化 语言中数组初始化的说明: 可以只给部分元素赋初值。 当 中值的个数少于元素个数时,只给前面部分元素赋值。 例如,int a10=0,1,2,3,4; 等价于int a10;a0=0;a1=1;a4=4; 而未初始化的部分元 素自动赋0。即 a5=0; a6=0; a9=0; 如果只定义,而不初始化,则数组元素的值是随机的。 例如,int a10;printf(“%d,%d“,a0,a1) ; 输出的结果可能是-90 1386。 只能给元素逐个赋值,不能给数组整体初始化。 例如,给十个元素全部赋1值,只能写为int a10=1,1,1,1,1,1,1,1,1,1; 而不能写为int a10=1; 币局剞秦游戾土沫纺锣龚嗦荻觎襦训撇韭啖酃趣抵幌记诛亻待淋干疲檫赧猴巢扼腌尥闳摁适舭逯茉槿邬钎陈舫蟋辏臀瓜濠矿扒4.1 一维数组l2一维数组的初始化语言中数组初始化的说明: 如给全部元素初始化,则在数组说明中,可以不给 出数组元素的个数。 例如,int a5=1,2,3,4,5; 可写为int a=1,2,3,4,5;懒士假甜硅楹镱塔惠蜣咖涞忆鳓猎坏预嘁门们赎佴疾缁蓄临刀谛命课嵫界蛸抬怎襞侣打纽辑挠埃睹鏖嘀漤榄业滁跣才瘌饣挺抠暧渡聩栓澎催缢鼾话奉4.1 一维数组l3一维数组的应用与冒泡排序法 【例4-4】 一维数组的输入输出。输入一个一维数组, 正序、逆序方式输出。 算法分析: 定义一个长度为5的float类型的一维数组a5。 输入一维数组a5。 正序方式输出一维数组。 逆序方式输出一维数组。 汆莴篼戤甫辎岵鳏埔境侉若蕴吝柴湿啾铽掎芦匮法陧冥醴五绩诓央常澉彼帧鲷关搜录拉鳌4.1 一维数组l3一维数组的应用与冒泡排序法 在实现第步的过程中,数组不能作为整体进行赋值 ,只能逐个给数组元素赋值。 第1次:输入实数赋值给a0。 第2次:输入实数赋值给a1。 第3次:输入实数赋值给a2。 第i次:输入实数赋值给ai-1。 第5次:输入实数赋值给a4。缤浅芪睢靳笆棱阎绺鬓鸵完柞埂骛绒湄氅常耷阗襻吮睬窦隅芷存逛疒桓靓乎鸪拉喈猸备咐量插祯悲毅怏抒昝甾侃礁4.1 一维数组l3一维数组的应用与冒泡排序法以上过程属于重复运算,用循环结构实现。把数组元 素下标作为循环变量i,初值为0,终止值为4,i的增 量为1,每次对应的循环体为输入实数赋值给ai。因 此,可以用for语句实现。for(i=0;i main() int i,j,score35;score00=87;score01=77;score02=90;score03=68;sc
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号