欢迎来到天天文库
浏览记录
ID:61672956
大小:439.82 KB
页数:34页
时间:2021-03-08
《C语言第三次大作业.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★C语言第三次大作业班级:机电***姓名:*******学号:*********★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★题目一:利用数组编写一个简单的成绩管理系统,要求有效依据至少150条,利用程序设计模块化思想,自定义函数不少于5个。其他要求:1、班级的人数由用户键盘输入;2、录入学生学号和考试成绩3、数据分析功能包括计算课程总分和平均分、按成绩由高到低排出成绩表、按学号由小到大排出成绩表、可按学号查询学生成绩及排名、按优秀(90~100),良好(80~89),中等(70~79),及格(60~69),不及
2、格(<60)5个类别统计成绩并计算百分比和输出每个学生的学号、成绩及课程总分和平均分。1、题意及算法分析根据题目要求,结合程序设计模块化思想,可自定义7~9个函数,分别实现相应的功能。根据题目要求可定义学号数组为整形数组,平均分、成绩数组为float类型;定义宏常量N,使得数组足够大;成绩和学号的排序可采用交换法、选择法、插入排序、冒泡法、快速排序法等,本题采用交换法排序,在采用交换法排序的时候可以通过定义一个标志变量(中间变量)实现;通过学号查找成绩可通过线性查找(顺序查找)或折半查找,本题采用的是顺序查找,采用顺序查找可以用for循环语句实现,查找次数最多为总人数n。统计等级时,利用整数
3、除法(区别于实数除法),结合switch语句和计数控制循环语句即可得到不同等级所占百分比。菜单功能选择是可使用switch-case条件结构。要注意的是数组的下标从0开始;只能逐个引用数组元素,不能一次引用整个数组;数组做函数形式参数时,数组的大小可以不出现在数组名后面的方括号内;被调用函数的实际参数用数组名或数组定义式。2、NS流程图输入学生人数录入各个学生的学号和成绩无限循环是否按ESC键退出否是相等常量1常量2不等不等相等相等常量3常量不等4不等相等相等计按按按统退算成学学计出课绩各号号等循程由由查级总高小询所占环分到到学的和低大百生分平排排成比均出出绩分成成及绩绩其表表成绩
4、常量5不等相等常量6不等输其他常量不等相等出每个输学出生“的对学不号起成,绩没及有重新选择功能课该程功的能总选分项和!平均”分传统流程图:开始输入学生总人数录入各个学生的学号和成绩是否按ESC键退出Y结束NN输入是否为数字Y功能1常量1常量2功能2常量3功能3常量4功能4常量5功能5功能6常量6default功能7注:功能1:计算课程总分和平均分功能2:按成绩由高到低排出名次表功能3:按学号由小到大排出成绩表功能4:按学号查询学生排名及其成绩功能5:统计各等级所占的百分比功能6:输出每个学生的学号、成绩,课程总分和平均分功能7:输出“对不起,没有该功能选项!”breakbreakbreak
5、breakbreakbreakbreak3、调试及改错1、缺少取地址运算符“&”写好程序后,解决ERROR后会情不自禁的执行程序,一执行便弹出如下对话框,回过头看程序,发现intread(longnumber[],floatscore[])函数中“printf("请输入学生总人数:");ret=scanf("%d",n);”的语句中出现一个明显的低级错误,缺少取地址运算符“&”。2、交换法排序逻辑错误解决了上述错误后,程序运行时执行功能2,出现如下错误,并没有达到预期交换成绩的目的,但是学号却排序正确,可以初步确定错误出现在voidsort(longnumber[],floatscor
6、e[],intn)函数中。检查发现标志变量temp为起到作用,交换法语句中出现逻辑错误。错误的程序语句及修改如下:voidsort(longnumber[],floatscore[],intn){inti,j;floattemp;longm;for(i=1;i7、m;}printf("");for(i=0;i
7、m;}printf("");for(i=0;i
此文档下载收益归作者所有