c语言程序设计范例6篇

前言:中文期刊网精心挑选了c语言程序设计范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。

c语言程序设计

c语言程序设计范文1

(中国矿业大学(北京) 机电与信息工程学院,北京 100083)

摘要:分析C语言教学中存在的普遍问题,从教学内容组织形式、教学方法以及考核方式等方面提出一系列有针对性的教学方法,指出这种教学方法能有效地提高学生的学习效率和质量。

关键词 :C语言程序设计;公共基础课;教学方法

基金项目:北京高等学校青年英才计划项目;煤炭资源与安全开采国家重点实验室开放课题(SKLCRSM11KFB12)。

作者简介:王振武,男,副教授,研究方向为数据挖掘、图形图像处理,wangzhenwu@126.com。

0 引言

为提高大学生利用计算机解决问题的能力,全国高校普遍为理工科专业的低年级学生开设了C语言程序设计这门必修的公共基础课程。一方面,该课程是学生接触的第一门程序设计类课程,其编程思维的养成是一个较长的过程;另一方面,该课程具有内容繁多、知识点关联性强、算法抽象、实践性要求高等特点,学生在学习过程中易产生畏难心理,进而出现学习动力不足、积极性不高等问题。C语言程序设计是一门难学也难教的课程,目前在教学上普遍存在很多问题。文献[1-4]对C语言程序设计的教学方法给出了建议,但都不够系统和全面。

1 C语言程序设计教学方法研究

1.1 理论教学

对于大多数课程而言,从宏观上将课程知识点及其关联讲授给学生非常必要,这便于学生更加系统深刻地理解所学内容。笔者以文献[5]作为教材讲解C语言程序设计的知识点结构。如图1所示,知识点之间的关联可以层层细化,教师首先从宏观上给学生介绍C语言程序的整体组成结构(如图1-(a),然后针对图1-(a)中一个源程序文件的组成成分举例介绍,如图1-(b)所示。在图1-(b)中,教师对涉及的知识点进行归类,共包含预处理命令、数据类型、运算符、语句和函数等5部分,然后图1-(c)至图1-(i)依次层层展开上述各类知识点的组成,逐步细化。

从宏观上梳理C语言与程序设计课程的知识点是非常必要和重要的,这样可以避免学生“只见树木,不见森林”,最后只学到一堆零散的知识点,只有从宏观上把握各个知识点在知识体系中的位置和作用,才能学得深、记得牢。

对于程序语言课程,如果仅仅介绍语法的运用,学生往往对知识点理解不深刻。我们在教学实践中的体会是:在讲解C语言语法的基础上,适当地剖析编程语言在计算机中的运行机制,会让学生的理解更加透彻。因此,我们的课堂教学方法分为如下两部分。

1)课件讲解。

课件讲解包括两部分,即知识点要点总结和知识点运行机制剖析。知识点要点总结就是告诉学生该知识点如何使用;而知识点运行机制剖析则告诉学生该程序在计算机内存中的执行过程。由于绝大部分高校在开设C语言程序设计之前都会开设计算机文化基础等课程,因此学生有足够的计算机基础知识来理解C语言程序的运行机制。

2)实例演示。

作为一门编程语言,C语言需要在实践中理解和掌握,因此,课堂教学中,在具体的编程环境(如VC++6.0)下演示十分必要。通过在具体的软件环境下编程,告诉学生应该做什么和不应该做什么,并总结该知识点的注意事项。相比传统的脱离编程环境,只在PPT或黑板上进行板书的教学模式,该方法的教学效果要好得多。在课堂教学中,具体的教学步骤如下:①使用PPT或者板书列出该知识点的注意要点;②在编程环境(如VC++6.0)下演示该知识点的用法,给出正确的和错误的使用方法,并进行对比;③通过幻灯片动画或flash动画等形式演示程序在计算机内存中的执行过程,让学生更加深刻地理解程序的运行机制。

3)教学难点与重点——“复合知识点”。

从C语言的教学内容来讲,数组、函数和指针是教学的重点章节,这些章节之间相互关联的部分又是重点中的难点,如数组和函数结合,数组名做函数参数,数组和指针结合,指向数组的指针变量,函数和指针结合,指向函数的指针变量等。在教学过程中要反复强调各个知识点的注意事项,如果基本知识点能够理解透彻,上述难点内容也就迎刃而解了。

1.2 上机实践教学

在实践教学中,教师可以通过实际教学案例循序渐进地强化学生对C语言知识点的理解。上机实践的教学内容通常分为两部分:基本知识点练习和综合训练。首先通过基本知识点的练习,让学生掌握该知识点的使用,即巩固课堂所学内容;然后通过一个综合性的大作业,训练学生综合应用C语言知识点的能力,例如,通过编写“学生课程成绩统计系统”考查学生对数组、结构体、指针、函数、文件等知识的综合掌握情况。

对于初学编程语言的学生,往往没有养成良好的编程习惯,出错的可能性较大,而出错之后进行调试又将耗费较长的时间,这势必对学生的学习热情产生负面影响。因此,一开始就给学生制定科学的编程步骤和规范,使学生养成良好的编程习惯,将大大减少程序出错的可能。在C语言教学实践中,我们总结了“五步编程法”:①定义变量,如“int a;”;②对变量进行初始化,如“a=0;”,对变量进行初始化操作是一种良好的编程习惯,可防止未对变量赋值而引起的隐性错误;③通过scanf语句赋值,如“scanf(“%d”,&a);”;④实现程序的主要算法,该部分是程序的主体;⑤通过printf语句将结果输出在显示器上,将结果输出在显示器上便于比较程序运行结果是否正确。

下面是按照上述五步编写的一个完整的C语言程序,用来比较两个整数的大小。按照上述五步进行编程,经过一段时间的训练之后,学生出现语法错误的可能性大大降低,此时学生更多的精力将集中在程序算法的设计和实现上。

1.3 考试形式

对于C语言程序设计的考核方式,我们采用知识点考核和编程实践相结合的方式。知识点考核偏重于C语言基本语法,用于检验学生对知识点的掌握是否全面,此项考核约占总成绩的40%;编程实践考核用于检验学生的实际动手能力,学生将在规定的时间内根据题目在机器上编程,此项考核约占总成绩的60%。为了实现知识点的考核,我们将考试与计算机二级C语言上机考试紧密结合,采用题库平台进行上机考试,学生直接在机器上答题并提交,知识点考核多采取客观题,如填空题、程序修改题以及读程序题等,编程题在实战编程中考核。C语言程序设计课程的重要特点就是实践性强,学习该课程的目的就是为了编写程序。因此从考试的角度讲,进行编程实践是最合适的方式,通过上机编程来考核学生的学习情况也是最公正和客观的方式。

2 C语言程序设计教学实践结果分析

中国矿业大学(北京)每年都有40多个班级同时开设C语言程序设计课程,因此该课程教学质量的高低将直接影响全校理工科学生对C语言的理解和掌握。中国矿业大学(北京)C语言程序设计教学团队经过长期的探索总结出一套行之有效的C语言教学方法,我们将上述方法在学校越崎实验班中进行了试点。如图2所示,采用上述教学法的越崎实验班的C语言程序设计课程考试成绩要明显好于其他班级,其中90分以上的学生占10.7%,80分以上的学生占总人数的53.6%。另外,学生的学习积极性比采用上述方法前得到明显提高,很多学生都对计算机编程产生了浓厚兴趣,实践证明我们提出的上述方法是行之有效的。

3 结语

中国矿业大学(北京)C语言程序设计教学团队在长期的教学实践中探索出的这套教学方法被证明是行之有效的,它能够极大地提高学生的学习兴趣,不但让学生学得会、记得牢,而且能够举一反三,把该方法应用到其他编程语言的学习中。长期的教学实践使我们深刻地认识到,教学方法的好坏对提高教学质量有直接和重要的影响。我们团队提出的这套教学方法是对C语言程序设计教学方法的初步尝试,希望能够对高等院校C语言程序设计教学方法的研究起到抛砖引玉的作用。

参考文献:

[1] 谢中科. C语言程序设计的教学改革与实践[J]. 理工高教研究, 2004,3(23): 96-97.

[2] 简慧云. 提高C语言程序设计教学质量的探讨[J]. 理工高教研究, 2004, 6(23): 83-85.

[3] 王孝平, 董秀成, 谢维成.提高电器信息类专业学生C语言学习能力的教学方法探索[J]. 高等教育研究, 2012, 2(29): 37-40.

[4] 张丽华, 王冬星. 自主学习教学模式在C语言教学中的运用[J]. 黑龙江教育: 高教研究与评估, 2009(12): 91-92.

c语言程序设计范文2

关键词:C语言程序设计实践教学;课时统一化;小组竞赛;网络平台

中图分类号:G642.41 文献标志码:A 文章编号:1674-9324(2015)51-0224-02

在21世纪信息技术时代,大学生不能只满足于会用办公软件。为了迎接新世纪的挑战,无论计算机专业还是非计算机专业的学生,都应当学习C程序设计课程,并且把它当作进一步学习与应用计算机的基础。C语言作为一种程序设计语言,它功能强大、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高低级语言的许多优点和特点,适用于编写系统软件,又能方便地用来编写应用软件[1,2]。因此,C语言程序设计作为第一门计算机语言教学显得尤为重要,且实际上它也日益受到各个高校的重视。然而,当今大学生在学习这门课程的过程中却出现了各种问题,如学不会、不想学、听不懂,这些问题逐渐地恶性循环,致使这门课程没有完全发挥出价值,形同虚设。所以,我们亟需大家探讨并发现问题,解决问题。

一、实践教学现状

C语言程序设计作为一门计算机基础教育课程,已经在各高等院校开设,现各高校普遍采用板书或多媒体讲解概念、语法、教材,然后让学生上机操作,这种方式存在弊端,致使大部分学生只能读懂程序而不会编写程序,甚至一部分学生变成程序代码的“搬运工”,与我们的教学目的背道而驰。根据目前的教学状况,C语言程序设计的教学存在以下一些问题。

1.学生的参与度不够。在传统的教学中,教师采用的是全板书形式,如今,多媒体普及,教师又改为全多媒体教学[3]。实际上,多媒体就是节省板书时间,但依然是教师照本宣科地讲,学生一头雾水地听这种陈旧的模式。一味地采取“填鸭式”教学,从头讲到尾这样被动的课堂,学生就是一名观众,没有参与到学习与思考中来,正因如此,学生注意力不集中成为一件高频率事件,等学生再集中注意力回归课堂,会发现对教师的话已经是不知所云,所以为了保证学生高效率听课,一定要让学生参与其中。

2.理论与实践脱节。现在,大多数高校普遍存在的一个问题是课时总量不够,时间安排也不适当,表现在师资力量匮乏,教学班级多,教学任务繁重。以笔者所在的学校为例,一个学期理论课共42个授课课时,26个上机实验课时,加上各种节假日,上课的时间少之更少。C语言程序设计是长期的、逐步深入的教学过程,依照现在的教学任务设置,教师要想按照考试大纲要求进行讲解,就只能加快教学进度,顾不上对实践内容进行详细讲解,结果导致学生的实际操作能力偏低,但若全部进行机房实践,又不利于学生掌握基本理论。而且,为了教学课程的安排,通常学生的上机实验课会比理论课晚两天左右,甚至周一理论课,周五才安排上机操作,不能将实验与课堂教学环节很好地进行连贯,导致理论与实践的严重脱节[4]。

3.实践与应用太少。学以致用是学生学习的最终要求,我们的教学目的是让学生可以运用所学的知识读懂程序、编写程序,然后去解决实际问题,而现在高校的大部分学生做不到这一点。目前,多数高校的学生学习C语言程序设计这门课程的学习方法非常不到位,即在课堂上,学生仅仅翻开教材,盯着讲台听课;在上机课上,学生也只是按照课本照搬程序。除此之外,在课余时间,学生们不巩固复习教材,也不看程序,更不会自己编写代码。如此下去,他们的实践能力不仅不会提高,反而极大地降低了他们对C语言程序设计的学习兴趣。

4.实践未得到及时反馈。由于课时紧张,教师不能将学生上交的实践报告或上机操作的实验结果及时地反馈给学生本人,以致于学生不能在第一时间对自己的错误或疑惑有进一步的了解与解决,造成学生盲目地学习,甚至不学习。但等到课堂上,教师也不能占用大部分时间去点评学生的实践结果而耽误课程的进展。另外,新的知识点讲完就会有新的练习内容,如此积累,工作量繁杂,学生对之前编程的细节也会慢慢忘记,更重要的是程度较落后的学生会出现知识的缺陷,长此下去,学习困难的打击会使学生的学习兴趣急剧下降。

二、教学方法

要解决上述问题,我们就要紧紧抓住学生的实践锻炼,重视实践教学,明确实践教学方法,才能使我们的教学目标达到事半功倍的效果。

1.课时统一化,采用多种方式考察。既然由于课时原因,全理论授课与全上机操作导致学生的参与度不够,理论与实践脱节,我们可以统一课时,即我们的C语言程序设计课程全部在机房授课。如今,机房设施完备,软硬件已足够完善,我们可以选择在机房授课,利用机房的多媒体与黑板,讲解理论知识,遇到需要学生动手的地方,可以让学生及时地动手操作。教师完全不用担心在授课时,学生玩电脑游戏影响听课,我们可以远程控制桌面,实时控制学生的电脑,进行各种操作,提高学生的听课效率。同时,系统还可以自动统计出勤率,比点名更加快捷,具有实时的监督作用。另外,教师再也不用担心学生由于近视问题而看不清多媒体屏幕。其次,这种机房授课以多种方式对学生学习状况进行考察,例如提出问题法、纠错奖励法、学生演示法、小测试法……提出问题法是指教师提出一些重点或难点问题,由学生来回答;纠错奖励法指教师给出某个算法或程序让学生去发现其中的错误并纠正,最快找出的学生给予小小的奖励,如一张精美的书签、一句鼓励的话语等;学生演示法指的是找一名学生到教师端编写一个小程序或某个算法中的易错点,以此找出学生的通病,引起大家的注意;小测试法是在课堂最后十分钟左右给学生发放一份提前写好的试题,两到三题即可,可以按照计算机二级等级考试模式编写,学生提交,系统直接核对,省时省力。这样多种方式进行考察,真实地反映学生对该节课的掌握程度,也让教师真正了解学生的学习情况,以便进一步开展教学工作。

2.小组竞赛法,模拟各种编程竞赛。为了激发学生的学习兴趣,增强学生的动手实践能力,可以采用小组竞赛的方法来加强学生对C语言课程的学习。整个班级可以自由分组,两到三个人一组,教师布置相应的编程题目,要求学生在规定的时间内上交,由教师来评分,选出程序最清晰、代码更简练的一组。在学期中后期,学生拥有一定的基础和能力的情况下,可使其参与评选过程,通过评选人员相互交流讨论,在提高被评学生编程能力的同时使参评学生也有所提高,即所谓的“教学相长”。除了进行班级内小组竞赛,还可以进行班级之间、专业之间集体赛。依然是先在班级中进行初选,再经过层层选拔与淘汰,指出各方的优缺点,最终评出优秀、良好等。奖项不是重点,关键在于让学生都参与到实践活动中来。通过以上各种形式的竞赛,可以提升学生对C语言的学习兴趣和编程能力。

3.网络交流法,建立多种网络平台。伴随网络化时代的到来,教师可以通过多种网络平台与学生交流、互动,及时指出并解决问题。如教师可以给每个班建立一个QQ讨论组、微信群,如果学生在课下时间有难题或者对课堂上的知识点有疑问,可以在第一时间通过网络交流平台和教师取得联系,以此使得“教学课堂”在时间和地域上得到无限制的延续。另外,通过网络平台,教师还可以给每个年级建立公共邮箱、论坛,用来分配任务、布置作业、共享教学资源等。更重要的是,教师可以把一些实践或实验发到网上,对学生的作品进行网上点评,把优秀的程序分享给大家,同时指出学生的不足之处,到网上,学生自行查收,及时地给学生反馈。另外,这些平台还可以作为学生们的“讨论网”,大家自由交流各自的学习经验与学习心得,成为学生在线学习交流、在线测试的途径。通过各种网络平台,使教师与学生、学生与学生的交流不受时间的限制、地点的约束,由学生自主地选择学习,从而解决教学时间不充足的问题,消除教师与学生之间在时间和空间上的距离感,进一步方便学生及时解决疑惑,及时得到反馈,取得更有效的学习效果。

本文探索的一些方法和改革创新是优缺点共存的。研究发现,采用以上多种方法相结合,一环扣一环的教学组织与管理,能保证学生学到一定的知识。没有最棒的方法,只有最适合自己的方法,我们做的就是尽可能给予学生指导,建立良好的学习氛围。但是,如果学生对自己不负责任,学生之间存在相互包庇、帮忙完成实验上机报告等问题,将影响整个教学效果。所以,教师要特别关注这些学生,经常鼓励、辅导他们,督察学习情况,特殊情况特殊处理,引导和帮助他们找到自己的学习目标和学习方法。C语言程序设计成为越来越多高校学生选择的课程,也是全国计算机等级考试的选择之一。我们要紧跟时代的步伐,不断更新教学内容,分析和探讨C语言程序设计教学过程中存在的问题,进行教学方法的改革,适应时代需要,做好十足的准备去迎接未来的挑战。

参考文献:

[1]谭浩强.C语言程序设计(第四版)[M].北京:清华大学出版社,2010.

[2]薛小锋.《C语言程序设计》教学方法探析[J].福建电脑,2004,(01):87-88.

c语言程序设计范文3

[关键词]C语言 程序设计 能力培养 教学改革

[中图分类号]G642 [文献标识码]A [文章编号]1009-5349(2015)12-0232-01

一、当今《C语言程序设计》课程的教学现状

《C语言程序设计》这门学科的教学内容及功能是非常强大的,应用范围也很广,数据结构相对比较复杂。该课程的语法检验结构相对比较薄弱,相对没有编程基础的大学生来讲,要很好地学习和理解C语言的知识和程序设计方法,需要熟练各个知识点和语法结构。以往《C语言程序设计》课程教学大多主要以C语言的语法为主要讲授知识点,将教学的重点放在语言的语法知识上,因此,很大一方面就忽视了在解决问题和编写程序语句时如何能更好地应用有效的教学方法。很多学生在掌握语法知识后,不知道如何去编写程序来解决实际问题。

二、《C语言程序设计》课程改革的几点想法

(一)对教学内容进行重组

一方面教师要充分考虑到没有了解程序语言设计和不懂编程经验的学生,要将教学的重点放到C语言的理论语法知识上,全面讲解《C语言程序设计》课程的基本语法知识。面对新的教学内容,要避开以往传统的细节语法知识讲解,引入一套新的教学思路,要以具体的实例编程去营造一个好的教学环境和教学方式,将学生引入要让自己有能力、有想法去判断和总结理解掌握C语言的语法知识以及编程方法。通过第一阶段的理解学习,很大一部分学生能够基本掌握C语言的基础知识,同时也具备编写C语言编写程序的能力,并可以独立编写较难程序,并能顺利通过程序调试与程序的测试。

另一方面要将教学的主要内容放在那些具有掌握一些C语言基础知识和编写程序,了解C语言知识的学生上。在这个阶段,课程内容要注重培养学生的较专业的程序编写与实践。同时,在教学过程中注意设计教学环节,不但要引入项目式驱动教学法,还要将教学内容化分模块,把每个模块都建立一套综合案例,把案例内容覆盖C语言程序设计课程的所有核心知识点,贯穿整个教学过程。

学生通过开发综合案例,能够将知识点融会贯通,达到学以致用的目的。也可以把要处理的问题和知识点做成项目,给学生分配项目任务,并且为学生提供可查阅的学习资料和设备。通过老师的学习指导,让学生自由发挥,开创思想,并以小组讨论的形式进行任务开发,共同完成一个完整的项目。在这一教学阶段设计的目的是要在一个完整的项目开发过程中,使学生能够学习和了解到一些关于C语言中不常使用到的关键知识。也使学生学习和掌握这些知识的可行性和要重性,在教师的正确引导下将问题成功解决,使学生收获到知识。

(二)加强实践教学

《C语言程序设计》是一门实践性很强的专业技术课程。实践教学是《C语言程序设计》课程教学中的主要教学环节。在加大实践教学内容的同时,也要改变实践教学内容,这也是提高和培养具有创新能力学生所必经的阶段。因此,在实践教学上,要专门编写相关的资料,方便教学。在资料中,可以编写一些具有代表性的上机练习程序设计题目,使学生能更好地理解和学习C语言的知识和编程方法。同时也为学生提供一些比较综合的编程题目,让学生能在这些问题中,找到自己知识的缺口,然后补充知识,在这些编程题中发挥自己的优点和创新点。同时,要开发学生的学习思路,培养学生的自主学习能力。

(三)完善网络教学平台

当今是网络遍布的时代,所以C语言课堂教学也少不了网络。我们要用网络教学平台做为辅助教学手段,合理地为学生安排布置学习内容和资料,开展小组式的学习方式,以小组方式讨论问题。课堂的教学时间是有限的,对于这一类的教学活动在课堂上是不能完全实现的。所以要以开放式的网络教学平台为课堂辅助教学。教学平台主要包括课程学习、电子教案、网上答疑、实验指导等,让学生能更好地自主学习。

(四)创新考试方式

以往的《C语言程序言设计》课程考试大多数是以笔试为主要内容,目的是考查基本的语法知识,该种考核方式使学生偏重于语法学习。为此,改革传统的考核方式势在必行,期末考试采用专门的考试系统,将理论题与实践题相结合统一在上机考试环节完成,在限定时间内考核学生的学习效果。即考即出分,减少人工批卷出错的漏洞,减少教师的工作量,改变了传统的批阅方法,通过考试的检验以促进学生平时学习掌握知识牢固程度,加强上机实践,突出学生程序编写能力过程,将实践教学的重要性展现出来。

【参考文献】

c语言程序设计范文4

关键词: C语言程序设计; break语句; switch语句; 循环结构

中图分类号:TP311 文献标志码:A 文章编号:1006-8228(2013)12-48-02

Analysis on “break” in course of C language programming

Li Xinran, Zhao Shanlin

(North University of China, College of Computer and Control Engineering, Taiyuan, Shanxi 030051, China)

Abstract: In the course of C language programming, the break statement has two functions. First, it is used in the switch statement, which can end Select Case. Second, it is applied to a loop structure, which can end this layer circulation. By analyzing the examples, the application conditions and functions of the break statement are revealed as well as things to note, and its application methods are clarified.

Key words: C language programming; break statement; switch statement; loop structure

0 引言

在C语言程序设计课程中,break语句的功能非常容易理解,在switch语句中可以利用break语句结束switch结构;在循环结构中可以利用break语句结束循环。但是,很多人并不清楚在什么条件下使用break语句,本文着重分析break语句的使用条件,以及break语句的常见用法。

1 break语句在switch语句中的应用

switch语句是多分支选择语句,一般形式[1]:

switch(表达式)

{

case 常量表达式1: 语句1; [break;]

case 常量表达式2: 语句2; [break;]

case 常量表达式n: 语句n; [break;]

default : 语句n+1; [break;]

}

switch语句执行过程是[2]:

⑴ 计算switch语句表达式的值;

⑵ 依次与1-n个常量做比较,当表达式的值与常量相等时,执行case后的语句;

⑶ 当执行break语句时,结束switch语句;

⑷ 如无break,则从匹配的case语句起,一直执行到break或switch语句末尾为止;

⑸ 如无匹配的case值时,则执行default相应语句。

switch语句说明:

⑴ switch后括号内的表达式可以是任意类型,会自动转化为整型;

⑵ 每个常量表达式的值必须互不相同;

⑶ 执行完一个case后边的语句后,转到下一个case继续执行,可以用break强制程序在执行完一个case后跳出switch结构。如果所有case中的常量表达式都不符合,则执行default后面的语句;

⑷ case后的多条语句不必用{}括起来。

由此可见,对于break语句的使用,当执行完某个case常量表达式后面的语句,想要结束switch语句,此时应该在相应语句的后面执行break语句。例如:

main()

{ int x=1,y=0,a=0,b=0;

switch(x)

{ case 1:

switch(y)

{ case 0: a++; break;

case 1: b++; break;

}

case 2: a++; b++; break;

case 3: a++; b++;

}

printf(“\na=%d,b=%d”,a,b);

}

/*运行结果为:a=2,b=1。*/

分析运行结果,由于case 1:语句中是switch语句的嵌套,而且嵌套的switch语句后面没有执行break语句。如果在内嵌的switch语句后面执行break语句,则运行结果为:a=1,b=0,此时执行了break语句,就从switch结构中结束了。

2 break语句在循环结构中的应用

在循环结构中使用break语句的形式是“break;”,break语句的功能是强行结束循环,转向执行循环语句的下一条语句[3]。break执行流程如图1所示。

[表达式] [表达式] [语句][语句] [break;][yes][no]

图1 break语句执行流程图

如图1所示,当循环中执行了break语句,循环将提前结束。那么在什么样的条件下,循环结构中需要使用break语句,对此我们通过一个例题,来分析使用break语句的条件。

例题:判断某一个一位数n是否在一个不高于四位的整数m中出现。判断n是否在m中出现,需要将n与m中的每一位数进行比较,分离m中的每一位数,可以借助于算数运算符的求余和除,如果n==m%10,说明n在m中出现了,此时需要提前结束循环,这时要使用break语句。如果n!=m%10,那么就需要不断求新的m,利用m=m/10求得新的m;重复n与m%10的比较过程。通过分析得知,循环结束有两种可能,一种是n在m中出现了提前结束循环;另一种是n在m中没出现,当m的值变为0时结束的循环。由于此时不能判断是什么原因结束的循环,所以我们必须借助于标示变量来区别这两种情况。先将标示变量flag的值置为1,如果n在m中出现,则标示标量flag的值置为0。如果n没在m中出现标示变量的值不变,这样结束循环后,可以通过标示变量的值来判断n在m中是否出现。

通过上述分析得到循环中使用break语句的条件:当存在着两个独立的条件都可以使循环结束时,提前结束循环的条件就是使用break语句的条件;另外一个结束循环的条件作为控制循环的变量。此种用法通常借助标示变量来区别结束循环的原因。使用break语句时候,还需注意break语句只能结束本层循环,不能影响外层循环。

判断某一个一位数n是否在一个不高于四位的整数m中出现的算法实现如下:

main()

{ int m,n,flag=1;

scanf("%d%d",&m,&n);

while(m!=0)

{ if(n==m%10)

{ flag=0;

break;

}

m=m/10;

}

if(flag) printf("no\n");

else printf("yes\n");

}

3 结束语

本文分析了C语言程序设计课程中break语句的使用方法。在switch语句中,可以结束多分支选择结构;在循环结构中,可以结束本层循环。同时分析出在两种结构中使用break语句的条件,并举例说明break语句的用法和需注意的要点。通过本文对break语句用法的分析,能让学习C语言程序设计课程的学生更准确地掌握break语句的用法,为学好结构化程序设计语言的选择结构和循环结构程序设计打好基础。

参考文献:

[1] 谭浩强.C程序设计[M].清华大学出版社,2001.

[2] 赵山林.C语言程序设计[M].人民邮电出版社,2012.

[3] 赵山林.C语言程序设计[M].高等教育出版社,2010.

c语言程序设计范文5

摘 要: 教师要提高《C语言程序设计》教学质量,必须依据教学目标,对教学内容进行重新组织梳理;用案例教学、项目驱动教学等手段丰富教学方法;构建多元考核评价体系。从而在实践中取得良好效果。

关键词: 教学改革 《C语言程序设计》 组织结构 教学方法

1.引言

《C语言程序设计》是高校计算机专业的重要基础课程,在计算机专业的课程体系中占有极其重要的地位。一方面C语言是学生接触的第一门专业类课程,是培养学生专业兴趣的起点。另一方面,C语言是其他很多核心专业课的先修课程,如数据结构、计算机图形学等。所以C语言的掌握水平在很大程度上决定了学生专业基础知识的掌握,直接影响后续课程的学习效果和专业素质的培养。所以如何提升教学质量,让学生确确实实地学好这门课程,是教学改革的目的和指导方向。

2.改革教学内容组织结构

《C语言程序设计》的主要内容包括语法基础、控制结构、数据类型、数组、函数、指针、结构体与共用体、文件等。近年来因为学校培养方案的改革,很多专业课程课时都被压缩。C语言现有学时满足不了把所有知识点都教授给学生的教学要求。改革内容组织结构就很有必要,首先要明确课程教学目标。《C语言程序设计》的课程教学目标要求学生掌握C语言的基本概念、语法和程序设计的常用方法;领会结构化、模块化程序设计的基本思想;通过编程训练,熟练使用编程工具编写和调试程序;在课程学习的过程中,形成良好的编程风格和程序设计思维方式,提高分析问题及通过设计程序解决实际问题的能力,为专业课程体系中后续课程的学习打下基础。依据教学目标,把教学内容分为三个层次。

3.改革教学方法

3.1教学手段的改革

C语言的课堂内容多是抽象的理论,对大多数学生来说枯燥无味。首先,教师可以通过研讨和网络资源,向优秀教师学习,不断提高自身能力。其次,整合资源制作优秀的教学课件,既要体现新的教学方法,又要现实教学内容的层次性。再次,充分利用现代教育技术,把教学资源放在网络上,供学生自行调用,也可在网上给学生答疑。最后,以案例教学、分组讨论等方式丰富课堂教学方法,不单纯依赖多媒体教学。

3.2实验教学的改革

在实验教学中,可采用“项目驱动,分层教学”的方法。

项目驱动教学是整个实验教学围绕一个工程项目进行,逐步拓展实训项目和设计,将每一个阶段的学习作为项目的一部分完成,最后课程结束时,完成一个小型系统程序的建立。

通过实验能够实时了解学生的内容掌握及编程能力。在教学过程中,由于个体差异的存在,学生在内容掌握和编程应用方面会有较大差异。针对这种现状,就需要应用“分层教学”。对基础好的学生,可以多给一些深入的实验题目,而对基础不好的学生,就要帮助其弄懂、掌握学习内容。

3.3多元的考核评价体系

课程考核评价分为两部分:过程考核和期终考核。过程考核就是平时成绩,依据学生的出勤、日常表现、课后作业、实验报告、测验和项目完成情况和完成质量对学生进行考核,占总成绩的60%,期终考核是以卷面考试方式检测学生对于所有知识点的综合掌握情况,占总成绩的40%。

4.结语

通过本学期的教学实践,课堂教学和实验教学效果都得到很好的改善,调动学生的学习积极性。学生的编程能力和课程内容掌握水平都有明显提高,取得长足发展。

参考文献:

[1]何克抗,郑永柏,谢幼如.教学系统设计[M].北京师范大学出版社,2002.

[2]戴大蒙.“程序设计类”课程层次型教学模式的研究与实践[J].中国成人教育,2010.9.

[3]张秋生.C语言程序设计课程教学改革与实践[J].软件导刊,2012.11.

[4]何钦铭,颜晖,苏小红等.“程序设计基础”课程教学实施方案[J].中国大学教育,2010.5.

c语言程序设计范文6

关键词:C语言程序设计;计算思维;抽象;自动化

美国卡内基・梅隆大学的周以真教授在2006年系统地提出了计算思维的概念[1]:计算思维指的是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等一系列思维活动。其后,陈国良院士和李廉教授归纳出三种典型的科学思维,即以观察和归纳为特征的实证思维,以推理和演绎为特征的逻辑思维,以抽象和自动化为特征的计算思维[2-3]。计算思维是计算机类课程的主要思维方式。

有关计算思维在程序设计类课程中的研究,已经引起很多学者的兴趣[4-6]。这些研究虽然从案例设计和项目过程等角度做了有益探索,但却忽略了对计算思维本质的讨论。C语言程序设计课程中,我们采用李廉教授的观点,即计算思维的本质是抽象和自动化。抽象指的是使用符号系统对问题进行精确而严格的描述;自动化指的是对这些符号系统施加一定操作并按照某种结构自动地执行。

一、C语言程序中的计算思维本质之一:抽象

有些C语言程序设计课程教学的一开始就提倡使用案例教学。这虽然能够使得学生可以迅速进入实际编程环节并建立直观感性认识,但案例教学由于往往出现“程序就是编程工具”的工具论现象,导致出现“只知其然,而不知其所以然”的学习后果,不利于学生的后续发展。

对于C语言程序来说,抽象指的是使用符号系统对求解问题进行精确而严格的描述,抽象的过程就是对实际系统建模的过程。实际上,程序是用来描述现实生活中某个实际存在的或不存在的系统。程序就是对系统的抽象。系统之所以存在,是因为系统具有一些关键特征和核心功能。程序中对系统特征进行抽象的就是操作对象,对系统功能进行抽象的就是函数。系统功能往往有多个且存在着复杂的调用关系。例如,求一个函数定积分的功能必然涉及求函数在某一个点的取值功能,如果该函数比较复杂且含有正弦、余弦和正切等三角函数,还需要继续调用求这些三角函数值的功能,形成多级调用;有时函数执行过程中还需要调用本身,形成递归调用。

C语言程序中的操作对象分为变量和常量。常量是对系统中的取值不变的特征进行抽象,如圆的圆周率;而变量是对系统中取值可以改变的特征进行抽象,如圆的半径。不管是哪类特征,都会有一个取值范围以及所允许的操作。例如,对于课程成绩,其取值范围一般是从0~100,而允许对该特征进行的操作可以是加法和减法等算术操作以及大于和小于等比较运算;而对于课程名字这一特征,就不能进行加法和减法这样的算术操作。C语言程序中用来对特征的取值范围及允许的操作进行抽象的概念是数据类型。C语言程序中的抽象模块如表1所示。

现实生活中,经常需要描述多个相同数据类型的一个系统特征,如所有同学的高等数学课程的成绩,可以使用一维数组来进行描述;而描述多个不同数据类型的多个系统特征,如学生的姓名、学生的身高和学生的年龄等,可以使用结构体来进行描述;如果要描述多个相同数据类型的多个系统特征,如全班所有同学的高等数学和大学英语课程的成绩,则可以使用二维数组来进行描述。

表1 C语言程序中的抽象模块

C语言程序中的元素 现实生活中的元素

程序 系统

函数 系统功能

函数调用 功能调用

数据类型 常量 系统特征

变量

一维数组 多个相同类型的一个系统特征

多维数组 多个相同类型的多个系统特征

结构体 多个不同类型的多个系统特征

链表或结构体数组 多个不同类型的多个系统特征的集合

二、C语言程序中的计算思维本质之二:自动化

计算思维的另一个本质是自动化。自动化指的是对符号系统建模的各种元素施加一些操作,并按照某种顺序的或非顺序的结构自动地执行。对于C语言程序来说,自动化体现为函数内部的语句在EIP寄存器加法操作支持下顺序自动地执行以及函数之间的调用在内存堆栈区支持下自动地进行跳转。EIP是32位机的指令指针寄存器,用来存放下一条要执行的指令的地址。EIP寄存器中增加值的大小需要根据实际存储指令的大小来确定。

对于C语言程序来说,自动化过程中执行的对象是语句。不同类型的语句,执行的结果和效用是不一样的。例如,一个变量定义语句“int a”的执行结果是在内存中分配4个字节的空间,一个返回语句“return t”的执行结果是将程序的执行流程返回到主调函数中。这些语句的组合构成一个个函数,程序的执行就是在某个函数之中顺序自动地执行以及在多个函数之间来回自动地跳转。

既然程序的执行过程是在某个函数之中顺序自动地执行以及在多个函数之间来回自动地跳转,这种自动执行需要有相应的计算机软件和硬件基础。支持程序自动执行的软件基础是操作系统,支持程序自动执行的硬件基础是计算机硬件结构,即冯・诺依曼原理的程序存储思想。当用户点击执行按钮后,程序被提交给操作系统来执行,可以不需要人为干预。此后,程序在操作系统中以进程的方式出现。操作系统协调内存、中央处理器和外存等硬件资源执行该进程。

函数中的语句之所以能够一个接着一个顺序地执行,主要依赖于EIP寄存器的加法操作。当一条指令执行完成之后,EIP寄存器在原有内容的基础上再加上当前指令所占存储空间大小,其内容便是下一条指令的地址。如此进行下去,就可以一个一个顺序地执行函数中的语句。

程序控制之所以能够在函数之间进行跳转,主要依赖于操作系统管理的内存堆栈区。内存堆栈区是满足“后进先出”操作约束的存储区。当操作系统开始执行用户提交的C语言程序时,首先开始从main函数执行,main函数的相关局部变量被压入栈中;当执行到被调函数时,被调函数的相关局部变量再次被压入栈中,程序控制转移到被调函数,且操作只能对当前栈顶进行,而此时栈顶存储的就是被调函数的相关局部变量;而当被调函数执行结束时,被调函数的相关局部变量从栈中退出,程序控制转移到main函数继续执行,此时栈顶存储的是main函数的相关局部变量;当main函数执行结束时,main函数的局部变量从栈中退出,整个程序执行结束。下列程序执行时的堆栈变化过程示意如图1所示。

#include "stdio.h"

double s(double r)

{ return r*r; }

int main()

{ double r;

double area;

r=2.0;

area= s(r);

printf("area=%f",area);

return 0;

}

图1 函数调用过程的堆栈变化

自动化过程实际反映了C语言程序解决实际问题的算法流程。算法是解决某一问题的执行步骤。一般而言,使用C语言进行编程之前,需要进行相应的算法设计,即构思解决实际问题的思路和步骤。一旦这些步骤变成C语言程序语句并形成一个完整的程序,就可以提交给操作系统自动地执行这些步骤,这正是计算机解决问题的高效率的体现。

三、以计算思维为导向的C语言程序设计课程教学

1.教学内容

针对计算思维的抽象和自动化两大本质特征,C语言程序设计课程的教学内容需要在原有的基础上特别强调一些针对性的观点。例如,C语言中的各种数据类型和数据结构可以完成实际系统中各种不同元素的抽象,一个函数之中的顺序语句自动执行的基础是EIP寄存器的加法操作,多个函数之间的来回自动跳转的基础是内存堆栈区的支持等。具体强调的观点如表2所示。

表2 教学内容中需要强调的观点

C语言程序设计

课程的内容 强调的观点

C语言概述 程序是对系统的抽象

抽象过程就是C语言的建模过程

自动化过程反映C语言的算法流程

数据类型、表达式和语句 操作对象是对系统特征的抽象

语句是系统自动化执行的基本对象

控制结构 控制结构是问题求解步骤的抽象

函数中顺序语句自动执行的基础是EIP寄存器的加法操作

数组 一维数组是对多个相同类型的一个系统特征的抽象,多维数组是对多个相同类型的多个系统特征的抽象

函数 函数是对系统功能的抽象

函数调用是功能调用的抽象

函数之间的来回自动跳转的基础是内存堆栈区的支持

结构体 结构体是对多个不同类型的多个系统特征的抽象

指针 链表是多个不同类型的多个系统特征集合的抽象

2.教学方式

计算思维的本质是抽象和自动化。C语言程

序设计课程一般都是面向大一新生,理解抽象和自动化进而培养计算思维,对于还处在计算机学习起点的学生来说是比较困难的。

对于C语言程序来说,抽象过程实际就是运用C语言中各种符号对所描述系统的建模过程,培养抽象的计算思维方式就是培养使用C语言描述实际系统的思维过程。因此,可以通过启发式教学方式引导学生思考如何使用C语言中的符号来描述系统。可以提出这样的一系列问题:C语言中如何描述一个人的身高?如何综合描述一个人的姓名、年龄和籍贯等?如何描述一个班中所有学生的高等数学成绩?如何描述各路公共汽车站的网状信息?通过启发学生对这些问题的思考,让学生所学的C语言中的各种符号不再“虚幻”,让学生真正理解这些符号实际是一种建模元素,每种符号有着其特别的抽象描述能力。

对于C语言程序来说,理解自动化过程必须借助一些形象化的手段。例如,借助于Visual C++ 6.0平台的单步调试功能,可以形象地演示上述C语言程序的自动化过程,如表3所示。

表3 C语言程序执行过程中EIP和ESP寄存器内容的变化

断点 EIP寄存器内容 ESP寄存器内容 当前栈顶函数

r=2.0;语句 00401068 0013FF24 main函数

area=s(r);语句 00401076 0013FF24 main函数

return r*r;语句 00401020 0013FF18 s函数

printf("area=%f",area);语句 00401089 0013FF24 main函数

从表3可以看出,随着EIP寄存器内容的增加,main函数中的语句顺序自动执行,即从语句“r=2.0”到语句“area=s(r)”再到语句“printf("area=%f",area)”。ESP寄存器是另一个重要的寄存器,它始终存放栈顶的地址。随着main函数对s函数的调用开始,栈顶工作函数由main函数变化为s函数;当s函数调用结束后,栈顶工作函数又由s函数回到main函数。

3.考核内容

针对C语言程序设计课程的计算思维培养要求,考核方式上必须从以考查语言的语法知识为主转变为以考查学生的系统建模能力和算法设计能力为主。

系统建模能力的考查主要针对计算思维的抽象特征。例如,可以给出各种系统特征,考查学生使用数据类型进行描述的能力。

算法设计能力的考查主要针对计算思维的自动化特征。当然,C语言程序设计课程中涉及的都是一些如迭代、枚举和排序等简单算法。可将这些算法封装成各种函数来进行调用,以考查函数中顺序语句的执行以及函数间的伴随参数传递的跳转来理解自动化过程。因此,必须以简单算

法设计和函数调用为重点考核内容,突出对函数接口设计和算法流程设计的考核。

参考文献:

[1] Jeannette M. Wing. Computational Thinking[J]. Communications of the ACM, 2006, 49(3):33-35.

[2] 陈国良. 计算思维[J]. 中国计算机学会通讯,2012,8(1):31-34.

[3] 李廉. 计算思维――概念与挑战[J]. 中国大学教学,2012(1):7-12.

[4] 张耀文. 基于计算思维的程序设计课程案例教学法研究[J]. 重庆电子工程职业学院学报,2012,21(3):149-150.

[5] 吴绍兵. 计算思维和程序设计能力的培养[J]. 计算机教育,2011(16):11-14.