c语言课程设计1(共8篇)
c语言课程设计1 篇1
实验报告
1.程序源代码
程序1 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则计算机给出提示“Right!”,否则提示“Wrong!”,并告诉人所猜的数是大还是小,然后结束游戏。要求每次运行程序时机器所“想”的数不能都一样。#include
int input_number;
int random_number;srand((unsigned)time(NULL));random_number = rand()%100+1;printf(“输入您想猜的0~100之间的数:”);scanf(“%d”,&input_number);if(input_number >= 0 && input_number <= 100){
if(input_number == random_number)
{
printf(“nright!”);
}
else if(input_number > random_number)
{
printf(“n您猜的数过大n”);
}
else
{
printf(“n您猜的数过小n”);
} }
else
{
printf(“n您猜的数应在0~100之间”);} } 程序2 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。#include
int input_number;
int random_number;int n;srand((unsigned)time(NULL));random_number = rand()%100+1;for(n=1;;n++){
printf(“输入您想猜的0~100之间的数:”);scanf(“%d”,&input_number);if(input_number >= 0 && input_number <= 100)
if(input_number == random_number)
{
printf(“nright!n”);
if(n==1)
{
printf(“n您猜了%d次,太牛逼了.n”,n);break;
}
else if(n>1&&n<6)
{
printf(“n您一共猜了%d次,水平还行.n”,n);break;
}
else
{
printf(“n您一共猜了%d次,才猜对,很勉强啊.n”,n);break;
}
}
else if(input_number > random_number)
printf(“n您猜的数过大n”);
else
printf(“n您猜的数过小n”);
else
printf(“n您猜的数应在0~100之间”);} } 程序3 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,结束游戏。
#include
int input_number;
int random_number;int n;srand((unsigned)time(NULL));random_number = rand()%100+1;for(n=1;n<=10;n++){
printf(“输入您想猜的0~100之间的数:”);scanf(“%d”,&input_number);if(input_number >= 0 && input_number <= 100)
if(input_number == random_number)
{
printf(“nright!n”);
if(n==1)
{
printf(“n您猜了%d次,太牛逼了.n”,n);break;
}
else if(n>1&&n<6)
{
printf(“n您一共猜了%d次,水平还行.n”,n);break;
}
else
{
printf(“n您一共猜了%d次,才猜对,很勉强啊.n”,n);break;
}
}
else if(input_number > random_number)
printf(“n您猜的数过大,您还有%d次机会n”,10-n);
else
printf(“n您猜的数过小,您还有%d次机会n”,10-n);
else
printf(“n您猜的数应在0~100之间”);} if(n==11)
printf(“n你输了!n”);}
程序4 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。#include
int input_number;
int random_number;int n,i=1;
game: srand((unsigned)time(NULL));random_number = rand()%100+1;for(n=1;n<=10;n++){
printf(“第%d轮游戏,输入您想猜的0~100之间的数:”,i);scanf(“%d”,&input_number);if(input_number >= 0 && input_number <= 100)
if(input_number == random_number)
{
printf(“nright!n”);
if(n==1)
{
printf(“n您猜了%d次,太牛逼了.n”,n);break;
}
else if(n>1&&n<6)
{
printf(“n您一共猜了%d次,水平还行.n”,n);break;
}
else
{
printf(“n您一共猜了%d次,才猜对,很勉强啊.n”,n);break;
}
}
else if(input_number > random_number)
printf(“n您猜的数过大,您还有%d次机会n”,10-n);
else
printf(“n您猜的数过小,您还有%d次机会n”,10-n);
else
printf(“n您猜的数应在0~100之间”);}
} if(n==11){ printf(“n你输了!n”);i=i+1;goto game;} 2.遇到的问题及解决方法
问题1:随机数如何调用?
解决方法:运用srand((unsigned)time(NULL))函数。
问题2:”直到人猜对为止”功能如何实现? 解决办法:运用一个“无穷循环”,另游戏能够不断进行,并运用break语句停止于猜对情况。
问题3: “以此来反映猜数者“猜”的水平”功能的实现?
解决办法:在猜对情况下的if语句中嵌套if语句实现“猜数次数”的判断,分支输出“猜”的水平。
问题4:“每次运行程序可以反复猜多个数”功能的实现?
解决办法:此功能比较困难,但反复阅读程序后,发现代码并不复杂,运用goto语句和if语句的运用进行循环,即可实现此功能,且不会因为运用goto语句造成程序模块的混乱。
3.总结(心得体会)
这是“C语言课程实践”的第一次实践,由于平时并没接触过Microsoft Visual C++ 6.0这个编译软件,因此刚开始还存在操作方面的苦难。经过一两节课的实践,能够熟悉界面和学会新建工程。
此次实践题目是“猜数游戏”,题目分成4个部分,其实内容相同,只是功能逐渐增加。鉴于这种题目,编写程序中需要思考预留部分,比如运用if语句嵌套时,要注意把“猜对”、“猜错”和“误猜”分支出来,使程序容易阅读也容易进行修改。
在编写程序过程中,遇到几个核心问题,通过学习后把困难一个个突破,并成功实现题目所要求的功能。
最后,我对编程有进一步认识,而且在编程调试过程中,能够从中发现问题并解决问题,这是程序能够走向成功的必经之路,也是带来成功喜悦必不可少的过程。
c语言课程设计1 篇2
做为一门程序设计语言, C语言对于高职院校的学生非常重要, 它是学好JAVAT等其它高级语言的基础。因为C语言既有高级语言的特点, 又具有汇编语言的特点。它可以作为系统设计语言, 编写工作系统应用程序, 也可以作为应用程序设计语言, 编写不依赖计算机硬件的应用程序。所以, 高职院校的学生必须学好它。
C语言以其功能齐全、表达能力丰富、使用灵活方便、目标程序效率高、可移植性好、可直接对硬件进行操作等众多优点, 而备受青睐。C语言是培养学生程序设计能力的开端, 形成初步的基本程序设计思想和观念, 培养初步的分析和解决问题的能力。对于学生将来是否能够成为一个合格或优秀计算机专业人才, 起着重要作用。但C语言较之于现在流行的可视化编程, 界面枯燥, 语法烦琐, 如何在有限的学时内, 让对计算机一无所知的大一新生能够掌握C语言基本原理的同时, 能熟练运用程序设计的方法分析问题、解决问题, 成为C语言工作的重要组成部分。
1 C语言课程设计的目的
经过C语言课程设计, 能够充分掌握软件设计的基本方法, 了解C语言的好处和其可用性、重要性和必要性可以培养独立思考、综合运用所学有关相应知识的能力, 增加了同学之间的团队合作精神, 巩固C语言课程学习的内容, 强化动手编程能力。
经过这种课程设计, 使学生了解高级程序设计语言的结构, 具备初步的高级语言程序设计能力。掌握基本的程序设计过程和技巧, 掌握基本的分析问题和利用计算机求解问题的能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。
2 C语言课程设计的基本流程
它的具体流程如下:
首先, 做一个系统, 对其进行功能模块的分析、控制模块的分析, 然后检查是否符合课题要求, 能否实现其相应的功能;能不能够加以其他的功能或其他的修饰, 能否使程序设计更加合理和完善;
其次, 整个系统设计必须要达到实用的目的, 编程过程进量要简练, 可用, 其功能要全面;
第三, 课程设计的说明书及其流程图等要表述清楚;
第四, 为编写设计说明书作好准备, 要有相应的记录设计情况;
第五, 必须采用模块化程序设计的方法, 以及正确完整的书写格式, 并按设计的报告格式进行上机调试;
最后, 要提交设计内文档写作和程序开发必须同步。
也就是说:应该先完成程序设计目的分析和功能模块分析后, 再进行编码和程序调试、测试工作。编程测试要求学生把自己编写好的程序录入到计算机, 然后进行程序语法调试, 如语法正确, 再选取一些数据进行程序测试。这一部分是课题设计的关键, 也是需要花费时间最多的部分。在此过程中要求学生学会按模块一个一个地进行调试。
在编译时有时会出现比较多的出错提示。这时应努力理解、领会提示信息的含义, 并据此改正错误。当编译提示的出错信息不止一条时, 只须先注意其中第一条。因为从第二个错误开始的若干错误很可能是随带错误, 只要更正了第一个错误, 它们便自然更正了。对于C语言初学者, 最好先将程序以书面的形式描述出来, 然后录入计算机调试。在经过定性、定量分析后, 学生对所要进行的设计进行书面算法设计。强调学生在编程时要代码规范、使用注释, 养成良好的编程风格。通过将程序写到纸上, 不仅能使学生进一步掌握C语言语法, 而且学生在编程过程中如遇到问题, 可以有足够的时间提前到图书馆或网上查阅资料, 保证了程序的正确率和有限的上机调试时间。
实践证明, C语言课程设计对提高教学质量有明显的优越性, 克服了重理论, 轻实践的弊端。由于课程设计不是一般的书面作业或上机操作实验, 而是一次完整的软件设计。这就要求提前做比较多的准备工作, 如收集整理资料和编写较多的教学文件等。
3 C语言课程设计内容调整——适当取舍和整合
课程设计成功的首要条件是选择一个合适的题目。题目要符合实际, 不仅要使学生掌握C语言程序设计教学中的重要知识点、了解程序模块化开发等内容, 而且还要与现实生活联系密切, 具有一定的实用性和趣味性, 由于C语言程序设计是工科很多专业必修的课程, 所以在选题时尽可能体现本专业的特色, 具有一定的先进性和实用性, 增强学生对专业知识的领悟与应用能力, 可以与单片机结合进行课程设计
大多数C语言教材内容是按照“数据类型-基本结构-数组-函数-指针-文件”这样的顺序进行知识点编排, 内容详尽全面、讲解细致[1]。这样的做法偏于陈腐, 因此, 针对这些情况, C语言课程设计内容要进行适当的取舍和整合。
3.1 整合
适当的调整知识点的设计顺序, 增强知识点之间的联系, 这样可以直接把知识转化成能力。但在教材整合要注重知识的渐进性, 符合课程设计的认知规律。比如, 讲解整型数据的时候可以和该类型的输入输出语句的格式说明相结合, 通过两个数求最大值的例子, 引入if选择结构、关系运算符和关系表达式、流程图的画法的讲解。通过判断一个数的奇偶的例子, 引入算术运算符和算术表达式、等于运算符的讲解。这样就把书上的数据类型、运算符和表达式、顺序结构和选择结构四章的内容打乱、重组。
3.2 取舍
与其把所有内容通讲, 还不如挑一些内容精讲, 让学生熟练掌握这些知识。对于未讲的内容, 可以通过循序渐进的方式, 在例题或作业中逐步的加入。
4 C语言课程设计方法的改革——采用案例C语言法
传统C语言方式是以教材为中心, 从书本到书本, 从概念到概念, 导致C语言课程设计对理论与实践的脱节。而案例C语言法十分注重其效果, 通过案例分析解决实际问题。对设计的目标进行定性分析, 进行定量分析。可采取自顶向下、逐层分解的方法, 将课题分成有若干个模块, 然后对各模块重点和难点内容进行重点讲解, 使重点突出, 难点分散, 最终各个击破。
计算机学科是一门实践性很强的学科, 只“听”、“读”、“写”是远远不够的。在程序开发过程中, 程序调试的工作量要比编程大得多, 上机调试程序是一个不可缺少的重要环节。因此, 要明确上机目的, 验证程序的正确性, 具体的分析算法和语法结构。这样, C语言课程设计的实践目的才能达到。
C语言课程设计内容主要分成2部分:1) 理论课的例题;2) 针对理论课所讲的内容, 布置题目。如可以设计出一个工资管理系统:
(1) 设计要求
矩阵乘法:编写一个函数实现矩阵A (2行3列) 与矩阵B相乘 (3行2列) , 乘积放在C数组中。在主函数中输入相乘的两数组, 并输出结果。
工资管理:结构体数组、函数、指针、算法、流程结构及文件等的综合应用。
程序说明:有N个工人, 每个工人的数据包含职工号 (不重复) 、姓名、工资总和及分项工资, 试设计一工资管理系统。
(2) 功能模块的设计
输入记录函数EMP*create ()
算法:先声明一个首节点head, 并将head->next设为NULL。每输入一个数据就声明一个新节点p, 把p->next设为NULL, 并且链接到之前列表的尾端。
记录函数void er int (EMP*head)
算法:先将p结点的指针指向第一个结点, 将p结点 (即第一个结点) 的数
输出。然后再将p结点的指针指向p指针的的指针 (即下一结点) , 将p结点第一结点) 的数据输出。重复执行此步聚直到p指针指向NULL为止。
查找记录函数void search (EMP*head)
算法:采用线性查找法往下一个节点查找。输入所要查找的职工的职工号k,
设一个指针变量p, 先指向第一个结点, 当strcmp (p->name, k) &&p!=NULL时, 使p后移一个结点, 如果p!=NULL, 输出p所指的结点。
需要注意的是, 在整个设计过程中, 要设计好流程图。
在C语言课程设计中应该注意程序中频繁的调用函数会增加系统的负担, 降低程序的执行速度, 花费较多的时间, 影响C程序的执行效率。这就要求我们在编写程序时, 在程序的可靠性得到保证的前提下, 根据具体情况找出最优的、能充分利用系统资源和提高程序运行效率的一种最佳方法。当然, 在不同的系统和不同配置的计算机上程序的运行效率是不尽相同的, 程序的效率问题是在编写较大或较复杂程序时应该充分考虑的。
5 结论
本文通过对C语言课程设计的探索和改革, 探讨了在C语言课程设计中的设计方法和应注意的一些重要问题, 通过这些探索, 能够使学生的理论水平和实践能力大大提高, 这对C语言的学习和课程设计有一定的指导作用, 学生综合能力也会不断的增强。
参考文献
[1]谭浩强.C语言程序设计教程[M].北京:清华大学出版社, 2007.
[2]李博.多媒体C语言中存在的问题及解决措施[J].才智, 2009, 8.
[3]李炜.计算机高级语言程序设计的C语言改革与时间[J].安徽师范大学学报:自然科学版, 2003, 26 (2) .
[4]管小卫.C语言课程设计探讨[J].广西轻工业, 2009, 1.
C语言程序设计课程的教学探索 篇3
关键词:C语言程序设计 课程教学 教学效果 教学方法
C语言是国内外广泛使用的计算机语言,学会使用C语言进行程序设计是计算机工作者的一些基本功。C语言程序设计是计算机相关专业的一门专业基础课。在计算机课程体系中,C语言程序设计是学习其他计算机课程的基础,也是引领学生进入计算机学科领域的第一门课程,学生学习C语言程序设计的效果,将对其他课程的学习积极性产生影响。因此,C语言程序设计课程的教学显得非常重要。作者根据多年从事C语言程序设计课程的实践,对该课程教学实践中遇到的若干问题进行整理,并提出一些解决思路,以供同仁们参考。
一、培养学生的学习兴趣
C语言程序设计课程是计算机相关专业学生所接触的计算机类课程的先行课程之一,学生在学习这门课程时,往往对程序设计满怀期望和好奇心。教学初期,要把握时机,对学生好奇心理加以利用,提高学生学习兴趣,提高学习效果。随着课程的深入,所学内容逐渐增多、学习难度加深,教师如不一如既往地特意培养学生学习兴趣,学生在学习中遇到的各种挫折都可能打击其学习兴趣。教学中、后期,要调用各种教学方法和手段,强化学生的学习兴趣。可以根据教学内容设计适宜的、学生感兴趣的题目供学生讨论,在讨论中以学生为中心,并进行适当的引导,使讨论富于情趣,寓教于乐,达到较好的教学效果,强化学生的学习兴趣。比如,在讲授起泡发排序时,教师先用多媒体课件将算法思想陈述清楚,然后随机抽取教室中就坐的一列学生,由全体学生根据算法思想对抽取的同学的身高进行排序,这样可以让所有学生在都参与算法的演示,以加强学生对算法思想的理解,在轻松愉悦的环境中培养学生的学习积极性。
二、授予算法思想
C语言程序设计课程的是一门专业基础课,其教学目标就要体现“专业”与“基础”两个方面。一是,使学生掌握各种C语言本身的语法与程序结构,二是,使学生通过该门课程的学习掌握一定的算法和常用子程序的编程实现,学会用C语言编写程序,实现所需处理的任务,为后续课程打下坚实的基础。
算法是程序的核心,是程序的靈魂。语法是程序的外壳,是程序的工具。教学中,要处理好算法与语法的关系。不能把重点放在语法规则上。语法是重要的,掌握不好语法就无法编写出正确的程序,但是,只学会语法,甚至把语法背得滚瓜烂熟,也不可能编写出好的程序。要把重点放在算法思想上,通过大量的实例讲解和练习使学生学会怎样设计算法,编写程序,解决实际问题。算法思想与语法知识的关系就如“授予渔”与“授予鱼”的关系。教育不是要“授予鱼”,而是要“授予渔”。因此,C语言程序设计课程“授予算法思想”最为重要。
三、改进教学方法
在教学实践中采用多媒体教学与传统教学相结合的方法。多媒体教学信息量大、变换快速、表现直观、操作简便,教学活动很容易出现课件喧宾夺主的不良倾向;教师容易忽视教学策略和教学方法,忽视教学难点和重点,忽视与学生的交流;学生忙于观看课件,无暇做笔记,无暇思考。因此,在C语言程序设计课程中一定要注重适时适当地采用一些传统的教学方法,加强与学生的交流,在课堂中注重与学生的互动,杜绝采用填鸭式教学方法。教师要从学生的主宰转变为学生学习的引导者,课堂教学要从过去的“满堂灌”“填鸭式”转变为学生自主探讨,尽可能把时间还给学生,使学生从被动的“受教育者”转变为主动的“探索者”。
此外,教师要注意在每一堂课结束之后对所学内能进行归纳小结,整理教学内容的内在联系。在整门课程的教学过程中,注重各种C语言程序结构之间及数组、函数、指针、结构体与共用体之间的比较,使学生总览全局,对各种C语言程序结构之间及数组、函数、指针、结构体与共用体之间的差异和联系有宏观的把握,促进对各种C语言程序设计知识的理解和掌握。
四、抓好实验教学
程序语言的学习最终的目标就是能够熟练地根据具体问题设计适合的算法将其转变为C语言程序,解决实际问题。所以,实验是C语言程序设计课程必学、必练的教学环节。学生对实验内容的掌握程度直接反映学生对C语言程序设计课程的掌握程度。
C语言程序设计课程是计算机相关专业学生的开设的第一门专业基础课,学生对该课程的学习思维的把握需要一个循序渐进的过程。因此,在实验教学中,教师要把握循序渐进的度。一开始,可以学生非常熟悉的问题设计实验内容,在实验中为学生给出完整的实验程序,其目的是让学生掌握C语言程序设计课程的上机环节及编程的基本方法。接下来,可以根据第一次的实验,设计一个有关语句、语法、程序结构等环节的实验内容,是学生对C语言程序的基本结构、基本的语法特点有一个总体的印象。之后便可以根据教学内容来设计实验内容。
在实验教学中,对于实验内容的设计除了要与教学内容相结合外,还要注意实验内容满足学生的兴趣。而且,一定要把握好实验预习、准备关。除了最初的两次实验之外,其他的实验,一定要要求学生做好充分的准备,严格要求学生在实验之前提交实验程序。我们的做法是将课后作业与实验内容合二为一,学生因为对布置的内容有准备,所以尽管实验内容多,但也能较好地完成,能较好地达到实验教学的预期目标。而且,学生对自己的学习目标的达成及完成情况更加清晰、明确,对于C语言程序设计课程的学习亦随着实验内容的增多和。
五、结束语
C语言程序设计课程具有鲜明的实践目标性,教学中,教师一定要结合学生实际,合理设计教学内容及教学环节,用恰当的方法方式引领学生进入更加广阔的计算机相关专业领域。
参考文献:
C语言课程设计程序 篇4
//定义学生结构体,st数组。
int score[5];float jqave;int rank;}st[27];
struct kecheng { int num;char kcname[20];
//定义课程结构体,course数组.float xuefen;float biaozhuncha;int youxiu;int lianghao;int zhongdeng;int jige;int bujige;
}course[5];
void readdata1(){
int i,j;
char str1[100];
FILE *f1;
f1=fopen(“c:xinji110213.txt”,“r”);
fgets(str1,100,f1);// printf(“%-s”,str1);
for(i=0;i<27;i++)
{
fscanf(f1,“%d%s”,&st[i].num,st[i].name);
// printf(“%-4d%-10s”,st[i].num,st[i].name);
for(j=0;j<5;j++)
{
fscanf(f1,“%d”,&st[i].score[j]);// printf(“%-9d”,st[i].score[j]);}
// printf(“n”);}
fclose(f1);}
void readdata2(){
int k;
char str2[100];
FILE *f2;
f2=fopen(“c:xj02kc.txt”,“r”);
fgets(str2,100,f2);// puts(str2);
for(k=0;k<5;k++)
{
fscanf(f2,“%d%s%f”,&course[k].num,course[k].kcname,&course[k].xuefen);
// printf(“%-8d%-10s%2.1fn”,course[k].num,course[k].kcname,course[k].xuefen);
}
fclose(f2);} void jqave(){ int i,j;float s=0,sum=0;for(i=0;i<27;i++)
{
for(j=0;j<5;j++)
{
s+=course[j].xuefen;
sum+=st[i].score[j]*course[j].xuefen;
}
st[i].jqave =sum/s;
} }
void ranking()
{ int i,j;
for(i=0;i<27;i++){
st[i].rank=1;
for(j=0;j<27;j++)
if(st[i].jqave st[i].rank=st[i].rank+1;} } void paiminghoudechengji(){ int i,j;FILE *fp;fp=fopen(“c:MC110213.txt”,“w”);printf(“ 名次 学号 姓名 数学分析 高等代数 C语言 大学物理 大学艺术 加权平均分 n”);fprintf(fp,“ 名次 学号 姓名 数学分析 高等代数 C语言 大学物理 大学艺术 加权平均分 n”); for(i=0;i<27;i++) { printf(“%3d%5d%8s”,st[i].rank,st[i].num,st[i].name); fprintf(fp,“%3d%5d%8s”,st[i].rank,st[i].num,st[i].name); for(j=0;j<5;j++) { printf(“%10d”,st[i].score[j]); fprintf(fp,“%10d”,st[i].score[j]); } printf(“%12.2fn”,st[i].jqave); fprintf(fp,“%12.2fn”,st[i].jqave);} fclose(fp);} void xiechengji(){ int j;FILE *fp;fp=fopen(“c:xj1110213.txt”,“w”);fprintf(fp,“ 编号 课程名称 课程学分 标准差 优秀 良好 中等 及格 不及格 n”);printf(“ 编号 课程名称 课程学分 标准差 优秀 良好 中等 及格 不及格 n”);for(j=0;j<5;j++) { printf(“%3d%15s%10.2f”,course[j].num,course[j].kcname,course[j].xuefen);fprintf(fp,“%3d%15s%10.2f”,course[j].num,course[j].kcname,course[j].xuefen); printf(“%10.1f%8d%8d%8d%8d%6dn”,course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige); fprintf(fp,“%10.1f%8d%8d%8d%8d%6dn”,course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige); } fclose(fp);} void pingjunfen(){ int i,j; for(j=0;j<5;j++) { float zongfen=0,pingjunfen=0; for(i=0;i<27;i++) zongfen+=st[i].score[j]; pingjunfen=zongfen/27; } } void biaozhuncha(){ int i,j; for(j=0;j<5;j++){ float zongfen=0,pingjunfen=0,x=0; for(i=0;i<27;i++) zongfen+=st[i].score[j]; pingjunfen=zongfen/27; for(i=0;i<27;i++) x+=(st[i].score[j]-pingjunfen)*(st[i].score[j]-pingjunfen); course[j].biaozhuncha=(float)sqrt((x/27)); } } void count(){ int i,j; for(i=0;i<5;i++) { course[i].youxiu=0,course[i].lianghao=0,course[i].zhongdeng=0,course[i].jige=0,course[i].bujige=0; for(j=0;j<27;j++) { if(st[j].score[i]<60) course[i].bujige++; else if(st[j].score[i]<=69) course[i].jige++; else if(st[j].score[i]<=79) course[i].zhongdeng++; else if(st[j].score[i]<=89) course[i].lianghao++; else course[i].youxiu++; } } } void chengjitiao(){ int i,j;FILE *fp;fp=fopen(“c:cjt110213.txt”,“w”);do { printf(“请输入你要查询的编号 退出请按零”); scanf(“%d”,&i); fprintf(fp,“ 编号 姓名 数学分析 高等代数 C语言 大学物理 大学艺术 加权平均分 名次n”);printf(“ 编号 姓名 数学分析 高等代数 C语言 大学物理 大学艺术 加权平均分 名次n”);if(i>=0&&i<=26)fprintf(fp,“%3d%10s”,st[i-1].num,st[i-1].name); printf(“%3d%10s”,st[i-1].num,st[i-1].name);for(j=0;j<5;j++){ printf(“%9d”,st[i-1].score[j]); fprintf(fp,“%9d”,st[i-1].score[j]);} printf(“%12.2f%8dn”,st[i-1].jqave,st[i-1].rank);fprintf(fp,“%12.2f%8dn”,st[i-1].jqave,st[i-1].rank);fclose(fp);} while(i>0&&i<28); } void bujigexueshengmingdan(){ int i,j; printf(“不及格学生名单如下:n”);printf(“ 学号 姓名 不及格课程 分数 n”);for(i=0;i<27;i++){ for(j=0;j<5;j++) if(st[i].score[j]<60) {printf(“%3d%12s”,st[i].num,st[i].name); printf(“%15s%8dn”,course[j].kcname,st[i].score[j]); // printf(“ 平均分”); // printf(“%10.2f 名次%8dn”,st[i].jqave,st[i].rank); } } } void youdeng(){ int i,k;printf(“ 优等生名单如下n”);printf(“编号 姓名 数学分析 高等代数 C语言 大学物理 大学艺术 加权平均分 名次n”);for(i=0;i<27;i++){ // for(j=0;j<5;j++) if(st[i].jqave>=90||st[i].rank<=3) { printf(“%2d%10s”,st[i].num,st[i].name); for(k=0;k<5;k++) printf(“%9d”,st[i].score[k]); printf(“%10.2f%8dn”,st[i].jqave,st[i].rank); } else; } } void caidan() { loop: printf(“ &&简易教学管理系统&&n”); printf(“press 1 for 排名后的成绩表 !n”); printf(“press 2 for 各科成绩情况!n”); printf(“press 3 for 成绩条!n”); printf(“press 4 for 不及格学生名单!n”); printf(“press 5 for 优等生名单!n”); printf(“press 0 for 退出n”); int t; scanf(“%d”,&t); switch(t) { case 1: paiminghoudechengji();break; case 2: xiechengji();break; case 3: chengjitiao();break; case 4: bujigexueshengmingdan();break; case 5: youdeng();break; case 0: exit(0); } goto loop; } void main(){ readdata1(); readdata2(); jqave(); ranking(); pingjunfen(); biaozhuncha();count(); 同时,本次课程设计也锻炼了学生利用图书馆和互联网查阅资料的潜力;培养了学生不怕困难、勇于克服困难的精神和耐心细致、严谨的工作作风;提高了他们撰写文档资料的潜力。 一、本次课程设计,我们主要按照以下步骤完成: 1、课程设计动员,布置设计任务,提出要求,给出参考思路,并给出大部分程序代码; 2、学生查阅资料,分析、讨论设计方案; 3、画出系统总体功能框图及各模块的流程图; 4、编写各模块程序; 5、进行模块调试; 6、完成模块联调,进行测试; 7、成果验收,完成设计报告。 二、课程设计过程综述: 1、大部分同学,态度十分认真,对课程设计的各个环节,都很感兴趣,用心性很高,创新性地进行编程和调试,任务完成相当出色,值得学习和表扬。例如:张燕龙、唐晓彤、徐怀刚、王泽连、武蒙蒙等同学。 2、有少部分同学对课程设计的目的和好处认识不足,设计不够认真。主要表此刻设计不能独立思考,编程、调试不能主动用心思考、解决问题等,个别学生甚至在课程设计没有进行任何实质性的工作。 3、也有一部分同学,对所学理论知识掌握不够扎实,不能灵活运用,自己基本上不进行设计,仅仅依靠于同组者。 4、大部分同学的程序调试潜力需要进一步锻炼和提高,这也给我们以后讲授本课程、进行课程设计提出了更高的要求。 三、体会和设想 1、对《C语言》课程的学习,课程设计是十分重要的环节,它对巩固所学理论知识,灵活运用所学知识解决实际问题、锻炼和提高学生的操作和调试技能、学生将来能否尽快适应工作都具有十分重要的实际好处。所以,从校园到老师到每一位学生都应认真对待和珍惜这个机会,严肃认真做好每一步工作,使课程设计圆满完成。 2、透过课程设计,也反映出对C语言中的一些难点资料,如指针、结构体等,大部分学生掌握得不够好,在平时授课中需进一步深入讲解、多加练习,以使学生在本课程学完后对其能有一个全面、熟练的掌握。 3、要使课程设计到达锻炼提高学生技能的目的,还应注意以下几点: (1)提前布置课程设计任务,可在学期开始就布置下去,使学生在整个学期的C语言学习中都有一个明确的目标和足够的压力,并将课程设计中的资料和出现的有关问题渗透于教学过程中。 (2)务必从思想上使学生对课程设计有足够的重视,并在设计过程中严肃认真检查、督促; (3)注意课程设计的指导方法,加强预设计过程的检查和指导,不能只给他们“鱼”,而应授之以“渔”; 1.1 C语言概述 C语言是国际上广泛流行且很有发展前途的计算机高级语言,不仅用来编写应用软件,也用来编写系统软件。C语言功能丰富,使用灵活,可移植性好,深受广大用户欢迎。C语言的数据类型丰富,既具有高级程序设计语言的优点,又具有低级程序设计语言的特点;既可以用来编写系统程序,又可以用来编写应用程序。(例如,著名的UNIX操作系统就是用C语言编写的)因此,C语言正在被迅速地推广和普及。.2 C语言出现的历史背景 在C语言诞生以前,操作系统及其他系统软件主要是用汇编语言实现的。由于汇编语言程序设计依赖于计算机硬件,其可读性和可移植性都很差,而一般的高级语言又难以实现对计算机硬件的直接操作,因此人们需要一种兼有汇编语言和高级语言特性的语言。C语言就是在这种环境下产生的。它最早是由Dennis Richie于1973年设计并实现。它的产生同UNIX系统之间具有非常密切的联系——C语言是在UNIX系统上开发的。而无论UNIX系统本身还是其上运行的大部分程序,都是用C语言编写实现。同时,它同样适合于编写不同领域中的大多数程序。 C语言已经成为全球程序员的公共语言,并且由此产生了当前两个主流的语言C++和Java——它们都建立在C语言的语法和基本结构的基础上,而且现在世界上的许多软件都是在C语言及其衍生的各种语言的基础上开发而成。 目前,在微机上广泛使用的C语言编译系统有Turbo C、Borland C++、Microsoft Visual C++等。虽然它们的基本部分都是相同的,但还是有一些差异,本程序的设计采用Turbo C作为上机编程调试环境。 C语言特点和用途 ①语言简洁、紧凑,使用方便、灵活。共有32个关键字,1 9种控制语句。 ②运算符丰富,公有34种运算符。 ③数据结构丰富,数据类型有:整型、实型、字符型、数组、指针、结构体、共用体等。 ④具有结构化的控制语句(如if„else、while、do„while、switch、for) ⑤语法限制不太严格,程序设计自由度大。 ⑥允许直接访问物理地址,能进行位(bit)操作,可以直接对硬件操作。 ⑦生成目标代码质量高,程序执行效率高。⑧可移植性好。C语言的用途 C虽不擅长科学计算和管理领域,但对操作系统和系统实用程序以及对硬件进行操作方面,C有明显的优势。现在很多大型应用软件也用C编写。 C语言程序一般用小写字母,而仅在一些宏定义中,将常量名用大写字母表示,或对一些有特殊意义的变量,偶尔也用大写字母表示。C语言中对大小写字母看作两个变量。 在C语言的程序设计中,用户程序的功能快都是一些函数,而函数在定义时,可选用省略号来表示参数类型和个数的不确定性。如function(F1,„)的函数的第一个参数F1表示为某种类型的变量,而后的其它参数无论是类型还是参数个数都不确定。在c函数调用时,参数或参数的指针都被压入堆栈,并且最后一个参数最先进入堆栈,第一个参数最后进入堆栈。如果小系统模式编译,变量的指针为2字节,如果用大系统模式编译,变量的指针为4字节,如果我们求得第一个参数指针在堆栈内的地址,加上变量指针的字节数,再取相应内存的内容,即求出其它各参数指针在堆栈内的地址,从而可引用用省略号说明的参数。第二章 开发环境及相关技术的介绍.1开发环境介绍 TURBO C是DOS上的一个C语言系统,它也能以全屏幕方式或窗口方式运行在各种Windows环境中。TURBO C符合ANSI C标准。TURBO C的组成部分包括C语言编译系统,连接系统,ANSI C的标准函数库和一批扩充库函数等。另一重要组成部分是一个集成化程序开发环境,用户可方便地在其中编辑、编译、调试和运行自己的程序。 今天微机上的C语言系统很多,有些新系统的功能更强大。但TURBO C环境有许多特点,在基本的C程序设计课程教学中被广泛使用。本系统既简单且功能完整,开始使用需要理解的概念少,容易入门,特别适合初学者。TURBO C系统对计算机要求低,在任何微机上都能很好运行,编译加工速度快,对于做程序练习和一般的程序开发都很合适。另外,TURBO C的编程和调试环境也很完整,反映了集成化开发环境的特点。掌握了这个程序开发工具的使用方法,不但掌握了一个实用的程序开发工具,也能为进一步学习使用其他编程工具打下很好的基础 C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的 在C语言中,函数是一种构件(程序块),是完成程序功能的基本构件。函数允许一个程序的诸任务被分别定义和编码,使程序模块化。可以确信,一个好的函数不仅能正确工作且不会对程序的其它部分产生副作用。C语言的特点 第一部分 1.简洁紧凑、灵活方便 C语言一共只有32个关键字9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。2.运算符丰富 C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实 现在其它高级语言中难以实现的运算。3.数据结构丰富 C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。 4.C是结构式语言 结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 5.C语法限制不太严格,程序设计自由度大 虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。 6.C语言允许直接访问物理地址,可以直接对硬件进行操作 因此既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。7.C语言程序生成代码质量高,程序执行效率高 一般只比汇编程序生成的目标代码效率低10へ20%。8.C语言适用范围大,可移植性好 C语言有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机 C源程序的结构点特 1.一个C语言源程序可以由一个或多个源文件组成。2.每个源文件可由一个或多个函数组成。 3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。 4.源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。 5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。 本软件主要应用了二维数组﹑Switch语句﹑do—while语句等。数组:C语言可以提供构造类型的数据,他们有数组类型﹑结构体类型和共用体类型。数组是有许多数据的集合,数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下标来唯一地确定数组中的元素。第三章 开发环境的关键技术 科技的飞速发展,将人类带入了信息时代,计算机越来越贴近人的生活,速度成为人们成功的前提条件,以致于人们必须不断尝试着使用各种手段来提高自身的工作效率,其手段之一就是对键盘的充分利用和相应游戏软件的开发.智能型的游戏越来越深受广大游戏爱好者的喜欢.方便而快捷.黑白棋的游戏是要在一个8*8的网格中进行,而数组属于构造体类型,数组是具有相同数据类型的变量序列,序列中的每个变量成为元素,数组元素由一个统一标识的数组名和顺序好“下标”来表示。顾需要在游戏中定义一个二维数从而实现游戏的走棋、落棋、判断棋盘的变化等。 游戏不同于基于C语言的其他程序(如学生成绩管理系统、教务工作管理系统、图书管理系统等)由于游戏本身的问地就在于缓解压力,所以基于C语言设计的游戏需要一个良好的游戏界面,给游戏者以轻松和愉快的感觉。TURBO C提供了70多个图形函数,这些函数包括在图形库文件graphics.LIB中,他们被定义在graphics.h中。有如此强大的图形处理能力,去设计一个良好的人机交流界面是可行的。 由于此游戏采用的是“人人对战”的模式,所以在游戏时,需要俩个游戏者轮流下棋,棋手1走棋完毕后,经过判断棋盘变化过程后棋手2走棋,游戏过程需要在俩棋手间不断进行转化。在C语言中,提供了包括if„„else,switch„„case等分支语句,综合运用这些分支语句,可以完成上述转化。 黑白棋游戏双方共需要走棋60手,每次走棋后,都需要根据相同的标准判断棋盘变化,来判断旗子颜色的变化情况。显然需要运用循环语句来简化编程的长度。C语言中提供了while for等循环语句可以实现上述功能。 游戏需要操作和输出显示游戏的结果,游戏的操作要由计算机的外部设备在人的操作下完成。C语言本身并不提供输入和输出语句,输入和输出的操作都是由函数来完成的,在C语言的标准库函数中提供了一些输入和输出的函数,这些函数的指针都是针对系统隐含指定的输入和输出设备的。综合运用这些输入和输出的函数可以实现上述的功能。 第四章 程序的总体设计与实现和使用说明 程序的总体设计 1黑白棋,又叫反棋(Reversi)、奥赛罗棋(Othello),苹果棋,翻转棋。黑白棋的棋子和围棋类似。但它的下法与围棋的很不相同。它的规则是当所下的子与自己现有的子之间夹有对方的棋子时,可以将所夹的对方棋子全部反转成自己的棋子。最后棋盘上面看自己棋子最多的一方获胜。所以,在设计程序时要考虑的关键问题就是如何实现计算机自动选择落子的最佳位置。概要设计由于黑白棋程序需要跟人进行对战,自动的选择最佳的位置。因此,这就要求设计的黑白棋程序具有人工智能。实现人工智能有很多种方法,经过分析后决定采用编写估值函数的方法让计算机具有人工智能。具体就是当轮到计算机走棋时,计算机对当前棋盘局面进行估值,找出最优位置然后落子。程序还应该提供人与人对战的功能。这部分不设计到什么算法问题,完全可以通过对流程的控制来实现。通过流程控制可以实现人与人对战和人与计算机对战两种模式之间的切换。程序还应该具有保存用户下棋数据的功能。这部分功能可以通过建立并操作数据库来实现。另外为了增加程序的可玩性,所以增加了多媒体部分。准备调用WINDOWS的某些相关API来实现。3 棋盘的表示 黑白棋的棋盘为一个8*8的正方格,如左图所示。最初黑棋和白棋各两颗子占据一个方格的对角线。 在计算机中我用一个8*8的二维数组来表示当前棋局的形势,通过搜索比较,让电脑知道当前的棋局状态,寻找合适的落子点。4 运行环境(软、硬件环境) (1)硬件环境要求:配置相当于486或以上处理器;建议128MB内存(至少64MB);建议1GB硬盘空间(至少500MB);真彩色800×600或者更高分辨率的显示器; (2)软件环境要求:MS Windows 98/2000/XP等中文操作系统。游戏的使用说明 1.规则(1)用上下左右键来分别控制棋子的移动,移动到所定的位置后,按Enter表示下棋。棋子只能出现8*8的棋盘内,除了那些已经有了棋子的地方不能走以外,不能吃子的地方也不能下子。每个棋手下棋时,摆子的位置必须是以自己的棋子能包围住对方一个 或多个棋子,被包围住的对方棋子将成为自己的棋子。包围的方向可以是上下左右以及斜线8个方向,只要能连成一线即可。(2)当轮到某一个棋手下子,但是他没有可以包围对方棋子的位置时,他必须停步,让对方走棋,直到他可以走为止。 (3)下子要求下在与对方棋子相邻的空位上,要求所下的棋子和原有的已方棋子夹住对方的至少一个棋子(横竖斜夹均可),然后把被夹住的子变成己方的颜色。下棋过程中,任何棋子既不会从棋盘上拿走,也不会从一个格子移到另一个格子,吃子时,不会发生连锁反应,吃进的棋子不能再夹吃其他的子。当双方都无棋可下,或者方格全部占满后,棋局结束,棋子少者输,子多的一方为胜方。 (4)ESC 退出总游戏。 第五章 总结 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。 我的题目是文章处理系统的设计,对于我们这些新手来说,这是很大的考验,我一千次一万次的问自己,怎么才能找到课堂所学与实际应用的最佳结合点?怎么才能让自己的程序在篇幅上简单,在使用价值上丰富?怎样让自己的业余更靠近专业?怎样让自己的计划更具有序性,而不会忙无一用?机会是老师,学校,以及无数代教育工作者给的,而能力是自己的,耐性是需要的。经过自己的琢磨,听取了师姐,师兄们的建议,还查阅了很多书籍,才做到了心中有数,才了解了C语言课程设计的真正用意——培养自学能力,养成程序编辑的好习惯。我从来不相信车到山前必有路的说法,认为那只是懒惰者自寻懒惰的借口,我要积极,要把握,要努力。 回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体„„通过这次课程设计之后,一定把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在郭老师的辛勤指导下,终于游逆而解。同时,在郭老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢 在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。老天不会让我太过顺利,他在这最后的时刻设置的障碍,是要考验我的能力,他要置我于死地?在这个问题的解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。没有了柳暗花明的一天,那么我怎么能说经受住了考验?谢谢老师的那句话,她说:人力有所不能及,然而,人的精神是不会败倒的。我鼓起勇气,到处问,到处查资料,黄天不负有心人,在一篇文章上,终于看到了我所特别要求的函数,我实现了组合是关键的理论。不得不说这是精神的胜利,是永不言败的精神让我的程序重见天日。谢谢给我指点迷津的老师。 6月11日,我们的课程设计结束了,但是它留给我的印象是不可磨灭的。无论我以后会不会涉及到C语言程序编译的研究,我想,我至少掌握了一种系统的研究方法,我们学习的目的就在于运用,我们运用这种研究方法的时候会很多,我最后要感谢课程设计,它的确教会我很多。 附录 源代码 C语言程序是计算机专业本科教学计划中不可缺少的基础课程, 其教学效果对学生今后其他专业课程的学习及毕业后的专业工作前景都有重要的影响。该课程都具有实践操作性很强的特点, 但由于课堂教学和实验的深度和广度有限, 存在学生动手编程能力培养不足的问题[1]。因此目前高等院校在该课程结束后都开设了课程设计作为实践性教学的补充。 《C语言程序设计》课程设计的目的是通过综合训练, 引导学生应用C语言程序所学的各知识点, 解决实践问题, 帮助学生系统掌握相应课程为后续课程打下坚实的基础, 并培养学生初步分析问题解决问题能力、编程和动手能力、文档书写和表达能力、及团队合作能力, 提高学生今后就业的竞争能力。 当前程序设计课程教学仍然是以程序设计语言为主, 以概念为主, 以书面教学为主, 往往把这门课程当成以概念和知识点学习为主理论型课程, 忽视了对实际能力的培养。而课程设计传统的教学模式面临着同样问题, 其教学过程是由教师首先讲解某一具体实例, 给出计任务和基本的功能结构框架, 接着由学生按照老师要求, 仿照实例自行完成任务并提交报告, 最后由教师进行评价。这种教学模式往往很难达到理想的教学效果。 2、存在问题及原因 以下从学生角度和教学角度两个方面分析传统教学模式存在的问题。 2.1 学生方面问题 《C语言程序设计》课程的学习, 很多学生反馈这门课程难度很大, 语法知识太多, 理解和记忆困难。即使理解了课本的知识, 由于课程中所有提供的实例及所做的实验都仅针对某一知识点, 实用性不强, 面对要求综合应用所有知识去编写解决实际程序还是有很大困难[4]。 进入课程设计环节, 基础较好的学生对所接到的针对实际问题的任务, 感觉兴奋, 能顺利完成任务, 但往往仅能照搬老师所给实例解决相同问题, 若任务问题有所变化, 无法做到分析新问题并给出解决方法。基础较差的学生则表现为不知所措, 为难情绪严重, 提不起兴趣, 只想着怎么能蒙混过关。 完成课程设计后, 学生反馈感觉像又做了一次大实验, 并不能体会程序开发实际工作过程。此外由于较为容易蒙混过关, 成绩评定存在不公平。 2.2 教学模式的问题 课程设计采用传统的教学模式存在以下不足: (1) 未能有效的培养学生分析与解决问题能力。课程设计的传统教学模式仍然是“理论+实验”方式, 以教师书面教学讲解实例为主, 并给出任务和基本的功能结构框架, 学生听完后做。教师处于“主动”地位, 而学生处于“被动”地位。这中方式不利于实践环节的教学, 不能让学生充分参与其中, 因而学生的分析问题解决问题能力都得不到有效培养。 (2) 缺乏实践过程的监控。传统教学模式中, 任务的完成往往由学生自行完成, 最后提交报告。程序设计、编程、调试及测试等各个环节没有教师参与, 往往无法防范学生通过抄袭蒙混过关, 最终影响成绩评定的公平性。不利于调动学生学习的积极性。 (3) 传统教学模式中, 教师依据学生最终提交的设计报告进行评分, 未能综合考虑学生在各个环节的表现, 评分机制欠公平。 3、改革与探索 3.1 指导思路 改革传统课程设计教学模式, 通过加强实践过程管理及改变评价方式, 由原来教师为主导, 学生被动练习方式, 改为学生动手练习为主, 教师参与指导与监控的方式, 达到培养学生各方面能力, 并有效调动学生学习积极性。 3.2 加强教学过程管理与监控 传统教学模式忽略整个实践环节的监控, 容易导致部分学生蒙混过关, 不能达到理想的教学效果。为了加强对整个实践过程的监控, 改革课程设计的教学过程, 先将学生分为各学习小组, 每个小组3到4人, 同时将整个实践环节分为四个阶段:设计阶段、编程调试阶段、测试阶段及答辩阶段进行管理。 (1) 设计阶段, 小组需要针对设计任务要求自行查询有关资料, 并组织讨论得到任务的需求分析及总体模块设计框架, 将各模块设计任务分配到成员。各成员完成各模块流图后再次进行讨论完成设计报告。每次讨论结束提交讨论记录。教师可参与小组讨论, 或通过检查各小组讨论记录了解各小组进展情况进行相应指导。 (2) 编程调试阶段, 在设计报告通过教师审核后, 小组进入编程调试阶段。本阶段要求小组成员在限定的时间内各自编写设计阶段分配到个人的功能模块程序, 并完成各个功能模块调试。接着小组展开联编调试, 并记录调试过程, 提交调试报告及最后源码。同样教师可参与小组调试并对遇到困难的小组予以协助。 (3) 测试阶段, 本阶段需要小组之间交换源码进行测试, 并提交测试报告。由于《C语言程序》课程设计往往设在大一, 学生未接触过测试方法的内容和知识, 因而本阶段开始之前需要教师补充部分基本测试方法的理论知识, 并给出测试报告示例。 (4) 答辩阶段, 各小组在限定时间内论述所做设计的方法、特点及创新点, 而教师与其它小组可提问, 小组成员代表回答, 最后教师给予点评, 以达到各小组相互学习相互促进的目的。 实践环节的四个阶段, 教师通过直接参与或检查报告能有效的监控整个过程, 并了解各学生的实际动手情况。 3.3 注重各方面能力的培养 与传统教学方式不同, 通过合理安排实践过程, 学生的各方面能力都得到锻炼。在设计阶段, 能培养学生的主动学习能力和创新能力;在编程调试阶段不仅锻炼了学生的动手编程能力, 还通过小组的协作完成, 培训了学生的团队合作能力;而答辩阶段有利于培训学生的表达能力。各阶段的报告锻炼了学生的文档书写与表达能力。 3.4 改革评价方式 传统的教学模式, 学生对成绩评价存在不满, 因此有必要改革评价方式。首先, 将成绩评价由教师一人评定, 改为由学生与教师一起参评。在测试阶段, 各小组给所测试组评分, 答辩阶段, 答辩成绩为其他各小组评分的均值。其次, 教师能够通过对实践环节的监控了解小组成员所完成的任务大小及质量, 再给出综合评价。学生评分占40%, 教师评分占60%。评价方式如表1所示。 4、结束语 在采用新教学模式的两个学期以来, 在本校学生网上评教系统上, 学生给出了89, 90的综合评分, 不再出现对成绩评定不公平的意见, 很多学生谈到实践过程中克服困难与收获的喜悦。 从学生反馈来看, 在《C语言程序设计》课程设计教学中采用以学生为中心的思想, 通过合理组织各实践环节, 加强教师对各环节的监控与引导, 在环节注重学生的各方面能力培养, 能避免学生蒙混过关, 有效调动学生的主动性与积极性, 取得了较好的教学效果。 摘要:本文根据作为“C语言程序设计”综合实践环节的课程设计的教学目标, 分析了目前课程设计的教学模式下存在的一些问题, 针对问题提出了改革教学过程、评价方式的一些办法与措施。 关键词:C语言,课程设计,教学模式,教学过程 参考文献 [1]尹宝林.“C语言程序设计”课程建设的思考和实践[J].计算机教育, 2009 (23) :129~141 [2]祝胜林, 邢仲璩, 林丕源.“C程序设计"专业基础课程中三种能力培养的教学探索[J].计算机教育, 2009 (20) :10~13 [3]廉佐政, 王海珍, 李敬有等.程序设计类课程设计的教学模式研究[J].高师理科学刊.2009 (6) .11:95~97 【关键词】C语言;教学方式;评价系统 1.引言 现阶段,我们国家的很多高职院校都将C语言看做是比较重要的课程,并且是计算机专业学习的基础,但是,经过相关调查显示,在学校任职的教师在对C语言进行教学的过程中,比较普遍的反映就是比较难教,并且在教学的过程中教师基本上比较注重基本的专业知识的培养,而学生在学习C语言的过程中基本上的反应都是比较难学,所以说在C语言的教学过程中无论教师还是学生都极为不满意。 经过笔者深入的调查研究发现,在实施C语言程序设计的教学过程中主要存在以下几个问题:第一,在教学的过程中教师处于主体地位,学生基本上只是负责接收教师教的基本理论知识,不能有效的和老师进行互动,不能积极的发表自己的观点。第二,在教学过程之中,对学生细微意识的培养还远远不够。第三,对于学生成绩的好坏进行的评价基本上都是以考试成绩进行评价的,这样的评价方式明显是不合理的。第四,对于学生独立思考的培养不够,虽然在教学结束之后学生能够进行简单的编程,但是其综合素质方面是十分不完善的。 2.问题一,转变教学观念和教学模式 在教学过程中要不断的重视学生自主能力的培养,在学习过程之中要不断引导学生积极主动的学习,进而使得他们在学习方式上有所转变。对于在教学的过程中教师的教学地位进行重新的定义,经过研究之后教师在教学的过程中其地位主要在下面几个方面体现:(1)负责对课程进行设计。在教学的过程中,教师对于案例进行合理的分析,然后在此基础上进行教学,主要的目的是对学生的思维能力进行培养,为学生架构比较完善的知识体系结构。(2)在学生之间组织共同学习。在C语言的教学过程中分成不同的小组,然后让小组之间经常进行交流,那么一定程度上能够培养学生独立思考的能力。在教学的过程中最为主要的是要让学生了解为什么要学些C语言,不然在学生不知道为什么学习的情况下进行学习,那么他的学习就会存在一定的盲目性。(3)教师在学生学习过程中还要扮演一个合作者的角色。在教学的过程中要对学生的优点进行肯定,对于不同的学习要采取适合他们的教学方法,培养学生的兴趣,对于不同学习程度的学生设计不同的学习目标。(4)在教学过程中要及时的进行反思。主要是对教学过程中的教育方式、态度以及教学的重点进行反思,在此基础上对教学的过程进行总结,使得教学水平有效的提高。 3.问题二,协同学习与合作研究方式 由于信息技术的快速发展,使得个人获得知识的渠道有限。在教学的过程中可以根据学生的学习水平以及性格等各个方面,将能够互相学习的小组放在一个小组,这样在学习的过程中这些学生能够自主的进行学习。在学习的过程中,为了更好的掌握所学的知识就会更加及时的进行交流,久而久之也就形成了合作研究的学习方式。 4.问题三,编写符合学生思维规律的讲义 在C语言教学的过程中,之前对于语法一直都比较看重,教科书在编写的过程中比较的难懂,处于学习阶段的学生对此根本不能完全理解。在这样的教学模式之下,就使得学生即使能听懂C语言课程,但是却不能妥善的进行应用。在这样的背景之下,在编写C语言的教程的时候,需要按照学生的思维方式进行编写,这样使学生更加容易理解,并且在理解的基础上能够投入实用。教学过程中要注意培养学生的综合素质,不要使得培养的学生只能进行理论研究,却不能够将学习到的知识投入实用。 5.问题四,注重研究带动教学 随着教学改革的实施,现阶段属于一种创新性的教学模式,现代社会的发展最需要的就是创新型人才,要想培养这样的人才就需要运用创新型的教学模式。在创新性教学模式中,教学的主体是学生,教学的过程主体也是学生,因此在教学过程中一定要注重学生、教师间及时的交流沟通,同时强调在教学过程中教师、学生共同参与的重要性,最大限度的使学生创新思维的能力得到有效培养。 6.问题五,丰富教学方法和教学手段 在教学过程中,一定要充分考虑学生要求,然后根据学生可以接受的学习方式来进行教学,改变传统老师教、学生听的教学模式,对比较受学生欢迎的教师组织学习观摩,使得教学成功的案例被有效的推广。随着现如今互联网的快速发展,可以依靠互联网带动教学发展,并把传统教学模式融入到互联网教学中,进而大幅度提高教学小龙。对于那些难以理解的部分,增加动画演示。在教学的过程中要注意引导学生自主进行编程。请比较优秀的学生传授起学习的经验,培养学生合作的精神。 7.总结 经过一段时间的实践之后发现,现阶段我们所使用的教学方法是比较合理的,因为已经取得了非常显著的研究成果。在运用该教学方法之后学生自主编程的能力得到有效的提高,并且学生之间懂得了如何进行团队协作,学生对于为什么学习C语言也有了一个较为全面的认识。对于C语言的教学模式进行改革不是短时间内就能完成的,接下来还需要做很多的研究。 【参考文献】 [1]任正云.课程建设的探索实践与研究——以《C语言程序设计》为例[J].电脑知识与技术,2016(19) [2]赵震伟.应用型高校《C语言程序设计》课程教学改革[J].黑龙江科技信息,2016(24) [3]陶荷芳.浅谈如何在C语言教学中培养学生的合作能力[J].读与写(教育教学刊),2014(02) [4]陈效兰,张岩.师生互动式研究型教学对创新型人才培养的探索[J].教育探索,2008(10):35-36 【c语言课程设计1】推荐阅读: C语言课程设计选题09-15 《C语言课程设计》 教学大纲11-28 c语言课程设计计算器12-03 《C语言程序设计》课程教学大纲12-15 c语言程序设计课程教学大纲20107-26 A01_C语言程序设计课程说明05-14 C语言课程08-31 c语言课程心得07-23c语言课程设计总结 篇5
C语言课程设计黑白棋 篇6
c语言课程设计1 篇7
c语言课程设计1 篇8