C语言程序设计-实验解读_第1页
C语言程序设计-实验解读_第2页
C语言程序设计-实验解读_第3页
C语言程序设计-实验解读_第4页
C语言程序设计-实验解读_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息系统程序设计实验(信息系统程序设计实验(C语言)语言)一、课程设计目的一、课程设计目的o C语言程序设计课程设计是电子信息、光语言程序设计课程设计是电子信息、光信息专业集中实践性环节之一,是学习完信息专业集中实践性环节之一,是学习完C语言程序设计课程后进行的一次全面的综合语言程序设计课程后进行的一次全面的综合练习,其目的在于加深对程序设计基本知识的练习,其目的在于加深对程序设计基本知识的理解,掌握使用理解,掌握使用C语言进行模块化软件设计的语言进行模块化软件设计的基本方法,提高通过编写程序解决实际问题的基本方法,提高通过编写程序解决实际问题的能力,为今后从事设计工作和后续各种编程课能力,为

2、今后从事设计工作和后续各种编程课程的学习打好基础。程的学习打好基础。二、课程与相关课程的联系与分工二、课程与相关课程的联系与分工o 先修课为先修课为C语言程序设计和算法与数据语言程序设计和算法与数据结构。后续课为数据库原理与应用和结构。后续课为数据库原理与应用和软件系统基础。软件系统基础。o 本课程设计是为了让学生巩固本课程设计是为了让学生巩固C语言程序设语言程序设计课程学到的知识,熟练计课程学到的知识,熟练C开发工具,运用开发工具,运用算法与数据结构课程学到的算法设计思想算法与数据结构课程学到的算法设计思想解决实际应用问题。并为后续课程数据库原解决实际应用问题。并为后续课程数据库原理及应用和

3、软件系统基础等奠定基础。理及应用和软件系统基础等奠定基础。教学要求教学要求o 为了使学生从课程设计中取得实际效果,对课为了使学生从课程设计中取得实际效果,对课程设计题目分成二类:一类为基本设计题目,程设计题目分成二类:一类为基本设计题目,主要是程序设计的常用算法的综合训练,要求主要是程序设计的常用算法的综合训练,要求学生独立完成;另一类为综合设计题目,具有学生独立完成;另一类为综合设计题目,具有较高的难度和工作量,以较高的难度和工作量,以23人组成的项目人组成的项目小组、团队合作的方式完成。学生可根据自己小组、团队合作的方式完成。学生可根据自己的实际情况选择综合设计题目完成课程设计,的实际情况

4、选择综合设计题目完成课程设计,鼓励学生选择综合设计题目、培养团队合作的鼓励学生选择综合设计题目、培养团队合作的能力。能力。基本要求:基本要求:o 要求学生做好预习,掌握设计过程中涉及到的要求学生做好预习,掌握设计过程中涉及到的算法,按设计流程编程,上机调试通过,验证算法,按设计流程编程,上机调试通过,验证结果并进行分析、完成课程结果并进行分析、完成课程实验实验设计报告,最设计报告,最后对所完成的工作进行答辩。后对所完成的工作进行答辩。实验安排实验安排实验安排实验安排实验安排实验安排实验安排实验安排课程课程实验的实验的实施过程实施过程o 整个课程整个课程实验在综合实验阶段要分成实验在综合实验阶段

5、要分成以下几个以下几个阶段进行:开题,系统设计,系统编码实现,阶段进行:开题,系统设计,系统编码实现,系统测试,系统评价与验收。系统测试,系统评价与验收。o (1) 开题开题o 课程设计题目来自教师指定的参考题目,也可课程设计题目来自教师指定的参考题目,也可自由选题,自由选题,但要老师批准。但要老师批准。特别是鼓励有创新特别是鼓励有创新性的题目或是在已知题目的基础上进行创新。性的题目或是在已知题目的基础上进行创新。课程课程实验的实验的实施过程实施过程o (2) 系统设计系统设计o 系统设计的任务是对所确定的题目从问题需求、系统设计的任务是对所确定的题目从问题需求、数据结构、程序结构、难点及关键

6、技术等方面数据结构、程序结构、难点及关键技术等方面进行分析,形成的系统设计方案,并进行详细进行分析,形成的系统设计方案,并进行详细的分工。在确定解决方案框架过程中,考虑怎的分工。在确定解决方案框架过程中,考虑怎样使程序结构清晰、合理、简单和易于调试,样使程序结构清晰、合理、简单和易于调试,并确定每个函数的功能以及函数之间的调用关并确定每个函数的功能以及函数之间的调用关系。每个明确的功能模块程序一般不超过系。每个明确的功能模块程序一般不超过60行,否则要进一步划分。行,否则要进一步划分。课程课程实验的实验的实施过程实施过程o (3)系统编码实现系统编码实现o 小组成员根据初步的系统设计方案,对系

7、统编小组成员根据初步的系统设计方案,对系统编程实现。程实现。o (4) 系统测试系统测试o 在各程序模块编码完成并集成后,就可以开始在各程序模块编码完成并集成后,就可以开始对整个系统进行测试。对整个系统进行测试。课程课程实验的实验的实施过程实施过程o (5) 书写课程设计报告书写课程设计报告o 课程设计报告应至少包含以下内容:课程设计报告应至少包含以下内容:o 问题描述:题目要解决的问题是什么。问题描述:题目要解决的问题是什么。o 设计说明:模块设计和主要算法思想(用设计说明:模块设计和主要算法思想(用流程图表示)等。流程图表示)等。o 调试报告:调试过程中遇到的主要问题及调试报告:调试过程中

8、遇到的主要问题及解决方法;对设计和编码的回顾讨论和分析;解决方法;对设计和编码的回顾讨论和分析;改进设想;经验和体会等。改进设想;经验和体会等。o 。课程课程实验的实验的实施过程实施过程o (6) 系统评价与验收系统评价与验收o 通过答辩的形式对程序的功能进行评价与验收通过答辩的形式对程序的功能进行评价与验收课程设计指导方式课程设计指导方式o 前面基础实验前面基础实验由由教师布置任务,学生在课堂上教师布置任务,学生在课堂上调试完成,写出实验报告,提交上来。调试完成,写出实验报告,提交上来。o 综合实验,由综合实验,由教师召开课程设计动员会,进行教师召开课程设计动员会,进行分组,指定课程设计的题

9、目和内容,讲解部分分组,指定课程设计的题目和内容,讲解部分题目要求。学生在规定的时间内,经过小组的题目要求。学生在规定的时间内,经过小组的协同工作和指导教师的辅导,完成题目。最后协同工作和指导教师的辅导,完成题目。最后由指导教师进行验收及成绩评定。由指导教师进行验收及成绩评定。课程课程实验实验考核方法及成绩评定考核方法及成绩评定o 1、通过程序实现、设计报告和学习态度等综、通过程序实现、设计报告和学习态度等综合考评,评定成绩。合考评,评定成绩。课程课程实验实验考核方法及成绩评定考核方法及成绩评定o 2、评分标准、评分标准 从以下五个方面评出课程设计完成后的综合分:从以下五个方面评出课程设计完成

10、后的综合分:o 设计报告占设计报告占30%o 系统完成情况及编程工作量占系统完成情况及编程工作量占30%o 编程难度和程序亮点占编程难度和程序亮点占10%o 回答教师所提出的问题占回答教师所提出的问题占20%o 课程设计过程中的工作态度(考勤)占课程设计过程中的工作态度(考勤)占10%课程课程实验实验考核方法及成绩评定考核方法及成绩评定o (2) 以项目小组、团队合作方式完成的综合设以项目小组、团队合作方式完成的综合设计题目,对每一组按以上标准给出综合分,并计题目,对每一组按以上标准给出综合分,并将该分作为这组中最优秀同学的得分,其他同将该分作为这组中最优秀同学的得分,其他同学的分数根据其在组

11、中所承担的任务和表现进学的分数根据其在组中所承担的任务和表现进行相应的调整。行相应的调整。o (3) 根据课程根据课程综合实验综合实验设计的选题新颖性、独设计的选题新颖性、独立分析解决问题的能力和创新精神等,予以适立分析解决问题的能力和创新精神等,予以适当加分。当加分。主要教材及参考书主要教材及参考书o 参考教材:参考教材:o 2 曹哲曹哲. C语言实验与课程设计语言实验与课程设计. 机械工业机械工业出版社出版社. 2010.o C语言课程设计作者:刘博,董学文编著:语言课程设计作者:刘博,董学文编著:机械工业出版社机械工业出版社o C语言程序设计综合实验指导主编:颜晖,语言程序设计综合实验指

12、导主编:颜晖,张引张引 出版社:浙江大学出版社出版社:浙江大学出版社指导书:指导书:o C程序设计基础与实验作者:颜晖程序设计基础与实验作者:颜晖 出版社:出版社:浙江大学出版社浙江大学出版社o C程序设计题解与上机指导(第二版)作程序设计题解与上机指导(第二版)作者:谭浩强主编者:谭浩强主编 清华大学出版社清华大学出版社o C语言实验与课程设计语言实验与课程设计. 王新,孙雷编著清华大学出版社两大上机环境两大上机环境o VC+,Visual C+ 6.0n 基于基于Windows平台平台n 支持支持C和和C+,需建工程,需建工程/工作区,工作区,可能死机可能死机n Microsoft Vis

13、ual C+ 6.0 图标图标o TC,Turbo C 2.0n 基于基于DOS平台,不支持鼠标、复制平台,不支持鼠标、复制/粘贴粘贴n 标准标准Cn D:TCTC.BAT 或或 D:TCBINTC.EXEVC+上机关键操作上机关键操作o 建立文件建立文件n FileNewFileC+Sourcen 输入文件名并选择路径输入文件名并选择路径o 编写并保存代码编写并保存代码o 编译:编译:BuildBuildn 按提示建立按提示建立workspaceo 运行:运行:BuildExecuteo 关闭:关闭:FileClose WorkspacesTC上机关键操作上机关键操作o 注:按注:按Alt+

14、第一字母进入相应主菜单项第一字母进入相应主菜单项o 建立文件:建立文件:FileNewo 编写代码:编写代码:Edito 保存:保存:FileSaven 输入文件名输入文件名o 编译:编译:CompileBuild allo 运行:运行:RunRuno 查看结果:查看结果:RunUser screenTC上机快捷键上机快捷键(1)o 进入,退出,全屏进入,退出,全屏/窗口窗口nCtrl-Enter切换全屏切换全屏/窗口模式窗口模式nF10进入主菜单进入主菜单o 程序编辑,存盘,装入程序编辑,存盘,装入nInsert,Delete,BackSpace,Home,EndnAlt-E进入程序编辑窗口

15、进入程序编辑窗口nF2源程序存盘源程序存盘nF3打开源程序打开源程序o 编译、连接编译、连接nCompiler、Link、Build AllTC上机快捷键上机快捷键(2)o 运行、中止运行、中止n Ctrl-F9运行程序运行程序n Alt-F5察看用户屏幕察看用户屏幕n Ctrl-Break停止程序运行停止程序运行o 调试调试n F8/F7单步跟踪单步跟踪n Ctrl-F7增加观察变量增加观察变量n Ctrl-F2停止程序调试停止程序调试n Ctrl-F8设置断点设置断点C语言相关文件语言相关文件编写程序必须的步骤编写程序必须的步骤o 编辑(编辑(Edit)o 预编译预编译n预处理命令:预处理

16、命令:#include, #define, #if 等等o 编译(编译(Compile)n源文件源文件目标文件目标文件.C.OBJ,.ASM.OBJo 连接(连接(Link)、组建()、组建(Build=编译连接)编译连接)n目标文件目标文件+库文件库文件执行文件执行文件.OBJ+.LIB.EXEo 运行(运行(Run)o 调试(调试(Debug)关于关于Turbo C环境环境(1)o 设定工作目录设定工作目录n FileChange dir菜单项,键入工作目录菜单项,键入工作目录n 按按Alt-F进入进入File主菜单,或主菜单,或F10进入主菜单行进入主菜单行o 装入文件装入文件n Fil

17、eLoad菜单项菜单项n 回车并在列表中选择源文件回车并在列表中选择源文件o 新建文件:新建文件:FileNewo 修改后保存文件修改后保存文件n 常规保存常规保存FileSaven 或或FileWrite to将文件另存为将文件另存为关于关于Turbo C环境环境(2)o 编译文件编译文件n CompileBuild all菜单项菜单项n 按按Alt-C进入进入Compile主菜单,或按主菜单,或按F10n 成功指示:成功指示:Successn 编译结果编译结果o Linking E:xxxxxx.EXEo 运行文件运行文件n RunRun菜单项,菜单项,Ctrl-F9n 按按Alt-R进入

18、进入Run主菜单主菜单关于关于Turbo C环境环境(3)o 观看运行结果观看运行结果n RunUser screen,Alt-F5o 单步跟踪单步跟踪n RunStep over,F8o 观察变量观察变量/表达式表达式n Break/watchAdd watch,Ctrl-F7n 按按Alt-B进入进入Break/watch主菜单主菜单关于关于VC+环境环境o 启动启动位置位置n开始菜单开始菜单Microsoft Visual Studio 6.0nMicrosoft Visual C+ 6.0o 编译错误时错误列表编译错误时错误列表n编译编译子窗口子窗口可拉大,滚动轮显示不同错误,双击错误

19、点可拉大,滚动轮显示不同错误,双击错误点o 死机问题(编译死机,死机问题(编译死机,红红无法关闭窗口)无法关闭窗口)nCtrl-Alt-Del启动任务管理器启动任务管理器n应用程序结束任务应用程序结束任务n重新运行重新运行VC+ 6.0o 窗口直接关闭,程序最后追加窗口直接关闭,程序最后追加getchar();语句语句上机部分问题(上机部分问题(1)保存问题)保存问题o 文件保存文件保存n新建文件的操作新建文件的操作步骤步骤错误错误o TurboC:FileNew,FileSave,xxx.Co VC+中步骤:新建文件中步骤:新建文件C+Sourcexxx.Cn源程序的源程序的扩展名必须为扩展

20、名必须为C,不能为其它,也不能有多个,不能为其它,也不能有多个n基本名由字母、数字、下划线、减号等组成,基本名不要基本名由字母、数字、下划线、减号等组成,基本名不要包含小数点、空格、加号等,最好不要超过包含小数点、空格、加号等,最好不要超过8个字符,个字符,各级各级目录名目录名也等同命名也等同命名n不合适不合适的文件名如:的文件名如:o ex1-1.txt,ex1.1.c,ex1.1,ex1-1.cppn上机考上机考以源程序为依据,注意源程序以源程序为依据,注意源程序保存保存上机部分问题(上机部分问题(2)拼写问题)拼写问题o do /no int n:o #include;o ()混淆混淆o

21、 includ,stidoo mian,pritfo %do no int n;o #include上传系统的要求上传系统的要求o 源程序的编写、运行、调试、上传可以使用源程序的编写、运行、调试、上传可以使用Visual C+环境环境o 但编程题的但编程题的自动判分自动判分必须使用必须使用TurboC编译编译n D:TCTC.BAT或或D:TCBINTC.EXEo 并且程序的文件名、各级目录名并且程序的文件名、各级目录名n 不能使用不能使用中文中文,仅字母、数字、下划线、减号,仅字母、数字、下划线、减号o 注意输出与样例应注意输出与样例应严格一致严格一致,包括大小写,包括大小写n Yes、YE

22、S、yes互不相同互不相同实验一实验一 基础实验基础实验o 1、复习回顾基本语句复习回顾基本语句o 2、强调结构程序设计的概念、强调结构程序设计的概念 学会画算法流程图。学会画算法流程图。o 3、通过例题,习题加强基本的程序设计的能力、通过例题,习题加强基本的程序设计的能力1、基本控制结构(、基本控制结构(特别注意特别注意+,-运算符进运算符进入条件表达式入条件表达式) 流程控制语句流程控制语句 条件语句条件语句ifelseifelse switch switch语句语句循环语句循环语句 forfor语句、语句、whilewhile语句、语句、dowhiledowhile语语句句提前结束本次循

23、环语句提前结束本次循环语句continuecontinue循环或多分支终止语句循环或多分支终止语句breakbreak无条件转移语句无条件转移语句gotogoto返回语句返回语句returnreturn要特别注意各控制结构的流程要特别注意各控制结构的流程基本控制结构基本控制结构 复合表达式语句复合表达式语句 C C语言允许把一组语句括在花括号之中构成一个语语言允许把一组语句括在花括号之中构成一个语句块,称之为复合语句。句块,称之为复合语句。例如例如 char ch; char ch; ch=getchar(); ch=getchar(); putchar(ch); putchar(ch); 2

24、、基本控制结构的使用、基本控制结构的使用o 字符图形的输出(考试),字符图形的输出(考试),最大公约数最小公最大公约数最小公倍数,倍数,素数(考试)素数(考试),穷举法,迭代法的简单,穷举法,迭代法的简单实用实用例题例题1.3(考试)(考试)o 1. main()o int i,j;o for(i=1;i=4;i+)o for(j=1;j=i;j+)o printf(“ “);o printf(“*n”);o o o 可选的可选的C框架框架o #include o void main() /*某些编译器的要求某些编译器的要求*/o o o o 严格的严格的C框架框架o #include o i

25、nt main() /*理论上理论上int可以省略可以省略*/o o o return 0; /*省略时编译器可能给出警告省略时编译器可能给出警告 */o 部分辅助调用部分辅助调用o #include o void main()o o o o getchar(); /*等待按回车后窗口才关闭等待按回车后窗口才关闭*/o 综合程序的开发流程综合程序的开发流程o 我们已了解到编码只是软件开发的一个阶段,我们已了解到编码只是软件开发的一个阶段,而且是处在实现阶段。对于而且是处在实现阶段。对于C 语言的初学者,语言的初学者,由于没有正式接受系统化开发方法的指导,往由于没有正式接受系统化开发方法的指导,

26、往往会形成一个错误的认识:往会形成一个错误的认识:o 程序的开发就是编码。也就是说,拿到问题后程序的开发就是编码。也就是说,拿到问题后,马上就开始写程序。这种做法的不良后,马上就开始写程序。这种做法的不良后果果o 初学者无法体会到,是因为他们所面临的需要初学者无法体会到,是因为他们所面临的需要解决的问题,无论从规模而言,还是从难易解决的问题,无论从规模而言,还是从难易o 程度而言,实在是太小了。程度而言,实在是太小了。o 所以在直接编写程序的过程中,大脑已经让初所以在直接编写程序的过程中,大脑已经让初学者无意识地完成了问题的定以和设计过程。学者无意识地完成了问题的定以和设计过程。但是,这种侥幸

27、的但是,这种侥幸的“个体化个体化”做法对于复杂的做法对于复杂的现实问题的解决是绝对行不通的。虽然目前我现实问题的解决是绝对行不通的。虽然目前我们还谈不到软件项目的开发,但是相对初学阶们还谈不到软件项目的开发,但是相对初学阶段,我们已经可以解决较为复杂的问题了,即段,我们已经可以解决较为复杂的问题了,即进入综合程序的阶段,因此,必须从现在开始进入综合程序的阶段,因此,必须从现在开始,树立正确的开发观,为今后专业化开发打好,树立正确的开发观,为今后专业化开发打好基础。基础。综合程序的开发流程综合程序的开发流程o 遵循软件的开发流程,大型综合程序的开发经遵循软件的开发流程,大型综合程序的开发经历问题

28、定义、分析、设计、编码、测试历问题定义、分析、设计、编码、测试o 和维护几个阶段。和维护几个阶段。综合程序的开发流程综合程序的开发流程问题定义问题定义o 问题定义阶段是整个过程中占用时间最少的阶段问题定义阶段是整个过程中占用时间最少的阶段,在这个步骤中我们的任务是明确要解决的问题,在这个步骤中我们的任务是明确要解决的问题是什么。如果不知道问题是什么就试图解决这个是什么。如果不知道问题是什么就试图解决这个问题,显然是盲目的,只会浪费时间和金钱,结问题,显然是盲目的,只会浪费时间和金钱,结果是毫无意义的。果是毫无意义的。o 在综合程序训练时期,欲解决的问题可由教师提在综合程序训练时期,欲解决的问题

29、可由教师提供,或者由学生自行选题。假若是后者,那么学供,或者由学生自行选题。假若是后者,那么学生必须动动脑筋,寻找身边有哪些事情可用计算生必须动动脑筋,寻找身边有哪些事情可用计算机解决,然后确定一个可行的。机解决,然后确定一个可行的。o 例如,某位同学非常熟悉例如,某位同学非常熟悉Windows 系统中自带系统中自带的扫雷游戏,于是他以此为题,即自己实现。的扫雷游戏,于是他以此为题,即自己实现。程序分析程序分析o 这个阶段的任务仍然不是具体地解决问题,而这个阶段的任务仍然不是具体地解决问题,而是理解问题和分析问题,确定是理解问题和分析问题,确定“为了解决这个为了解决这个问题,目标系统必须做什么

30、问题,目标系统必须做什么”,主要是确定目,主要是确定目标系统必须具备哪些功能。标系统必须具备哪些功能。o 例如:开局功能、挖雷功能、标记雷功能、标例如:开局功能、挖雷功能、标记雷功能、标记疑问功能、自动挖开功能。记疑问功能、自动挖开功能。o 到这里,程序分析的工作就结束了。接下来,到这里,程序分析的工作就结束了。接下来,将进入下一阶段将进入下一阶段程序设计程序设计的工作。可的工作。可能的输入或输出数据是什么。能的输入或输出数据是什么。程序设计程序设计o 著名计算机科学家著名计算机科学家Nikiklaus Wirth 提出了提出了公式:程序公式:程序=算法算法+数据结构,这一公式反映数据结构,这

31、一公式反映o 了程序的两个要素:算法和数据结构,实际上了程序的两个要素:算法和数据结构,实际上,程序还应当有另外两个要素:,程序还应当有另外两个要素:程序设计方法程序设计方法o 和语言工具。和语言工具。o 这四个方面是一个程序设计人员所应具备的知这四个方面是一个程序设计人员所应具备的知识。算法是灵魂,数据结构是加工对象,识。算法是灵魂,数据结构是加工对象,语言语言是工具,程序设计需要好的设计方法。是工具,程序设计需要好的设计方法。 C语言程序设计 第二章 程序的灵魂算法程序设计包括的内容:v数据结构:数据的类型和组织形式v算法:操作步骤的描述Nikiklaus Wirth提出: 程序= 数据结

32、构+算法教材认为: 程序 =算法+数据结构+程序设计方法+语言工具和环境 灵魂加工对象工具程序设计程序设计o 程序这个阶段的设计工作,应该对要解决的问程序这个阶段的设计工作,应该对要解决的问题设计出具体的解决方案,得出对目标系统的题设计出具体的解决方案,得出对目标系统的精确描述,从而在编码阶段可以把这个描述直精确描述,从而在编码阶段可以把这个描述直接翻译成用接翻译成用C 语言书写的程序。语言书写的程序。o 当然,程序设计将采用结构化程序设计方法,当然,程序设计将采用结构化程序设计方法,自顶向下逐步求精地设计出综合程序的实现自顶向下逐步求精地设计出综合程序的实现“蓝图蓝图”。为此,我们首先介绍结

33、构化程序设计。为此,我们首先介绍结构化程序设计方法,然后列举描述算法的常用工具,方法,然后列举描述算法的常用工具,什么是结构化程序设计呢?什么是结构化程序设计呢?o 结构化程序设计是一种设计程序的技术,它采结构化程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出用自顶向下逐步求精的设计方法和单入口单出口的控制结构。口的控制结构。设计工具设计工具o 在理想情况下,设计的描述应该采用自然语言来在理想情况下,设计的描述应该采用自然语言来表达,不熟悉软件的人不需要重新学习就可以理表达,不熟悉软件的人不需要重新学习就可以理解。但是,自然语言在语法和语义上往往具有多解。但是,自然语

34、言在语法和语义上往往具有多义性,常常要依赖上下文才能把问题交代清楚,义性,常常要依赖上下文才能把问题交代清楚,而且即使可以描述,也需要大量的篇幅,非常烦而且即使可以描述,也需要大量的篇幅,非常烦琐。所以必须使用简洁的方式表达整体结构,用琐。所以必须使用简洁的方式表达整体结构,用约束性强的方式来表达算法。设计工具可以对设约束性强的方式来表达算法。设计工具可以对设计进行无歧义的描述,能指明控制流程、处理功计进行无歧义的描述,能指明控制流程、处理功能以及其它方面的实现细节。俗话说能以及其它方面的实现细节。俗话说“千言万语千言万语抵不过一幅画抵不过一幅画”,下面的三种常用工具是图形方,下面的三种常用工

35、具是图形方式的工具。式的工具。层次图层次图o 层次图用来描述软件的层次结构,图中的一个层次图用来描述软件的层次结构,图中的一个矩形框代表一个模块,方框间的连线表示调用矩形框代表一个模块,方框间的连线表示调用关系。关系。学生成绩管理系统成绩录入成绩查询成绩输出程序流程图程序流程图o 程序流程图是历史最悠久使用最广泛的描述软程序流程图是历史最悠久使用最广泛的描述软件设计的方法。它的主要优点是对控制流程的件设计的方法。它的主要优点是对控制流程的描述很直观,便于初学者掌握,但这种用箭头描述很直观,便于初学者掌握,但这种用箭头代表控制流的方法,容易使程序员不受任何约代表控制流的方法,容易使程序员不受任何

36、约束,可以完全不顾结构化程序设计的精神,随束,可以完全不顾结构化程序设计的精神,随意转移控制。意转移控制。盒图(盒图(NS图)图)o 盒图上能明确表达功能域,不可能任意转移控盒图上能明确表达功能域,不可能任意转移控制,很容易确定局部和全局数据的作用域,制,很容易确定局部和全局数据的作用域,o 很容易表现嵌套关系,而且也可以表示模块的很容易表现嵌套关系,而且也可以表示模块的层次结构。所以坚持使用盒图作为设计的工具层次结构。所以坚持使用盒图作为设计的工具,可以使程序员逐步养成用结构化的方式思考,可以使程序员逐步养成用结构化的方式思考问题和解决问题的习惯。问题和解决问题的习惯。o 图形工具表示设计确

37、实比较直观,但画起来比图形工具表示设计确实比较直观,但画起来比较费劲,所以描述设计还可以使用伪码这个常较费劲,所以描述设计还可以使用伪码这个常用的语言工具。伪码是一种用的语言工具。伪码是一种“混合混合”语言,它语言,它使用一种语言使用一种语言通常是某种自然语言通常是某种自然语言的的词汇,同时却使用某种结构化程序设计语言的词汇,同时却使用某种结构化程序设计语言的语法。这样,它具有严格的关键字外部语法,语法。这样,它具有严格的关键字外部语法,而表示实际操作和条件的内部语法又是灵活自而表示实际操作和条件的内部语法又是灵活自由的,书写方便,也比较好懂。由的,书写方便,也比较好懂。考试统计问题算法的伪码

38、表示。考试统计问题算法的伪码表示。 总结怎样表示一个算法自然语言表示v2.2节例。易懂,文字冗长,易歧义性流程图表示v用流程图符号构成,直观,易懂 N-S流程图表示伪代码表示计算机语言表示q 顺序结构q 选择结构q 循环结构 C语言程序设计 第二章 程序的灵魂算法 传统流程图流向混乱、可读性差,所以应该采用结构化流程图。 结构化程序设计v 基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)v 结构化程序:由三种基本结构反复嵌套构成的程序v 优点:结构清晰,易读,提高程序设计质量和效率三种基本结构v 顺序结构ABAB流程图N-S图 C语言程序设计 第二章 程序的灵魂算

39、法PAB真假PBA真假v选择结构kA1A2AiAnk=k2k=k1k=knk=ki.l二分支选择结构l多分支选择结构 C语言程序设计 第二章 程序的灵魂算法v循环结构l当型循环结构l直到型循环结构PA假真当P为真AAP真假A直到P为真注:A,B,A1.An可以是一个简单语句,也可以是一个基本结构 C语言程序设计 第二章 程序的灵魂算法 三种基本结构的共同特点: v只有一个入口;v只有一个出口;v结构内的每一部分都有机会被执行到;v结构内不存在“死循环”。 C语言程序设计 第二章 程序的灵魂算法 算法的概念为解决一个问题而采取的方法和步骤,就成为算法。例如:歌曲的乐谱,建造房子等。算法核心是解决

40、“做什么”和“怎么做”的问题。v例:求15之积。v可以有多种方法,一般采用简单和运算步骤少的。准确、高效计算机算法类别v数值运算算法v非数值运算算法 C语言程序设计 第二章 程序的灵魂算法简单算法举例例2.1v方法1:累乘v方法2:用循环结构解决,灵活、通用。例2.2v通过循环选择打印例2.3v判断闰年例2.4v累加求级数的和,循环改变正负号和分母加1。例2.5v判断素数课后认真思考,加深什么是算法的概念 C语言程序设计 第二章 程序的灵魂算法算法的特性有穷性在合理范围内可完成 确定性无歧义性 有零个或多个输入从外界得到信息 有一个或多个输出问题的答案 有效性每步有确定的结果例题例题 1输入二

41、个整数输入二个整数m和和n,输出其中的最大值,输出其中的最大值#include main() int m,n; scanf(%d,&m); scanf(%d,&n); if ( m=n ) printf(%dn,m); else printf(%dn,n);1、选择结构程序设计、选择结构程序设计实验练习实验练习例判断点是否在圆上:例判断点是否在圆上:由键盘输入一个点的坐标, 要求编程判断这个点是否在单位圆上,点在圆上输出Y, 不在圆上输出N。使用小数点后3位精度进行判断。第一组自测数据键盘输入0.707,0.707正确输出Y第二组自测数据键盘输入0.5,0.5正确输出N提示(1

42、)平面上的点与圆的关系分为在圆内、在圆上、在圆外三种,本题要求判断是否在圆上;(2)判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度(本题为0.001)的方法实现。#include #include stdio.hstdio.h #include #include math.hmath.h void main()void main() float float a,ba,b; ; scanfscanf(%(%f,%f,&a,&bf,%f,&a,&b);); if( if(fabsfabs(a(a* *a+ba+b* *b-1)1e-3)b-1)1e-3)

43、 printfprintf(Yn);(Yn); else else printfprintf(Nn);(Nn); 参考程序:参考程序:简单计算器简单计算器下面程序是实现一个简单的运算器(保留两位小数点),如果由键盘输入10+50,计算机可以输出结果60.00;如果输入86,计算机输出48.00;如果输入20/4,计算机输出5.00;如果输入8-6,计算机输出2.00,请在空处填上适当的代码,运行通过后并提交。第一组自测数据键盘输入45*2第二组自测数据键盘输入50.1-23#include stdio.hvoid main() float a,b,c; char op; scanf(%f%c%

44、f, ); switch (op) case +: ; case -: _; case *: _; case /: _ ; default: printf(error); printf(result= , c);参考程序:参考程序:#include int main() float a,b,c;char op;scanf(%f%c%f,&a,&op,&b);switch(op) case +:c=a+b;break;case -:c=a-b;break;case *:c=a*b;break;case /:c=a/b;break;default:printf(error)

45、;break;printf(result=%.2f,c);例题例题2 输出输出100以内所有偶数以内所有偶数#include main() int i; for (i=1;i C语言程序设计 第二章 程序的灵魂算法v练习练习v求求1+2+3+1+2+3+。+100+100的算法流程图。的算法流程图。计算数列和计算数列和有数列:编程实现,由键盘输入n,计算输出数列前n项和。(结果保留四位小数)#includemain() int i,t,n; float a=2,b=1,s=0; scanf(%d,&n); for(i=1;i=n;i+) s=s+a/b; t=a;a=a+b;b=t;

46、printf(%.4fn,s);参考程序:参考程序:回忆:例题回忆:例题1.3(考试)(考试)o 1. main()o int i,j;o for(i=1;i=4;i+)o for(j=1;j=i;j+)o printf(“ “);o printf(“*n”);o o o 由键盘输入正数n,要求输出2*n+1 行的菱形图案。要求菱形左边紧靠屏幕左边。菱形图案菱形图案#include stdio.h#include math.hmain() int n,i,j,k; scanf(%d,&n); for(i=1;i=2*n+1;i+) k=abs(n+1-i); for(j=1;j=k;j

47、+) printf( ); for(j=1;j=2*n+1-2*k;j+) printf(*); printf(n); 参考程序:参考程序:由键盘输入正数由键盘输入正数n,要求输出中间数字为,要求输出中间数字为n的的菱形图案。要求菱形左边紧靠屏幕左边。菱形图案。要求菱形左边紧靠屏幕左边。键盘输入4正确输出 1 121 123211234321 12321 121 1键盘输入3正确输出 1 12112321 121 1参考程序:参考程序:参考程序:参考程序:# include# includemain() int n,i,j,k,h;scanf(%d,&n);for(i=-n+1;i=n

48、-1;i+) for(j=0;jabs(i);j+)printf( );for(k=1;k=1;h-) printf(%d,h);printf(n);* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *c c语言程序设计语言程序设计课程设计课程设计 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 程序设计:程序设计:XXXX系系XXXX专业专业XXXXXX X

49、XXX XXXX年年XXXX月月XXXX日日_ _练习(完成这样的设计程序)练习(完成这样的设计程序)1 1、软件封面(参考)、软件封面(参考)1 1、一元二次方程求根、一元二次方程求根2 2、循环、循环3 3、。、。0 0、退出、退出 请选择(请选择(0-n0-n):):2 2、登录成功后主菜单(参考选择菜单)、登录成功后主菜单(参考选择菜单)实验题目实验题目1-1o上机要求:上机要求:按程序功能要求编写程序,按程序功能要求编写程序, o程序功能:从键盘上输入程序功能:从键盘上输入5个整数(设每个整数取值个整数(设每个整数取值1至至5),按示例),按示例格式输出格式输出5行数字图形,每行的数

50、字及数字个数与输入数相对应。行数字图形,每行的数字及数字个数与输入数相对应。o如输入:如输入:o 5 4 3 2 1o则输出(表示空格,则输出(表示空格, 表示回车):表示回车):o o o o o o示例说明:示例说明:输出共输出共5行,居中对齐形状。输入的第行,居中对齐形状。输入的第1个数为个数为5,则输出,则输出的第的第1行有行有5个个5,数字之间含有,数字之间含有1个空格,第个空格,第1个个5之前有之前有5-5=0个个空格;输入的第空格;输入的第2个数为个数为4,则输出的第,则输出的第2行有行有4个个4,数字之间含有,数字之间含有1个空格,第个空格,第1个个4之前有之前有5-4=1个空

51、格;以此类推。个空格;以此类推。o再如输入:再如输入:o 2 3 2 1 2o则输出(表示空格,则输出(表示空格, 表示回车):表示回车):o o o o o o示例说明:示例说明:输出共输出共5行,居中对齐形状。输入的第行,居中对齐形状。输入的第1个数为个数为2,则输出,则输出的第的第1行有行有2个个2,数字之间含有,数字之间含有1个空格,第个空格,第1个个2之前有之前有5-2=3个个空格;以此类推。空格;以此类推。实验二实验二 数组与函数数组与函数o 一、复习数组概念一、复习数组概念数数 组组排序问题排序问题找出矩阵中最大值所在的位置找出矩阵中最大值所在的位置进制转换进制转换本章要点本章要

52、点o 什么是数组什么是数组? 为什么要使用数组为什么要使用数组? 如何定义数组如何定义数组?o 如何引用数组元素如何引用数组元素?o 二维数组的元素在内存中按什么方式存放二维数组的元素在内存中按什么方式存放?o 什么是字符串什么是字符串? 字符串结束符的作用是什么字符串结束符的作用是什么?o 如何实现字符串的存储和操作,包括字符串的输如何实现字符串的存储和操作,包括字符串的输入和输出入和输出?o 怎样理解怎样理解C语言将字符串作为一个特殊的一维字符语言将字符串作为一个特殊的一维字符数组数组?o 数组:数组:相同类型相同类型数据的数据的有序有序集合集合,在内存中连续,在内存中连续存放。存放。 由

53、数组名和下标惟一地确定每个数组元素由数组名和下标惟一地确定每个数组元素 每个元素都属于同一类型每个元素都属于同一类型一批相同类型的变量使用同一个数组变量名,用下一批相同类型的变量使用同一个数组变量名,用下标来相互区分。标来相互区分。优点:表述简洁,可读性高;便于使用优点:表述简洁,可读性高;便于使用循环循环结构结构定义数组定义数组类型名类型名 数组名数组名数组长度数组长度引用数组元素引用数组元素数组名数组名下标下标int a10;a0 = a9 = 0;ak = temp;区分数组的定义和数组元素的引用区分数组的定义和数组元素的引用下标不要越界下标不要越界数组长度为常量数组长度为常量 使用一维

54、数组编程使用一维数组编程数组和循环数组和循环for(i = 0; i n; i+) printf(%d , ai);数组下标作为循环变量,通过循环,逐个处数组下标作为循环变量,通过循环,逐个处理数组元素理数组元素 一维数组示例一维数组示例例例 1 用数组计算用数组计算fibonacci数列的前数列的前20个数,并按每个数,并按每行打印行打印5个数的格式输出。个数的格式输出。1, 1, 2, 3, 5, 例例2 输入输入5个整数,将它们存入数组个整数,将它们存入数组a中,再输入中,再输入1个数个数x,然后在数组中查找然后在数组中查找x,如果找到,输出相应的下如果找到,输出相应的下标,否则,输出标

55、,否则,输出“Not Found”。例例 3 输入输入n(n10),再再输入输入n个数个数(1) 求最小值求最小值(2) 求最小值和它所对应的下标求最小值和它所对应的下标(3) 将最小值与第一个数交换,输出交换后的将最小值与第一个数交换,输出交换后的n个数个数例例 4 输入输入n(n10),再再输入输入n个数,用选择法将它们个数,用选择法将它们从小到大排序后输出。从小到大排序后输出。用数组计算用数组计算fibonacci数列的前数列的前20个数,并个数,并按每行打印按每行打印5个数的格式输出。个数的格式输出。1, 1, 2, 3, 5, 8, 13, 用数组计算并存放用数组计算并存放fibon

56、acci数列的前数列的前20个数个数f0 = f1 = 1fn = fn-1 + fn-2 2n19例例 1 计算计算fibonacci数列数列输入输入5个整数,将它们存入数组个整数,将它们存入数组a中,再输入中,再输入1个数个数x,然后在数组中查找然后在数组中查找x,如果找到,输出相应的如果找到,输出相应的下标,否则,输出下标,否则,输出“Not Found”。输入:输入:2 9 8 9 6 9输出:输出:1输入:输入:2 9 8 9 6 7输出:输出:Not Found例例2 在数组中查找一个给定的数在数组中查找一个给定的数#include int main(void) int i, fl

57、ag, x; int a5; printf(“Enter 5 integers: ); for(i = 0; i 5; i+) scanf(%d, &ai); printf(“Enter x: ); scanf(%d, &x); flag = 0; for(i = 0; i 5; i+) if(ai = x) printf(Index is %dn, i); flag = 1; break; if(flag = 0) printf(Not Foundn); return 0; 例例 2源程序源程序Enter 5 integers: 2 9 8 1 9Enter x: 9Inde

58、x is 1Enter 5 integers: 2 9 8 1 9Enter x: 7Not Found#include int main(void) int i, flag, x; int a5; printf(“Enter 5 integers: ); for(i = 0; i 5; i+) scanf(%d, &ai); printf(“Enter x: ); scanf(%d, &x); flag = 0; for(i = 0; i 5; i+) if(ai = x) printf(Index is %dn, i); flag = 1; break; if(flag =

59、 0) printf(Not Foundn); return 0; 例例 2 思考思考(1)Enter 5 integers: 2 9 8 1 9Enter x: 9Index is 1Index is 4#include int main(void) int i, sub, x; int a5; printf(“Enter 5 integers: ); for(i = 0; i 5; i+) scanf(%d, &ai); printf(“Enter x: ); scanf(%d, &x); sub = -1; for(i = 0; i 5; i+) if(ai = x) s

60、ub = i; if(sub != -1) printf(Index is %dn, i); else printf(Not Foundn); return 0; 例例 2 思考思考(2)Enter 5 integers: 2 9 8 1 9Enter x: 9Index is 4输入输入n(n10), 再再输入输入n个数个数, 输出最小值和输出最小值和它所对应的下标。它所对应的下标。用用index记录最小值对应的下标记录最小值对应的下标aindex就是最小值就是最小值例例 3(2) 求最小值及其下标求最小值及其下标#include int main(void) int i, index, n; int a10; printf(“Enter n: ); scanf(%d, &n); printf(“Enter %d integers:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论