c课程设计教学大纲

上传人:好** 文档编号:115390189 上传时间:2019-11-13 格式:DOC 页数:8 大小:50KB
返回 下载 相关 举报
c课程设计教学大纲_第1页
第1页 / 共8页
c课程设计教学大纲_第2页
第2页 / 共8页
c课程设计教学大纲_第3页
第3页 / 共8页
c课程设计教学大纲_第4页
第4页 / 共8页
c课程设计教学大纲_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《c课程设计教学大纲》由会员分享,可在线阅读,更多相关《c课程设计教学大纲(8页珍藏版)》请在金锄头文库上搜索。

1、C课程设计教学大纲一、目的与任务根据高教委的要求,高校学生必须具备扎实的计算机基础知识,具有较强的程序设计和软件开发能力,特别对计算机专业及相关专业(如电子信息工程、通信工程、土木工程等)的学生要求更高。安排课程设计的目的,就是要通过一次集中的强化训练,使学生能及时地巩固已学的基础知识,补充未学的但又是必要的内容,更进一步提高程序设计的能力。望同学们能珍惜此次课程设计的机会,不但要使自己的程序设计能力更上一个台阶,而且要提高与程序设计和软件开发相关的各种综合能力。二、时间安排1.课程设计以编程序上机为主,具体按教师每次下发的课程序设计内容进行。2.总学时为周20个学时。三、评分标准课程设计结束

2、后,由指导老师根据学生在课程设计中的表现及任务完成的数量与质量给每个学生评定成绩。总成绩由两部分组成。总成绩=课堂检查成绩*40%+设计报告成绩*60%1.课堂检查。在课程设计的每一次,由指导老师分别对每个学生的设计进行检查,检查的内容主要有以下三个方面。 每次课程设计完成的数量与质量,可采用学生先汇报并自我评价,然后老师作检查。 随机抽取题目对学生提问,从中判定学生的算法设计和程序设计的分析能力。 随机抽取学生地综合设计的模拟运算过程及结果,并作必要的提问,据此判别学生对综合练习的完成情况。2.课程设计报告指导教师认真阅读每个学生的课程设计报告,对其系统设计、数据结构设计、算法设计、程序设计

3、等的合理性和质量以及对报告的编写质量作认真的审核,以此作为评定综合练习成绩的主要依据四、设计报告格式(参考附件一)文档资料的统一要求:1、文档中的正文字体用五号宋体。2、每个问题均要有数据结构分析、算法思想描述、源代码和上机调试的过程及结果。3.工程名称:学号姓名任务;文件名称:学号姓名任务4、源代码是C+编辑正确且含有编译、连接的提示信息贴图、程序运行的结果用贴图方式表示。5、没有按要求做的同学则视为本课程设计不合格。6、每次上机所做的内容用移动磁盘带走。五、课程设计内容第1章 分支与循环1.1 算法与范例1.递推算法递推算法是循环程序设计的精华之一,在很多情况下使用递推算法能使程序简练,同

4、时还能节省计算时间。递推算法的基本思想:是利用前一项的值来推算出当前项的值,即利用前一项的值乘以(或加上)一系数得到当前项的值。使用递推算法的前堤,必须有一项的值(一般是最前项)是已知的。使用递推算法的关键地,是如何将多项式化成递推公式。示范:求(即1!+2!+3!+20!)的程序编程提示:n=1 to 20当n=1时,要做两件事: 实现t=t*n 注意t=1; 实现 sum=sum+t 注意sum=0。当n=2时,还是要做以上两件事。因此t=t*n,sum=sum+t是递推项是编程的核心。参考程序:#include void main()double sum=0,t=1; int n; fo

5、r (n=1;n=20;n+) t=t*n; sum=sum+t; printf(1!+2!+.+20!=%22.15en,sum);2.测试法在实际应用中,有许多问题是无法用解释方法实现的,这时采用测试法来求解是一种很有效的方法。测试法的基本思想是假设各种可能的解,让计算机进行测试,如果测试结果满足条件,则假设的解就是所要求的解。如果所要求的解是多值的,则假设的解也应是多值的,在程序设计中,实现多值解的假设往往使用多重循环进行组合。示范:百钱买百鸡问题已知公鸡每只5元,母鸡每只3元,小鸡1元买3只。要求用100元钱正好买100只鸡,问公鸡、母鸡、小鸡各多少只?编程提示:设公鸡、母鸡、小鸡分别

6、为a、b、c只,依据题目能列出下列两个方程: a+b+c=100 5a+3b+c/3=100这是个不定方程,无法用解释式求解。但可采用多重循环组合出各种可能的a、b、c的值。100元钱,全部买公鸡最多只能买20只,即公鸡的只数范围是:a=1 to 20100元钱,全部买母鸡最多只能买33只,即母鸡的只数范围是:b=1 to 33100元钱,全部买小鸡最多只能买100只,即公鸡的只数范围是:c=1 to 100参考程序:#includevoid main() int a,b,c; printf(公鸡 母鸡 小鸡n); for(a=1;a=20;a+) for(b=1;b=33;b+) c=100

7、-a-b;if(5*a+3*b+c/3=100) printf( %d %d %dn,a,b,c); 1.2 设计任务1.若一个口袋中放有12个球,其中有3个红色球,3个白色球和6个黑色球,从中任取8个球,问共有多少不同的颜色搭配。2. 输入年月日,求它是该年的第几天。注:闰年的2月有29天,平年的2月有28天。3. 简单计算器。请编写一个程序计算表达式:data1 op data2的值。其中op为运算符+、-、*、/。4. 猜数游戏。由计算机“想”一个数请人猜,如果猜对了,则游戏结束,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到猜对为止。计算机记录人猜的次数,以此可以反映出猜数者“

8、猜”的水平。1.3 实现过程1.3.1设计任务1的实现过程1.算法分析(用文字或流程图进行描述)2.编写的源程序代码3.程序运行的结果1.3.2 设计任务2的实现过程1.算法分析(用文字或流程图进行描述)2.编写的源程序代码3.程序运行的结果1.3.3 设计任务3的实现过程1.算法分析(用文字或流程图进行描述)2.编写的源程序代码3.程序运行的结果1.3.4 设计任务4的实现过程1.算法分析(用文字或流程图进行描述)2.编写的源程序代码3.程序运行的结果第2章 数组与函数2.1 启示与范例1.输入n个学生的成绩,并求出其中高于平均分的人数。编程提示:用程序来实现本题的要求,首先有两个值得思考的

9、问题:一是数据结构的选择;二是数组的长度。 数据结构的选择:n个学生的成绩是否有必要开辟数组来存放还是定义变量来存放?从任务要求分析知,两次用学生成绩,一次是求平均分;另一次是将每个学生的成绩与平均分比较,高于平均分要输出。因此有必要将其定义数组。 数组的长度定义:学生个数n的具体数值一般表示在编写程序时是未知的,而在程序执行时由使用者随意确定。即n是一个变量,其值需要用输入来确定。这样一来,存放n个分数的数组a,其长度的定义就必须注意,既不能定义为int an;因为数组长度要求是常量,而n是一个变量,又不能将n定义成符号常量,因为n的具体值是未知的。对于这种情况的处理方法一般是:将数组的长度

10、定义较大,让使用者在此范围内随意使用,当然这个长度的定义有其原则,那就是既不让使用者感到长度不够,又不至于定义过大而浪费内存,这种情况视应用情况而定。参考程序:#includevoid main()int i,a1000,num=0,n;float aver=0;printf(输入学生个数nn);scanf(%d,&n);printf(输入学生的成绩存放到数组a中n);for(i=0;in;i+)scanf(%d,&ai);aver=aver+ai;aver=aver/n;for(i=0;i=aver)num+;printf(高于平均分的人数是:%dn,num);2.输入任意个学生的学号及成绩

11、,然后按顺序输出高分的前十名。编程提示:依据设计任务的要求需要考虑几个问题:初始数据的数据结构选择;采用的算法如何实现及相关的数据结构;任意个数据的实现问题。 初始数据的数据结构选择问题:所谓任意个学生,应该是个数不限,因此,对于存放初始数据的数据结构不宜选择为数组。并且,从算法实现的角度考虑,每个学生的数据输入后只需使用一次,没有再保留的必要,因此可选择简单变量作数据结构来存放一个学生的数据,而且每个学生的初始数据都用同一个数据结构存放,即对一个学生的数据使用完后就将该数据结构让给下一个学生的数据使用。 算法的实现及相关的数据结构:本题核心的算法是排序,由设计任务可知只要求前十名的排序结果,

12、因此算法上不需考虑对所有学生数据进行排序,只考虑对前十名排序即可。因此,应选择合适的数据结构来存放前十名排序结果的数据,显然,选择数组是最合适的。关于算法的实现可采用插入排序法最为合适。即存放排序结果的数组始终是存放当前已插入数据的前十名的排序结果,而后每输入一个学生的数据就进行一次插入排序更新这一排序结果。 任意个的实现:对于本题的程序来说,总体结构是然是一个循环结构,每次循环的任务是输入一个学生的数据并进行插入排序。问题是何时结束循环?循环结束的条件是什么?对用户输入的有用数据,循环继续;对用户输入的无用数据即输入数据为负数时,循环结束。 为了使程序更加清晰。主程序只提供输入学生的学号、成

13、绩,并且输出前十名的学号及成绩;子函数实现插入排序的过程。参考程序:#includevoid insertsort(int num,int a,int n,int number,int score)int i,j;for(i=0;iai)break;if(i=n)return;for(j=n-1;ji;j-)numj=numj-1;aj=aj-1;numi=number;ai=score;void main()int i,num10,a10,number,score;for(i=0;i10;i+)ai=0;numi=0;while(1)printf(输入学生的学号及学生成绩:n);scanf(

14、%d%d,&number,&score);if(number0|score0)break; insertsort(num,a,10,number,score);for(i=0;i10;i+)printf(前十名学生学号%d 成绩是%dn,numi,ai);2.2 设计任务1.有一个一维数组score,内存放10个学生的成绩,要求编写三个函数分别求学生的平均成绩,求10个学生的最高分,求10个学生的最低分。2. 编写一个函数,将输入的一串字符中的小写字母转变成大写字母,并输出所有的大写字母。3.输入10个学生姓名,按字典顺序将排在最前面的学生姓名输出。即在字符数组中求最小字符串。4.用函数法求N*N的对角线的和。其中的N是用户通过键盘输入的任意值。2.3实现过程2.3.1 设计任务1实现过程1.算法分析(用文字或流程图进行描述)2.编写的源程序代码3.程序运行的结果2.3.2设计任务2实现过程1.算法分析(用文字或流程图进行描述)2.编写的源程序代码3.程序运行的结果2.3.3设计任务3实现过程1.算法分析(用文字或流程图进行描述)2.编写的源程序代码3.程序运行的结果2.3.4 设计任务4实现过程1.算法分析(用文字

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号