北京分中心《C语言程序设计》班级讨论总结

时间:2019-05-12 11:25:17下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《北京分中心《C语言程序设计》班级讨论总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《北京分中心《C语言程序设计》班级讨论总结》。

第一篇:北京分中心《C语言程序设计》班级讨论总结

北京分中心《C语言程序设计》班级讨论总结

根据培训安排,今日上午北京分中心《C语言程序设计》班级与哈尔滨工业大学的王宇颖、苏小红、孙志岗三位主讲教师进行了面对面的讨论,全体学员零距离教学名师的大师风范和平易近人、幽默风趣、严谨求实、谦虚坦率的人格魅力。大家就教学团队的凝聚力和战斗力问题、教学方法问题、考试考核方法方式问题、多媒体教学问题、网络教学问题、怎样实施诚信教学问题、教材建设问题等方面进行了真诚的交流和讨论,大家畅所欲言、各抒己见,现场的气氛非常热烈。现将本次讨论的情况进行简单总结如下:

1)如何提高课程教学团队的凝聚力和战斗力?提高课程教学团队的凝聚力和战斗力的关键因素是什么?

在关于提高课程教学团队的凝聚力和战斗力的问题上王宇颖教授认为,团队负责人很重要,团队负责人有包容心,要允许不同意见,要谦虚向团队队员学习。她还特别强调“我从我的团队其它老师那儿学到了很多东西,他(她)们教给了我很多”。王教授还认为,团队中要有不同的人扮演不同的角色,要根据教师的特长安排不同的工作,团队负责人要敢于负责,要为一线教师着想,同时也要有严格的规章制度,要鼓励一线教师进行教学改革。苏小红教授认为一个教学团队只有有了凝聚力才有战斗力,她认为关键因素是负责人的人格魅力。

2)程序设计课程实施机上考试的利和弊?目前程序设计课程考试中存在的最大问题和实施机上考试的最大困难是什么?

大部分教师认为实施机上考试利大于弊,如果条件允许大多数教师很愿意实施机上考试,一般认为目前程序设计课程考试中存在的最大问题不能很好的真实评价学生的实际能力,很多教师认为实施机上考试的最大困难是客观条件不允许,如学校的网络条件和硬件设施,有少部分教师认为主讲教师的主管意愿会影响到机上考试的实施。参与讨论的教师一致认为在实施机上考试的时候一定要注意避免考试的弊端,要尽可能考察学生的真实能力。

3)多媒体教学的利和弊?目前程序设计课程教学中存在的最大问题是什么?

很多教师认为多媒体教学有利有弊,要根据授课对象和授课内容灵活改变教学方法,并不是在任何情况下都一味的使用多媒体教学。目前程序设计课程教学中存在的最大问题是教学过程很难体现培养学生的编程能力。

4)网络教学的利与弊?目前影响学生学习程序设计的积极性的主要原因是什么?

网络教学是一种新的教学方式也是未来的教学趋势之一,但网络教学只是教学的方法和手段,不是教学的全部和目的,跟多媒体教学一样,网络教学也要根据授课对象和授课内容灵活改变和处理。网络教学的好处在于灵活,缺点在于难于把握。目前影响学生学习程序设计的积极性的主要原因是学生的兴趣,也有教学手段的原因,同时跟社会的大环境有很大的关系。

5)如何实施诚信教学?对待作业抄袭行为是该听之任之,还是严惩不贷? 参与讨论的教师一致认为实施诚信教学是非常必要的也是应该的,但在实施的方法和手段上则要注意灵活性,要注意学生的主要任务还是学习,在实施过程中也要注意不能伤害学生。在关于对待作业抄袭行为的问题上,教师们的分歧比较大,是该管,但如何管,如何把握管的尺度,大家意见不一。

6)对学生拥有个人计算机,该鼓励还是禁止?

哈工大的王宇颖、苏小红、孙志岗三位主讲教师认为不必要对学生拥有个人计算机太过在意。其它教师认为应该根据课程或专业的实际采取鼓励或禁止的办法。

7)读者喜欢什么样的教材?学生喜欢什么样的老师?

教材应该做到分层次,深入浅出。不同的授课对象应该采用不同的教材。在关于学生喜欢什么样的老师问题上,与会大部分教师认为不同的学生会喜欢不同的教师,很难做到让所有的学生都喜欢你,不管怎样都会即会有些学生喜欢你,也会有些学生不喜欢你。但作为老师,首要的应该是教书育人尽职尽责。

8)如何实施案例驱动的程序设计教学,避免将案例教学变成习题课?如何围绕着一个或几个实例,举一反

三、精讲多练?举什么样的例子能让学生既学到了知识又感兴趣?淡化课堂的讲述,淡化到什么程度?是否应该设置课程大作业?若需要,如何设计大作业?

案例驱动的程序设计教学方法得到了大多数教师的认可,但实施起来难度较大,人格主讲教师把握得不好,就有可能将案例教学变成了习题课,因此主讲教师的课堂把握能力是避免将案例教学变成习题课的关键。要做到围绕着一个或几个实例,举一反

三、精讲多练的话,首先主讲教师要多练习,主讲教师要做到成竹在胸,要对知识能融会贯通。教师们认为在课堂上要结合授课对象的专业特点多举一些与授课对象专业特点相符合的有趣味性的有实用性的例子,只有这样才能让学生既学到了知识又感兴趣。关于淡化课堂的讲述问题,哈工大的三位主讲教师认为要根据授课对象的实际情况和水平,进行调整,既不多讲,也不少讲。教师们一致认为设置课程大作业是必要的,但一定要结合授课对象的专业特点和实际水平,要强调大作业的实用性。

北京分中心班长彭书华

2010-5-29

第二篇:[北京分中心]数据库系统概论班级讨论总结

[北京分中心]数据库系统概论班级讨论总结

《数据库系统概论》北京研修班的老师们有幸现场聆听了王珊、杜小勇两位教授的精彩授课,各位老师都表示无论在教学内容、课程设计、教学资料、还是眼界思路上都获益匪浅。在此,我们全体老师对两位教授表示诚挚的谢意,也对全国高校教师网络培训中心为我们提供这样一个难得的学习机会表示感谢!为了更好地交流,我们北京分中心的34位老师围绕建议议题进行了分组讨论,也非常希望今后能有更多的机会与全国各地的数据库课程教师共同探讨,现将我们的讨论结果向大家作以汇报:

问题1:数据库系统概论理论教学与实践教学如何结合?

1.在课堂教学过程中,针对学生的特点,按照由具体到抽象的认识规律, 从实际应用背景中的具体技术问题出发,合理组织教学内容。2.采用案例教学,吸取项目驱动的特点,围绕一个问题,展开相关技能的教学,继而再进入相关知识的教学,提高学生学习的兴趣和自信心。3.课程讲授结束后,通过课程设计,让学生亲自动手实现一个小型系统,增加学生融会贯通的学习能力.4.针对科研,工程,应用.不同类型的学生的要求不同.教学中发现大部分学生是工程型,因此可以在教授理论的同时,结合一、两种流行的数据库作介绍,如SQL Server、Sybase等,如果学时有限,可以每次上课之前定一个题目,鼓励学生在课后练习,上课时针对难点和重点讲解。5.来自于北京中医药大学的老师的回答:我校有个信管专业,应定位为应用型。我们关于数据库有3门课程,分别是数据库系统概论和数据库开发与应用(SQL SERVER)和通识课程:计算机基础(Access)。在教学过程中,前2门课程的衔接也一直困扰着我们。我个人的意见是先开设SQL SERVER的应用课程,从实用技能的角度去进行;然后进行数据库系统概论这门理论性更强的课程,并跳过上一门课中学习过的知识,这样由于学生有实际操作的基础,对于数据库的理论知识更容易接受,更符合学习认知过程。例如,象关系代数、索引、查询优化、锁等内容不在SQL SERVER的课程中详细介绍,而交由数概去完成。6.我参考其它院校和本次培训总结的一些感想,对于科研,工程,应用.不同类型学生,我觉得还需要因材施教的.比如我们学院现在有计科,信息,电子商务等专业都开设这个课程,对不同专业选取的案例会有所区别的.我们现在开设数据库课程的顺序是:数据库原理,大型数据库系统, XML设计,其中数据库原理是必修课,而其他的选修课,兼顾学生的兴趣.7.在教学过程中,将一些重要的内容提前让布置给学生查阅相关资料,到具体讲授该部分内容时让相关同学先做报告,然后让其他同学提问,最后老师解答问题,可以把预习的内容作为考核的作业题目留给学生,然后再将这些内容,效果会很好。该方法应该是“双主教学”的一种应用。目前的问题是学时很有限,这样的教学模式不敢运用太多

8.教学中,实践是主线,以一个具体的数据库实例为媒介,展开介绍数据库的各种概念,问题。由于问题熟悉(一学期都围着它转,当然熟了,不熟的让他反省),学生在学习中更容易接受。这样,在教学中理论和实践能结合起来,当然更多的还要学生通过自己实践去掌握 9.我们学院目前数据库是每周6个课时,理论教学4个学时,实践学时2个学时,理论课程主要以老师讲解和演示为主,实践课程安排在软件开发实训实验室进行,前期主要是引导学生掌握基本的SQL语法,实验环境主要是SQL Server2005,到课程中期,学生有了一定的基础,我们会要求学生做一个小的应用实例,并作为大作业的形式提交. 10.我在想要是能把数据库课程设计的课时和教学课时整合一体,那是否更有利于我们在教学过程中理论结合实践„„我认为:理论教学先要详细,然后将上课的理论与实践教学结合.具体做法是每个4节课,2节理论2节实践.理论和实践不应该有明显的界限,建议在实验室上课,在一些内容的讲解,例如SQL语句,安全性等内容的讲解过程中可以让学生当时就上机操作,印象更深,效果也较好.采取先实践再理论再实践的方法比较好,比较符合学生的认知过程,根据简单的实验,对知识有感性的了解,再回到理论深度进行讲解,使学生的收获更大。

问题2:高校教师如何提高数据库教学水平

1.数据库教学水平的途径和方法,多听听相关专家的报告和讲座,今天王珊老师的讲座“做好一名合格的讲师”使我们收获很大。教师应加强自身理论基础知识的学习、丰富项目经验、增强教学技能、及时把握数据库技术的新发展,对课程内容的理解是非常重要的,同时也要多跟同行和学生交流。有的时候不同级的学生反应很不一样,所以也要及时了解学生的情况 2.讲课是一名合格教师的基本功。要讲好课对教学内容第一步先要自己明白,第二步要讲得清楚,第三步要学生听懂。这三步是教学因果关系的自然逻辑。教学相长嘛,从学生那里了解情况及时调整改进可以有效改善教学效果。实际的项目确实可以提高我们的教学水平和教学质量,使得我们在教学中能够充实教学内容。3.我觉得在教学的过程中,也应该根据学生和学校的情况制定不同的数据库学科的实施方案。针对目前学生就业的现状,大多数的大学毕业生应该作为应用型或者工程型进行培养。精品课程的建设确实给我们的教学提供了良好的平台,实现了教学资源共享,确实是受益匪浅。所以说精品课程的建设也是提高教学质量和教学水平的一种方式。4.多和学生交流,提高学生学习积极性,增加学生与老师的互动,这有利于我们的教学质量和效果。精品课程的建设很重要,我作为教师也经常去精品课程的网站学习和搜集资料,这对学生们来说更是一个很好的学习的平台~。目前社会上有很多数据库方面的认证,我们鼓励学生积极参与,教师自己理应先一步通过,更好的引导学生把知识转化为技术能力。

5.想给学生一碗水,自己必须先有一桶水。对于授课而言,知识水平的高低是关键,大学教师不能只在校门内闭门造车,应该多接触些应用和科研的内容,才能够引导和教育自己的学生。学生们很快就会从大学校门中走出去,进入社会或者继续深造,教师、尤其是我们这样的年轻教师也要加快自己的脚步不断提升自己。同时,教学的方法和艺术也是教好一门课所必需的。6.学科建设和教学水平的提高不是单打独斗能够解决的,应该形成一个学科梯队,有带头人,有中坚力量,有年轻教师,协同工作,互相促进,提高数据库教学水平,培养更多的数据库人才。实践是数据库课程的非常重要的环节,所以作为教师要提高教学水平,就像王老师说的,首先得自己将所有的试验做一遍,才能从中发现问题,提高自己。7.就像王老师说的那样,学生的潜力是非常大的。但是他们自己有时却不能很好的把握自己的方向。因此,这些潜力需要教师去引导,同时,教师应该严格要求学生。多参加一些这类高水平的培训,从较高角度引导,对年轻教师确实有较好引领作用 8.教学中可以通过多种方法培养学生的算法设计能力:

(1)详细讲授常用的算法。

(2)教师带领学生通过讲例题多阅读程序,分析过程,吸取他人的经验和成熟的算法,使学生少走弯路或不走弯路。

(3)开展实践性学习,引导学生积极参与编程实践,促进思维的飞跃,以学生学习内容为中心,完善考核形式。

(4)在课堂教学过程中,针对学生的特点,按照由具体到抽象的认识规律, 从实际应用背景中的具体技术问题出发,合理组织教学内容。

(5)采用案例教学,吸取项目驱动的特点,围绕一个问题,展开相关技能的教学,继而再进入相关知识的教学,提高学生学习的兴趣和自信心。

(6)课程讲授结束后,通过课程设计,让学生亲自动手实现一个小型系统,增加学生融会贯通的学习能力.问题3:高校教师为什么要参加科研活动?高校教师教学与科研的互动作用?

1.科研是提高教师综合素质和教学能力的第一促进力,科研也是提高教学质量第一推动力。因此教师必须也应该积极参加科研活动。高校教师可以在科研项目中积累经验,讲课有事例。教学的目的是培养人才,进而为社会生产服务,科研的问题也来自于生产实践的需要,因此参与科研才能和生产实践结合,培养出的学生才受社会欢迎。教学对科研也有一定指导作用。2.高校教师通过科研活动可以促进教师自我知识结构的更新和知识体系的充实,从而更好的搞好课堂教学。科研也是教师考核标准,科研和工资有直接联系。科研对于年轻老师是个瓶颈,要广泛地取经。教学和科研两者是相辅相成、互相促进的。比如查询的优化是个教学中的理论问题,我们在项目应用中也总是碰到查询性能问题。两者结合,教学中枯燥的问题就变得有声有色了。

3.教学本身也是一个创新的过程,教师也必须具有科研才能才行。没有科研的支撑作用,教师便不能对学科的前沿、动态有及时和深入的掌握,这是不适应时代发展需要的。4.对于教学,很多高校是喊的多做的少,都是把科研放在首位。我个人认为,两者都应重视,而且我觉得更应该把教学放在首位,对于高校来说教学是永远的主题。教学和科研是密不可分的。没有研究的基础,在讲台上是站不住脚的对于科研,目前每个老师都很积极,但很多科研都是纸上谈兵,推广应用的很少,产业化的就更少了。5.教学和科研并重看来是广泛的共识,对于很多计算机课程来说,另外一个重要的功能是应用和开发,如编写软件、开发网站,这些形式都是对教学内容的直接运用和提高,丰富教学示例,但却很难上升到科研层次。科研课题是学校的一个考核指标,但对项目来说,不管你开发的项目多优秀、多先进,都不被重视,这对计算机教师来说有些不公平。

问题4:您在数据库系统教学工作中遇到的主要困难是什么?如何解决的?

有解决思路的问题:

困难1:数据库课程针对不同专业的学生,教学内容和安排怎么处理好呢?计算机专业和软件工程专业在数据库教学内容上也有区别的吗?

解决思路:对于不同专业的数据库课程,可以采用分层次教学,比如计算机专业的应该以数据库的理论为主要教学内容,软件工程专业应更加侧重于数据库的开发,信息专业可采用理论与应用并重,而其他非计算机专业的可只讲解简单的数据库理论知识,而以数据库应用为主。困难2:学生感觉教学过程中理论部分太多。

解决思路:可用具体的实例将理论课与实际紧密的结合起来,减轻学生对于理论的枯燥感!

困难3:计算机科学与技术学科考研统考中没有数据库课程,很多学生对于数据库课程的兴趣受到了很大影响。

解决思路:希望王珊教授发挥影响力,与数据库专委会一起带领大家共同呼吁,将统考中加入数据库课程,这可是计算机专业的8门核心课程之一啊!困难4:学生在学习数据库这门课时二极分化比较明显,如何激发学生学习本门课的兴趣?有的学生主动学习的能力比较差,有什么好的解决办法吗? 解决思路:数据库是一门实践性比较强的课程,对教师的要求比较高,教师除了具备较高的理论水平之外,还需要具备丰富的软件开发经验,只有这样,学生们才会“服”你,教师说的话在学生心中才会比较重。

我们是专科院校,有高职生和五年制,对我们来说,更注重实践和案例教学,否则学生根本不感兴趣。如果有具体的实例将理论课与实际紧密的结合起来(浅显易懂,针对中低层次学生),课堂效果会更好!比如,在课程使用一种简单的前台语言,如VB,让学生对于数据的设计有比较直观的成就感,以此来激发学生的学习兴趣!

困难5:数据库教学中的课程设计,教师工作量、其他教师的投入如何计算课酬?

解决思路:我们学校的课程设计都是算工作量的,1周的课程设计按照20个学时来计算,如果班级多的话,还有不同的系数!

尚未解决的问题:

1.有的学校数据库课程放在操作系统课程等的前面,讲并发控制时怎么处理呢? 2.如何处理数据库课程程序设计与软件工程程序设计的关系呢?

3.目前计算机专业学生希望到实训基地或到公司实习,对数据库的课程设计也一样,不知各校是如何运作的? 4.在数据库设计章节中,学生们从听懂ER图到面对实际问题会用ER图,之间有一条鸿沟。如何让学生真正掌握数据库中表的拆分与设计?

问题5:数据库系统课程的重点难点是什么?哪些内容你觉得好讲,学生容易理解,哪些内容不好讲,学生不好掌握?

《数据库系统概论》课程是计算机专业的基础课,在大学本科的课程中地位很重要,且有一系列的课程和数据库相关的,形成了以数据库系统概论为基础的课程群,所以讲好本门课程尤为重要。

在我们的教学实践中,对于那些学生容易理解的内容可以略讲或不讲,让学生在课后自学,但本门课程也有许多内容比较难于理解,我们按章节罗列如下: 1.“绪论”一章中,数据模型是主线,贯穿整个章节,也是本章的重点,应该结合学生学过的数据结构课程内容详细讲解。三级模式结构既是重点也是难点,也应该着重讲解,好在三级模式结构的内容在SQL语言等章节中还会涉及到,在后边还可继续复习巩固。

2.“关系数据库”一章中,关系代数是重点,是应该着重讲解的,其中的除法运算是难点,可多通过例子讲解。另外,关系演算可以不讲,而域演算可以用Excel的高级筛选来演示协助讲解。3.“SQL语言”一章是全书的重点之一,整章内容全是重点,其中的难点有NOT EXISTS、多表查询以及和关系代数的联系和转换等,另外,还应该讲解SQL语言和三级模式结构的关系。

4.“数据库安全性”一章中的角色、跟踪审查是难点,需要和具体的DBMS相结合来演示讲解。5.“数据库完整性”一章中,三个完整性都是重点,CHECK尤其重要,触发器是难点,建议讲解时以具体的DBMS为例来交互设置,再辅以SQL语句来讲解。6.“数据库理论”是本课程的重点内容,也是本课程最理论和抽象的内容,且本章中的内容环环相扣,要讲清楚模式分解,就得从函数依赖、函数蕴涵、最小函数依赖集等内容开始一步步讲解下来,最后才能讲解到范式和模式分解的内容。建议本章节内容可以分成两次课(4个学时)来讲解。7.“数据库设计”一章的重点是教会学生从项目的需求中进行分析,正确画出ER图,并转换为关系模式,其中将联系转化为关系模式是难点,而联系上的属性也难以把握。由于学生一般缺乏实际项目实际经验,因此教师在讲解中可以通过实际的应用案例解剖,来使同学更容易上手些。8.“数据库恢复”一章应该强调转储的各种方法、故障的种类以及相应的恢复方法。9.“并发控制”一章的内容总体感觉比较虚,还只能停留在课堂讲解上,不好在课堂上与具体的DBMS相结合来演示。另外,可串行化调度、封锁类型等都是本章的难点,需要着重讲解。

问题6:如何搞好课堂教学?如何发挥教师的主导作用?

一、如何搞好课堂教学?

要学生听懂、掌握所授教学内容是教学的目的,教师应在内容结构合理、逻辑清楚的基础上尽量做到深入浅出,生动活泼,最重要的是启发学生对教学内容的学习积极性、主动性和创造性,善于独立思考。教学内容的组织特别重要,最忌讳照本宣科。老师也可以用问题引入概念,引起同学的学习兴趣。针对关键问题,可以适当组织讨论,再由老师总结。总的来说,要让学生感兴趣。有的时候,针对某部分内容的背景讲一些故事,效果不错。还应该培养学生的自学能力,关键是如何督促。

有时,给学生课堂上DEMO,效果会更好。

教师得实时了解本门学科或课程的一些新的动向或成果。学生比较注重一些实际的效果。适当的时候,将最新的科研成果引入课堂,学生也会很感兴趣。教师应该多看书,汲取各家之长。每本教材都有各自的侧重点,一本教材不可能将所有的章节内容都说清、说透,这就需要我们多看相关书籍,做到将书看厚,再变簿。

针对课程内容,教师可以发起课堂讨论,但是建议课堂讨论的内容能提前一周左右给出,叫学生课下准备,否则学生课堂讨论的效果不会很好。要搞好课堂教学不应该只约束教师,还应该对学生提出要求而且是严格要求。王珊教授的作法我很同意,要求学生什么时候完成作业就什么时候,老师首先应该说话算数。

二、如何发挥教师的主导作用?

教学的主体是老师和学生,而搞好课堂教学的根本还在老师。作为课程的授体——学生更多是被动的接受,所以教师本身是否对教学内容很明白、很清楚,直接决定着教学质量的高低。这时就要求教师做到:(1)备课要充分,及时充实教学的素材(学科的新进展,自己科研、做项目的心得);(2)提前给学生布置预习的内容,学生先了解、熟悉欲学习的内容;(3)教学案例选择恰当,既能说明问题,又利用学生理解。

教师应该多实践。教师在给大家做演示的时候更多是将以往学生的作业实例给新的学生看,自己往往没有亲历亲为。我觉得如果教师能自己具体做个实例给学生演示,既能有助于老师自己更好的了解和学习教材,又能在制作过程中发现一些学生可能会遇到的问题,提前给学生以提示。同时,也能够提高自己在学生中的形象,真正发挥教师的主导作用,充分调动学生学习的积极性。

教师应该不断的为自己充电,多参加一些培训,以此来更好的掌握本课程的发展历史沿革,和不断的更新自己的知识储备,跟上技术发展的最新步伐。这样才能使自己的教学更能贴合实际,让学生觉得学习后能真正用得上。

教师的主导作用是要从学生那体现出来的。应该把自己融入到学生中去,进行换位思考。了解学生的需要,才能更好的调动学生。

问题7:如何在数据库系统课程教学过程中培养学生的创新意识和创新能力?

一、学而不思则罔,思而不学则殆

孔圣人的“举一反三”就是指创新能力。培养学生的能力,教师要有培养学生能力的意识。

创新是一种能力,是在学习过程中逐渐培养起来的,通过一门课中的一个或者若干个小的闪光点,就可以培养成一种意识---创新意识,然后形成一种能力.善于思考的习惯,对于创新是非常重要的。在教学过程之中,要注意培养学生勤于思考、善于思考、深入思考的习惯和能力。

人与人的区别最主要的不是智商,而是钻研的习惯和认真的能力

创新能力首先需要一个认真的态度,其次需要认真的能力,我理解:认真的能力就是发现问题的能力和深入思考的能力。

创新是一个民族的灵魂,是一个民族的希望,课程创新是一个学生综合能力的体现,是学生一生的财富.如何在课程中体现创新,哪怕是一点创新,都会使学生终身受益,数据库课程如何体现,我考虑一是搞好课程设计,提高学生的开发能力和团队意识;二是通过课程使学生了解数据库学科在国民经济中的作用,比较我国数据库技术和国外的差别,培养学生的爱国主义观念。

本课程并不需要什么高等数学知识,只要学生有一定的逻辑思维能力,就可以学会本课程。

数据库系统概论课程是计算机及相关专业的核心课程,核心课程肯定有核心的能力,培养学生的自学能力、创新能力是课程本身能够解决问题,关键是教师如何在课程中发现、理解、体会课程的实质,教师理解了学生才可能搞懂。

二、知之者不如好之者,好之者不如乐之者

兴趣是最好的老师,给学生设计一些有趣的题目,让他们做,做出来的成就感是最能激发兴趣的。兴趣可以创造新的东西。首先作为老师的我们应该有兴趣,兴趣备课、兴趣上课、兴趣练习、兴趣作业、兴趣批改、兴趣上机,耳濡目染的就会使学生的兴趣提高,这就可以达到创新的目的。

三、实践是创新的源泉

我听到的会忘掉,我看到的能记住,我做过的才真正明白。实践,实践,再实践

问题驱动或项目驱动,是个办法。创新意识和创新能力不仅要在教学过程中培养,而且还要重视实践中创新能力的检验。

学生能力的培养主体体现在课程中,如何使学生举一反三,教师应积极引导,开发学生的潜能,激发学生创新,要在课程教学中体现出来.课程设计是提高学生创新能力的基本途径

选择合适的选题,让学生进行设计,掌握课程设计的过程和基本的程序设计能力是培养学生能力的关键

在教学中注意教学方法与学生学习方法的结合,任务驱动式教学法和项目教学法(PBL)均可收到好的效果。

在教学过程中,尤其是需要学生熟悉、掌握的内容,在讲解时,采取任务驱动式教学法,先给学生布置任务,就是把这次课堂的重点内容先以任务问题形式通报给学生,然后激发他们在自己的知识结构中去寻找解决的方法,这样促成他们新的认知结构,培养创新意识;然后再对重点和难点进行讲解,促使学生学习的正向迁移。

项目教学的最简单理解,就是在教育教学中不论是本科生还是研究生,都借鉴研究生教育的一些方法,有条件的教师可以承接外面的项目,然后估计学生的水平,把部分或全部交给学生来做,或者给学生分组,然后根据学生的水平分配难度不一的部分,最后总结。如果条件不够的老师,可以想一些自己身边的问题,形成简单项目或是收集别人做过的项目(对自己教学有用的),分配给学生去做,但要引导学生用新的方法和个性特点解决问题。

四、创新需要团队协作

划分学习小组,一个小组共同完成一个特定的项目,分工合作,培养团队协作精神,使每个人都能做出自己的一份贡献,发挥一定作用,获得一份成就感。在我以前的数据库教学,也带领过学生分组做“课程设计”。我当时的做法是让学生自由分组,人数控制在4-8人,由他们自由选题。题目确定后先画出E-R图,然后由各小组组长跟我讨论,最后确定方案。然后分工,每人负责自己的相关内容。最后每个小组单独答辩,在他们做项目的过程中我全程辅导。这样下来,同学们普遍反映很好。

让学生自由选题,实际上也是提高他们兴趣的一个方面。而且通常自己选的题目也是比较熟悉的,记得那次有许多优秀的作业。他们很高兴,我也很有成就感

创新能力的培养一直是教师永恒的话题。我想一种能力的培养不是一朝一夕的事情,应从小处着眼,从小处做大。在教学过程中,从每堂课的思考题开始,逐步引导学生独立思考问题。从小作业到大作业,最后到了“课程设计”阶段,学生只有具备基本的解决问题的能力,才能真正设计出好的作品。

汇报完毕。

在此,非常感谢北京分中心的各位老师对上述讨论的归纳和整理。他们是: 1.数据库系统概论理论教学与实践教学如何结合? 北京工商大学:毛典辉、刘迎、东北财经大学:岳小婷、天津商业大学:侯立坤、五邑大学:何国辉

2.高校教师如何提高数据库教学水平? 阜阳职业技术学院:童德茂、北京城市学院:李丹丹、山东科技大学:范方、刘欣颖

3.高校教师为什么要参加科研活动?高校教师教学与科研的互动作用? 北京农学院:兰彬、732北方工业大学:何丽、北京工商大学:黄婉秋、北京工业大学:蔡越江、北京林业大学:谭红杨

4.您在数据库系统教学工作中遇到的主要困难是什么?如何解决的?

北京林业大学:王春玲、陈志泊、北京师范大学:党德鹏、山东大学:李晖、温州大学:王咏、中国石油大学:王新

5.数据库系统课程的重点难点是什么?哪些内容你觉得好讲,学生容易理解,哪些内容不好讲,学生不好掌握。

北京师范大学:林定移、北京信息科技大学:李宝安、董宛、何玉洁 6.如何搞好课堂教学?如何发挥教师的主导作用?

北京中医药大学:王丽、杜清、张未未、北京交通大学:王宁、阜阳职业技术学院:顾红飞、7.如何在数据库系统课程教学过程中培养学生的创新意识和创新能力? 北京工商大学嘉华学院:唐济波、蔡天星、商丘师范学院:陈树平、商丘师范学院:葛寒松

北京分中心 班长:马星光 2009-4-18

第三篇:C语言程序设计

1.Problem A: Hello world!Description Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。

Input 无

Output 请输出: Hello Da_min, Hello Er_min, Hello Xiao_ming!

Sample Input Sample Output Hello Da_min, Hello Er_min, Hello Xiao_ming!

HINT 请注意换行符

Append Code #include int main(){

printf(“Hello Da_min,n”);

printf(“Hello Er_min,n”);

printf(“Hello Xiao_ming!n”);} 2.Problem B: 求圆的面积和周长 Description 从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14。

Input 输入一个浮点型数据,有效数字不会超过十进制的6位。

Output 输出为两行。

第一行为圆的面积,第二行为圆的周长,格式见sample。

Sample Input 3

Sample Output Area: 28.260000 Perimeter: 18.840000

HINT 了解浮点类型的输入、输出和算术运算符

Append Code 法一

#include int main(){ double r,p,s;scanf(“%lf”,&r);p=2*3.14*r;s=3.14*r*r;printf(“Area: %lfn”,s);printf(“Perimeter: %lfn”,p);} 法二

#include #define pi 3.14 int main(){

double r;

scanf(“%d”,&r);

printf(“Area: %lfn”,pi*r*r);

printf(“Perimeter: %lfn”,2*pi*r);

}

3.Problem C:平均值 Description 求3个数的平均值。

Input 输入只有一行,为3个较小的整数。

Output 输出为这3个整数的平均值,保留3位小数。

Sample Input 1 2 3 Sample Output 2.000

HINT 注意除法运算对整型数据和浮点型数据是不一样的。

Append Code #include int main(){ int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%.3lf”,(a+b+c)/3.0);}

4.Problem D: 求字符的值 Description 从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。

Input 输入为3个字符。

Output 输出为3行。

每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。

Sample Input 0 A

Sample Output 048 060 030 032 040 020 065 101 041

HINT 了解字符值的存储和整型的关系。

Append Code #include int main(){ char a,b,c;scanf(“%c%c%c”,&a,&b,&c);printf(“%.3d %.3o %.3xn”,a,a,a);printf(“%.3d %.3o %.3xn”,b,b,b);printf(“%.3d %.3o %.3xn”,c,c,c);}

5.Problem A: 最简单的程序 Description 输出一行“Hello world!”。

Input 无

Output Hello world!

Sample Input Sample Output Hello world!

HINT Append Code #include int main(){

printf(“Hello world!”);}

6.Problem B: 算术基本运算 Description 计算两整数x和y(0

Input 输入只有一行,格式见sample。

Output 输出为多行,按顺序每行输出x,y的和、差、积、商、余数、x的平方和y的三次方,格式见sample

Sample Input x = 11, y = 3

Sample Output x + y : 14 xy : %dn“,x-y);

printf(”x * y : %dn“,x*y);

printf(”x / y quotient: %d, remainder: %dn“,x/y,x%y);

printf(”x ^ 2 : %dn“,x*x);

printf(”y ^ 3 : %dn“,y*y*y);} 7.Problem C: 自增自减运算 Description C语言中有自增运算++、自减运算--,并且可以前置和后置。

编写一个程序:对输入的一个整数a,输出a++、a--、++a、--a的值。

Input 一个整数a,a是很小的整数。

Output 输出为5行,第一行为a的值,后面依次为--a、a--、a++、++a的值。

5行输出纵向a要对齐,“:”对齐,“:”前后各一个空格,后面的数值不用对齐。每行行尾都有回车。

Sample Input 0

Sample Output a : 0--a :-1 a--: 0 a++ : 0 ++a : 1

HINT Append Code #include int main(){ int a,x;scanf(”%dn“,&x);a=x;printf(” a

: %dn“,a);printf(”--a

: %dn“,--a);a=x;printf(” a--: %dn“,a--);a=x;printf(” a++ : %dn“,a++);a=x;printf(”++a

: %dn“,++a);}

8.Problem F: 绝对值 Description 求整型数据和浮点型数据的绝对值。

Input 输入两个数,第一个是整数,第二个是浮点数。

Output 输出为两行,第一行为整数的绝对值,第二行为浮点数的绝对值,注意浮点数的绝对值不输出无意义的0。

Sample Input-1 1

Sample Output 1 1

HINT 求绝对值可以用标准库函数来完成,也可以自己判断。注意浮点数的输出格式。求绝对值的函数在哪个头文件?貌似很多人会搞错,包括很多编书的人!

Append Code #include //#include int main(){

int n;

float m;

scanf(”%d%f“,&n,&m);

//n=abs(n);

//m=fabs(m);

if(n<0)

{

n=-n;

}

if(m<0)

{

m=-m;

}

printf(”%dn“,n);

printf(”%g“,m);

return 0;}

9.Problem A: 奇数还是偶数? Description 输入一个整数,判读它是奇数还是偶数。

Input 输入只有一行,为一个100以内的正整数。

Output 输出为一行。

若输入为偶数则输出“even”,奇数输出“odd”。Sample Input 30

Sample Output even

HINT 用整数运算可以解决,练习“?:”表达式。

Append Code #include int main(){

int n;

scanf(”%d“,&n);

if(n>=0&&n<=100){

if(n%2==0)printf(”evenn“);

else printf(”oddn“);

}

return 0;}

10.Problem B: 简单的打折计算 Description 商店规定:消费满n元,可以打八八折。设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位:元),精确到分。

Input 输入只有一行,三个整数m、n和x,且0

Sample Input 95 300 4

Sample Output 334.40

HINT 了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。

Append Code #include int main(){

int m,x,n,a;

float b;

scanf(”%d%d%d“,&m,&n,&x);

0

x

m

a=m*x;

if(a>n)

b=0.88*a;

else

b=a;

printf(”%.2fn“,b);

}

11.Problem C: 判断闰年 Description 输入一个正整数的年份,判断是否为闰年。

Input 输入只有一行,为一个10000以内的正整数。

Output 输出为一行。

若输入为闰年偶数则输出“Yes”,否则输出“No”。

Sample Input 2010

Sample Output No

HINT 了解逻辑运算符和关系运算符。

Append Code #include int main(){

int x;

scanf(”%d“,&x);

if(x>0&&x<10000)

{

if(x%4==0&&x%100!=0)

printf(”Yesn“);

else if(x%400==0)

printf(”Yesn“);

else

printf(”Non“);

}

else

printf(”error“);}

12.Problem D: 水仙花数 Description 如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:13+53+33=153。

Input 一个整数x,100<=x<=999。

Output x是水仙花数,则输出“YES”,否则为“NO”。

Sample Input 153

Sample Output YES

HINT Append Code #include int main(){

int a,b,c,x;

scanf(”%d“,&x);

a=x/100;

b=x/10%10;

c=x%10;

if(x==a*a*a+b*b*b+c*c*c)

printf(”Yes“);

else

printf(”No“);}

13.Problem E: 三个数比较大小 Description 从键盘上输入0~100之间的三个数,按从小到大的顺序输出。

Input 输入只有一行,为三个整数。

Output 按从小到大输出这三个数。

Sample Input 15 10 20

Sample Output 10 15 20

HINT 用if语句判断各种情况可以解决这个问题。

Append Code #include int main(){

int a,b,c;

scanf(”%d%d%d“,&a,&b,&c);

if(a>=b)

{

if(b>=c)

printf(”%d %d %dn“,c,b,a);

else if(c>=a)

printf(”%d %d %dn“,b,a,c);

else

printf(”%d %d %dn“,b,c,a);

}

else

{

if(a>=c)

printf(”%d %d %dn“,c,a,b);

else if(b>=c)

printf(”%d %d %dn“,a,c,b);

else

printf(”%d %d %dn“,a,b,c);

} }

14.Problem F: 奇怪的求和之一 Description 给定3个正整数a、b和c,按照如下规则求和: 如果这个数字是偶数,则累加到和中;

如果这个数字是奇数,则将大于该数的最小偶数累加到和中。

Input 三个正整数,均在100以内。

Output 一个和。

Sample Input 2 3 5

Sample Output 12

HINT 如果不会使用分支语句,可使用条件运算符判断到底将哪个数累积到和中。

Append Code #include int main(){

int a,b,c;

scanf(”%d%d%d“,&a,&b,&c);

if(a%2!=0)a++;

if(b%2!=0)b++;

if(c%2!=0)c++;

printf(”%dn“,a+b+c);

}

15.Problem G: 你过线了吗? Description 经过四年的学习,你决定报考我国著名的“285”高校之一的北青大学,经过认真的复习,残酷的考试,终于知晓了自己的考试成绩,也知道了北青大学的录取分数线,请你编程判断,自己过线了吗? Input 输入有2行,第一行有4个正整数,分别表示三门课程的分数线以及总分分数线。第二行有3个非负整数,分别表示你考的三门课程的成绩。

Output 如果你的三门课程成绩都不低于相应课程的分数线,且你的考试总分也不低于北青大学的总分分数线要求,则输出“congratulations”,否则输出“sorry”。

Sample Input 70 80 70 240 80 80 82

Sample Output congratulations

HINT 如果你不会使用分支语句,同样可以使用条件运算符实现该程序。

Append Code #include int main(){

int a,b,c,d,e,f,g,h;

scanf(”%d %d %d %dn%d %d %d“,&a,&b,&c,&d,&e,&f,&g);

h=e+f+g;

if(e>=a&&f>=b&&g>=c&&h>=d)

printf(”congratulations“);

else

printf(”sorry“);} 16.Problem I: A+B Problem(II): Input/Output

Practice Description 计算a+b,0<=a,b<1000。

Input 输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。

Output 每行输出一个a+b的和,顺序与输入对应。

Sample Input 2 1 2 10 20

Sample Output 3 30

HINT N给出了测试样例数,用for循环处理方便。

Append Code #include int main(){

int n,a,b,i;Scanf(“%d”,&n);For(i=0;i

17.Problem H: A+B Problem Description 计算a+b,0<=a,b<1000。

Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。

Output 每行输出一个a+b的值,顺序与输入对应。

Sample Input 1 2 10 20

Sample Output 3 30

HINT OJ系统上测试输入结束符为EOF(End Of File),其值为-1。用scanf()把文件所有内容读完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。本题解法参看FAQ。Append Code #include int main(){

int a,b;

while(scanf(”%d%d“,&a,&b)!=EOF){

printf(”%dn“,a+b);

}

return 0;}

18.Problem A: 判断是否是元音字母 Description 输入一个英文字母,判断是否是元音字母。元音字母是:a,e,i,o u,A,E,I,O,U

Input 输入一个英文字母

Output 是元音字母,输出“yes”,否则输出“no”,行尾没有回车。

Sample Input A

Sample Output yes

HINT Append Code #include void main(){

char ch;

scanf(”%c“,&ch);

if(ch>='A'&&ch<='Z')

ch=ch+32;

if(ch=='a')

printf(”yes“);

else if(ch=='e')

printf(”yes“);

else if(ch=='i')

printf(”yes“);

else if(ch=='o')

printf(”yes“);

else if(ch=='u')

printf(”yes“);

else

printf(”no“);

}

19.Problem B: 按顺序输出三个数 Description 对于输入的3个整数,按照从小到大的顺序输出。

Input 输入3个int类型内的整数,两两之间用一个空格隔开。

Output 按照从小到大的顺序输出上述三个数,两两之间用一个空格隔开。

Sample Input 2 1 3 Sample Output 1 2 3

HINT Append Code #include void main(){

int a,b,c,temp;

scanf(”%d%d%d“,&a,&b,&c);

if(a

{

temp=a;

a=b;

b=temp;

}

if(a

{

temp=a;

a=c;

c=temp;

}

if(b

{

temp=b;

b=c;

c=temp;

}

printf(”%d %d %dn“,c,b,a);}

20.Problem E: Description 判断输入整数的奇偶性。

判断奇偶数 Input 输入为一个整数。

Output 输出只有一行,代表判断结果。如果输入的整数n是一个偶数,输出: n is an even number.否则输出:

n is an odd number.见样例。

Sample Input 12

Sample Output 12 is an even number.HINT Append Code #include int main(){

int a;

scanf(”%d“,&a);

if(a%2==0)

printf(”%d is an even number.“,a);

else

printf(”%d is an odd number.“,a);}

21.Problem A: 判断两个整数的大小关系 Description 输入2个整数a和b,如果a>b,则输出1,否则输出0。

Input 两个整数a和b,均不超过int类型的表示范围。

Output 表示a>b的结果:如果a>b,则输出1,否则输出0。

Sample Input 3 4

Sample Output 0

HINT

Append Code #include int main(){ int a,b;scanf(”%d %d“,&a,&b);if(a>b)

printf(”1“);

else

printf(”0“);return 0;} 22.Problem D: 成绩的等级 Description 把百分制的考试成绩转换成五级制的成绩: 90~100:Excellent 80~89:Good 70~79:Average 60~69:Pass 0~59:Failing

不在0~100之间的输入是非法数据,输出“Error”。

Input 输入多行,每行一个整数。

Output 输入所对应的成绩等级。

Sample Input-1 81 92 35 68 72 100

Sample Output Error Good Excellent Failing Pass Average Excellent HINT 用switch语句解决这个问题比较方便。

Append Code #include int main(){

int score;

while(scanf(”%d“,&score)!=EOF)

{

if(score<0||score>100)

printf(”Errorn“);

else

{

switch(score/10)

{

case 0:

case 1:

case 2:

case 3:

case 4:

case 5:printf(”Failingn“);break;

case 6:printf(”Passn“);break;

case 7:printf(”Averagen“);break;

case 8:printf(”Goodn“);break;

case 9:

case 10:printf(”Excellentn“);break;

}

}

}

return 0;}

23.Problem E: 输出是m的倍数或n的倍数、但不是

m和n的公倍数的数 Description 输出1~k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1<=m,n

Input 输入三个整数,依次为k、m、n。

Output 从小到大输出符合题意的所有整数,两数之间用一个空格分开。

Sample Input 15 2 3

Sample Output 2 3 4 8 9 10 14 15

HINT 难点在于输出格式的控制:空格在数的中间,学会用循环时边界情况的特殊处理。

Append Code #include int main(){ int k,m,n,a,i=1;scanf(”%d %d %d“,&k,&m,&n);if(m

a=m;else

a=n;printf(”%d“,a);for(i=a+1;i<=k;i++){

}

if((i%m==0&&i%n!=0)||(i%n==0&&i%m!=0))

printf(” %d“,i);} return 0;

24.Problem B: 两整数相加减 Description 计算a+b和a-b。

Input 输入为一对整数a和b。a,b用空格分开。

Output 输出a+b和a-b的计算结果,各占一行。

Sample Input 1 2

Sample Output 3-1

HINT Append Code #include int main(){ int a,b;scanf(”%d %d“,&a,&b);

printf(”%dn“,a+b);

printf(”%dn“,a-b);} 25 Problem C: 它满足条件吗? Description 需要判断给定的一个整数是否同时满足如下三个条件: 1.它是一个完全平方数。2.它是一个偶数。3.它是一个正数。

注:若一个数能表示成某个自然数的平方的形式,则称这个数为完全平方数。例如:

0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529 Input 一个int范围内的整数。

Output 如果输入的数字满足条件,则输出yes,否则输出no。

Sample Input 100

Sample Output yes

HINT 注意逻辑表达式判断三个条件的顺序。如果你不会使用分支语句,同样可以使用条件运算符实现该程序。

库函数sqrt()可以用于求一个数的平方根。

Append Code #include #include int main(){ int a;scanf(”%d“,&a);

if(a==sqrt(a)*sqrt(a)&&a%2==0&&a>0)

printf(”yes“);

else

printf(”no“);}

26.Problem F: 多路分支 Description 编写一个完整的程序,运行时向用户提问”你考试考了多少分?(0-100)“接受输入后判断其等级并显示出来等级: 优:90<=分数<=100 良:80<=分数<90 中:60<=分数<80 差:0<=分数<60

Input 输入任意一个整数分数值,显示等级;再输入任意一个整数分数值,显示等级;....直到测试数据较充分,可输入-1止。

Output 对任意输入的分数值,输出对应的等级,直到输入的数为-1时才退出运行.Sample Input 102 100 90 80 70 60 50 0-80-1

Sample Output grad must between 0 and 100 优

grad must between 0 and 100 grad must between 0 and 100

HINT Append Code #include int main(){

int x;

while(scanf(”%d“,&x)!=EOF)

{

if(x<0||x>100)

printf(”grad must between 0 and 100n“);

else if(x>=90)

printf(”优n“);

else if(x>=80)

printf(”良n“);

else if(x>=60)

printf(”中n“);

else if(x>=0)

printf(”差n“);

}

return 0;} Problem D: 有多少人? Description 学校举行运动会,如果全体学生按照3人一队列队,则多了1个人;如果按照4人一队列队,则多了2个人;如果按照5人一队排队,则多了3个人。请问这个学校有多少学生?

Input 一个int类型的正整数N,是学生人数的上界,即:该校学生数不超过N。

Output 所有可能的学生数,每个数占一行。

Sample Input 200

Sample Output 58 118 178

HINT Append Code #include #include int main(){

int n,i;

scanf(”%d“,&n);

for(i==1;i<=n;i++){ if(i%3==1&&i%4==2&&i%5==3)

printf(”%dn“,i);}

return 0;} Problem C: 正负数各有几个? Description 输入若干个整数,求其中正数、负数的个数。

Input 输入分为2行:第一行是一个数字N>0,表示下面有N个整数。第2行是N个整数,都是int类型的。

Output 输出所输入的N个整数的正数个数和负数个数,并用空格分开2个输出。Sample Input 10 2 3 4 5-1-2-3-4-5

Sample Output 5 5

HINT 貌似还有一种叫做0的数。

Append Code #include int main(){

int n,a,i,num1=0,num2=0;

scanf(”%d“,&n);for(i=0;i

{

scanf(”%d“,&a);

if(a>0)

num1++;

else if(a<0)

num2++;

}

printf(”%d %dn“,num1,num2);

return 0;} Problem A: A+B Problem(III): Input/Output

Practice Description 计算a+b,0<=a,b<1000。

Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。当测试样为0 0时表示输入结束,0 0不参与运算。

Output 每行输出一个a+b的值,顺序与输入对应。

Sample Input 1 2 10 20 0 0

Sample Output 3 30

HINT 练习break的使用。

Append Code #include int main(){ int a,b;while(scanf(”%d %d“,&a,&b)!=EOF)

{

if(a!=0||b!=0)

}

printf(”%dn“,a+b);

else

break;

return 0;} 30 Problem B: A+B Problem(IV): Input/Output

Practice Description 计算a+b,0<=a,b<1000。

Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。

Output 每行输出一个a+b的值,顺序与输入对应。每个格式样例之间用一个空行分隔开。

Sample Input 1 2 10 20 15 35

Sample Output 3 30 50

HINT 由于输出的和比空行多一个,所以全部计算放在一个循环里是不行的,必须要特殊处理开头或者结尾。

Append Code #include int main(){ int a,b,n=0;while(scanf(”%d %d“,&a,&b)!=EOF){

n++;

if(n==1)

printf(”%dn“,a+b);

else

printf(”n%dn“,a+b);

}

return 0;}

Problem C: n个数的最大值和最小值 Description 找出n个数中最大的数和最小的数,并将它们的值输出出来。

Input 输入为n+1个整数,都在int类型范围内。这些数可能用若干空格或者换行符分隔开。输入的第1个数为n,表示后续有n个数输入。从输入的第2个数开始,求出直到第n+1个数中最大的数和最小的数。

Output 输出为两行,格式见sample。

Sample Input 3 0 1-1

Sample Output The maximum number is 1.The minimum number is-1.HINT 分隔符是空格还是回车都是空白符,对scanf(”%d“)来说没有区别;先读入n,然后用for循环就很容易控制读入n个数的过程。

Append Code #include int main(){

int n,i,max,min;

scanf(”%d“,&n);

int a[n];

for(i=0;i

scanf(”%d“,&a[i]);

max=a[0];

min=a[0];

for(i=0;i

{

if(max

max=a[i];

if(min>a[i])

min=a[i];

}

printf(”The maximum number is %d.n“,max);

printf(”The minimum number is %d.“,min);

return 0;} 32.Problem D: 求100以内的素数 Description 素数是只能被1和自身整除的正整数,根据数学定义1不是素数。素数也叫质数。

Input 输入为两个整数m和n,满足0<=m<=n<=100。

Output 从大到小输出m~n之间的所有素数,一个素数一行。如果m~n之间没有素数,则不输出任何数。

输出的所有数在两行“=====”之间。

Sample Input 2 12

Sample Output ===== 11 7 5 3 2 =====

HINT 利用素数的数学规律可以很容易的解出此题,题目给出的数据范围是关键。

Append Code #include #include int main(){ int m,n,i,j,k,t;scanf(”%d %d“,&m,&n);printf(”=====n“);for(i=n;i>=m;i--){

t=0;

for(j=2;j<=sqrt(i);j++)

if(i%j==0)

t=1;

if(t==0&&i>1)

printf(”%dn“,i);} printf(”=====“);return 0;} 33.Problem E: 是否构成三角形? Description 给出三个整数,代表三条边的长度,判断这三条边的长度是否能构成一个三角形?

Input 第一行是n(1<=n<=100),表示有n组测试数据

接下来有n行,每一行包含三个整数,表示三个边长(1<=边长<=100)

Output 如果三条边能构成三角形,输出YES,否则输出NO

Sample Input 3 1 2 3 2 8 7 20 20 1

Sample Output NO YES YES

HINT Append Code #include int main(){ int a,b,c,n,i;scanf(”%d“,&n);for(i=0;i

{scanf(”%d%d%d“,&a,&b,&c);

if(a+b>c&&a+c>b&&b+c>a)

printf(”YESn“);else printf(”NOn“);}

return 0;} 34.Problem C: 简单的整数排序 Description 对给出的若干整数按从小到大排序。

Input 输入的第一个数为n(n<=1000),后接n个整数。

Output 按从小到大的顺序输出这些整数,每两个整数之间用一个空格分隔开,最后一个整数后面没有空格。

Sample Input 10 3 9 1 5 2 8 5 6 7 3

Sample Output 1 2 3 3 5 5 6 7 8 9

HINT 排序前必须把所有的整数都存储下来。因为只有最多1000个数,1秒的时间足够任何排序算法运行处结果来。

Append Code #include int main(){

int c,i,n,j;

int a[1000];

scanf(”%d“,&n);

for(i=0;i

scanf(”%d“,&a[i]);

for(i=1;i<=n-1;i++)

{

for(j=0;j

{

if(a[j]>a[j+1])

{

c=a[j];

a[j]=a[j+1];

a[j+1]=c;

}

}

}

printf(”%d“,a[0]);

for(i=1;i

printf(” %d“,a[i]);

return 0;}

35.Problem A: Description

购物的路程 Saya和Kudo一起去购物。假定她们逛的街是一条直线,而商铺是这条直线上的一些点。她们将车停在该直线最左端的店铺处,然后从左向右开始逛每一个店铺,然后从最右边的店铺再返回到停车处。你的任务是计算她们走了多少路。

Input 输入有多组。每一组的第一行是N(0

Output 对每组输入,输出她们走的路长。

Sample Input 4 13 89 37 6 7 30 41 14 39 42 0

Sample Output 152 70

HINT Append Code #include int main(){

int n,i,max,min,a[100001];

while(scanf(”%d“,&n)&&n!=0)

{

scanf(”%d“,&a[0]);

min=max=a[0];

for(i=1;i

{

scanf(”%d“,&a[i]);

if(a[i]>max)

max=a[i];

if(a[i]

min=a[i];

}

printf(”%dn“,(max-min)*2);

}

return 0;} 36.Problem B: 求累加和 Description 编程求min~max的累加和(含min和max),其中max>=min>0。部分程序已经给出,请填充其中的空白语句,并提交填充后的完整程序。

Input 输入为多行。第一行是一个整数N>0,表示后面有N个测试用例。后面有N行,每行包含2个整数,分别是min和max。

Output 输出为N行,每个测试用例的计算结果占据一行。每行的格式为: case i:sum=s.其中i表示测试用例的编号(从1开始),s是该测试用例对应的累加和(设不超过int的表示范围)。

Sample Input 3 1 10 1 100 1 1

Sample Output case 1:sum=55.case 2:sum=5050.case 3:sum=1.HINT Append Code #include int main(){

int n,i,j,max,min,sum;

scanf(”%d“,&n);

for(i=0;i

{ sum=0;

scanf(”%d%d“,&min,&max);

if(max==min)

printf(”case %d:sum=%d.n“,i+1,min);

else

{

for(j=min;j<=max;j++)

sum=sum+j;

printf(”case %d:sum=%d.n“,i+1,sum);

}

} return 0;} 37.Problem G: 顺序输出字母 Description 按字母顺序输出两个字母st和ed之间的所有字母,但不包括st和ed。不输出逆序。

Input 两个字母st和ed,都是大写字母,用一个空格分开。

Output 在一行内按顺序输出st和ed之间的所有字母,但不包括st和ed。例如:

输入为A和E,则输出为BCD;

输入为A和B,则什么字母也不输出,只有一个空行; 输入为E和A,也是什么字母也不输出,只有一个空行。最后要输出一行(行尾不回车): ***END***

Sample Input A C

Sample Output B

***END***

HINT Append Code #include int main(){

char st,ed,a;

int i;

scanf(”%c%c%c“,&st,&a,&ed);

{

for(i=st+1;i

printf(”%c“,i);

printf(”n***END***“);

}

return 0;} 38.Problem F: 单字母变换 Description Tom和Jack是密码学爱好者,他们在聊天时经常使用一些暗语。他们使用的一种最简单的暗语是:将要说的每句话里面的英文字母变成这个字母之后的某个字母。现在要求你写一个程序,将一个字母变成它之后的某个字母。

Input 输入有2个:一个大写字母c和一个正整数d(0

Output 输出字母c之后的第d个字母。大小写与c一致。如果c之后的某个字母已经超出'Z',则再从字母'A'开始计数。

如:c='A',d=3,则输出应为:D。若:c='Y',d=3,则输出应为:B。

Sample Input A 3

Sample Output D

HINT Append Code #include int main(){

char c;

int d;

scanf(”%c%d“,&c,&d);

if(c+d<='Z')

printf(”%c“,c+d);

else

printf(”%c“,c+d-26);

return 0;}

39.Problem B: 登录密码验证 Description 编写一个程序,模拟用户登录系统的密码验证过程。系统提供给用户的密码长度最长为20个字符,若密码输入错误可以再次输入。但为了保证用户密码安全,若连续输入密码错误超过5次就会锁定账号一段时间。

Input 输入为若干个串,至EOF结束。输入的第一个串是用户的正确密码,后面的串为模拟用户登录时的输入的密码。

Output 每次输入错误的密码,输出一个“Wrong!”,若输入的密码为正确的,输出一个“Welcome!”,并结束密码测试。若前5次输入的密码都是错误的,则后面的输入中不管是否有正确的密码都输出“Out of limited!”。

Sample Input abcdefg

123456 kkkkkkkk abcdefg

Sample Output Wrong!Wrong!Welcome!

HINT 输入可以用scanf(”%s“)处理,密码比较用字符串的比较可以完成。

Append Code #include #include int main(){

char a[20],b[20];

int i,j=1;

scanf(”%s“,a);

while(scanf(”%s“,b)!=EOF)

{

if(j<=5)

{

if((strcmp(a,b)==0))

{

printf(”Welcome!n“);

break;

}

else

printf(”Wrong!n“);

j++;

}

else printf(”Out of limited!n");

} } 40.Problem C: 兔子的繁殖问题 Description 假设一对兔子每月能生一对小兔(一雌一雄),每对小兔出生后的下一个月是没有繁殖能力的,至出生后的第三个月开始又可以每月生一队小兔,问从一对刚出生的小兔开始,经过若干个月后一共有多少兔子(假设在此过程中兔子没有死亡)?

这个问题是意大利数学家菲波那契(Fibonacci)在他1202年出版的《算盘全书》中提出来的,从第一对刚出生的小兔开始每月的兔子数被乘坐菲波那契序列。

Input 输入的第一个数为n,接下来有n个数字。每个数字为一个月份m(m<=45)。

Output 输出为n行,每行为第m个月后的兔子总数。

第四篇:C 语言程序设计

《C 语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业的重要专业基础课。

本校从2001至今,每年都开设《C语言程序设计》课程,由于,我校最开始时的特殊情况,主要把重点放在C语言中的各类重点、难点的语法、语义上,使得学生经过比较复杂和痛苦的过程后,对C语言在使用上很难做到自己编写程序。而且很多学生产生了畏惧心理。

2004年,学院成立计算机科学与技术系,为了更好学习和掌握C语言,计算机科学与技术专业和计算机维护专业(计算机应用技术前身)除了开设《C语言程序设计》课程外,在后续一学期还开设了《C语言程序设计课程设计》,使得计算机专业学生编程思想和能力得到了极大提高。

2005年,为了让我院工科学生更好的掌握C语言编程以及通过四川省计算机二级考试,在《C语言程序设计》课程后设置《C语言程序设计课程设计》,极大地提高了学生的动手机会和能力,过级率显著提高!

2007年,依托我校建设精品课程的契机,我们将C语言中的各个知识点进行重新规整,提出适用于三本院校学生的语言设计学习的方法。我们提出,先了解C语言,再学习C语言,再用C语言的思想。即在开始时让学生初步知道C语言,然后引入比较简单的运算符以及基本输入、输出和简单的顺序结构程序设计。通过这样的方式,我们发现,学生在C语言的学习就不会从开始的时候陷入大量难懂的语法、语义和数据结构中。有了以上铺垫再层层进入,最终进入复杂的各类数据结构以及指针等学习。通过以上的内容规整后,教学效果有明显提高。

第五篇:c语言程序设计知识点总结

《C语言程序设计》教学基本知识点

第一章 C语言基本知识

1.C源程序的框架

尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。

2.C语言源程序的书写规则:

(1)C源程序是由一个主函数和若干个其它函数组成的。(2)函数名后必须有小括号,函数体放在大括号内。(3)C程序必须用小写字母书写。(4)每句的末尾加分号。(5)可以一行多句。(6)可以一句多行。

(7)可以在程序的任何位置加注释。3.语句种类

语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。(1)流程控制语句

流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。(2)表达式语句

表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。(3)函数调用语句

函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。(4)空语句

空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。(5)复合语句

复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。4.运算符

用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。

根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。

根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。5.表达式

表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。表达式的种类有:

算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号表达式(顺序表达式)、条件表达式、指针表达式。6.数据的输入/输出

C语言本身没有输人/输出语句,数据的输入/输出是通过调用库函数来实现的。

第二章 数据类型知识点 划分数据类型的意义是编译系统对每个不同类型的数据在内存中分配的字节数不同,不同类型的数据可以按规定参加不同类型的运算。1.C语言的数据类型

数据类型有:整型、字符型、实型单精度型、双精度型、构造类型数组类型、结构体类型、共用体类型、枚举类型、指针类型、空类型,其中整型、实型、字符型是C语言中的基本类型。

2.各种类型数据的定义方法

定义形式:数据类型

变量名1,变量名2,„„变量名n; 3.常量与变量

(1)常量——在程序执行期间其值不变的量。它不能被赋值。(2)变量——在程序运行期间其值可以改变的量。4.各种类型数据的混合运算

各类数据运算前会自动转换成同一类型。规律如右图示:从右向左的箭头表示必定的转换,如float型数据运算前化成double型,以提高运算精度,结果也为double型,short或char型数据运算前化成int型,结果也为int型;从下向上的箭头表示转换方向是向级别高的靠拢。

5.强制类型变换

当我们需要对数据进行类型变换,而机器又不能自动完成时,就要用强制类型变换,形式为:(数据类型符)(被转换对象)。

第三章 选择知识点

C语言中实现选择结构的控制语句有两种:条件分支语句if和开关分支语句switch。1.if语句的三种形式:(1)if(表达式)语句;(2)if(表达式)语句1;else语句2;(3)if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;„

else if(表达式n)语句n;2.开关分支语句switch(1)形式

switch(表达式){ case e1:语句1;break;case e2:语句2;break;case e3:语句3;break;„„

case en:语句n;break;default :语句n+1;}(2)功能

当表达式的值等于e1时,执行语句1; 当表达式的值等于e2时,执行语句2; „„

当表达式的值等于en时,执行语句n;

当表达式的值与常量e1、e2„„en谁都不等时,就执行default后的语句

第四章 循环知识点

循环就是在程序执行过程中,反复多次的执行同一段程序。C语言中有三种循环语句。1.while循环语句

形式为:while(表达式){ 循环体 };

执行过程是:先计算表达式的值,当表达式的值非0时就执行循环体,之后再判断表达式的值,且重复以上过程;当表达式的值为0时就结束循环。2.do--while循环语句 形式为:do { 循环体

} while(表达式);

执行过程是:先执行循环体一次,再判断表达式的值,当表达式的值非0时就再执行循环体,之后再判断表达式的值,且重复以上过程;当表达式的值为0时就结束循环。3.for循环语句

形式为:for(表达式1;表达式2;表达式3){ 循环体 } 4.三种循环语句的比较

三种循环语句可以完成同一件事,可任选其一。

使用while和do--while循环时,要提前给循环变量赋初值。而for循环是在表达式1中赋初值的。

while循环和for循环都是先判断条件后执行循环体,有可能一次也不执行循环体,do--while循环是先执行循环体,后判断条件,即循环体至少也得执行一次。for循环不限于计数循环,其循环条件可以是逻辑表达式和字符表达式等。5.循环嵌套

三种循环控制语句可以互相嵌套,即在一个循环体内部又可以出现另一循环,这种嵌套在理论上来说可以是无限的。注意必须是一个循环完整的套住另一个循环。6.break语句

break语句只能出现在三种循环语句和switch多分支语句中,其作用是用来中断这四种语句的执行。当程序执行到break语句时,会跳出break语句所在的循环或switch分支,而直接执行紧跟在它们后面的语句。7.continue语句

continue语句只能出现在三种循环语句中,当程序执行到continue语句时,其作用是提前结束本次循环,自动跳过循环体中后半部剩余的语句的执行,而直接回到循环条件判断。根据判断的结果决定是否继续执行下次循环。8.goto 语句

goto语句是一种非结构化语句,其作用是使程序的执行无条件的转移到某一处。使用格式为: goto 标号;利用goto语句与if条件语句配合,也可以实现条件循环。C语句允许在任何语句前添加标号,作为跳转目标,标号的构成是标识符后面加一个“:”。

第五章

数组知识点

数组就是同类型的一批数据的集合,用一个变量名存放,区分各元素的办法是用下标。1.一维数组

类型说明符数组名[数组长度];

(1)数组命名要符合标识符的命名规则。

(2)数组名后的括号必须是方括号,不能是圆括号。

(3)数组长度必须是正整数,可以是个表达式,但不能有变量,C语言不支持动态数组。(4)数组长度表示数组中元素的个数

(5)数组元素的下标从0开始数,所以最大下标是数组的长度减1。2.多维数组(以二维为例)类型说明符数组名[第一维长度][第二维长度];(1)数组命名要符合标识符的命名规则。

(2)数组名后的括号必须是两个方括号,定义时不能写成inta[3,4]。(3)数组长度必须是整型常量表达式。

(4)第一维长度表示数组行数,第二维长度表示数组列数。(5)每个数组元素都有两个下标,第一维表示该元素所在的行,第二维表示该元素所在的列,每一维的下标都从0开始数。二维数组的初始化:C语言规定只有静态数组和外部数组才允许在定义时赋初值,赋初值形式如下:

static类型说明符数组名[第一维长度][第二维长度]={初值表};

二维数组的引用:二维数组不能整体引用,要引用数组的单个元素,形式为:数组名[下标][下标]和普通变量的使用无任何区别。3.字符数组

C语言中没有字符串变量,字符串是靠字符数组实现的,所谓字符数组就是元素的数据类型为字符型的数组。

(1)字符数组的定义形式:char数组名[数组长度];

因为C语言中的整型数据和字符型数据是相通的,所以也可以这样定义:int数组名[数组长度];

(2)字符数组的初始化:给字符数组的初始化有两种方式,一种是用字符常量,另一种是用字符串。形式如下:

staticchar数组名[数组长度]={字符常量表}; staticchar数组名[数组长度]={字符串常量}; 4.数组与函数

数组经常作为函数的参数,数组做函数的参数有两种形式,一是数组元素做函数的参数,一是数组名做函数的参数,当用数组名做函数的实参时传送的是首地址。5.常用的字符串处理函数

C语言提供了一些处理字符串的标准函数,用以完成一些常见的操作。对以下几个函数要掌握其功能和调用形式。

(1)gets(字符数组名)此函数功能是从键盘输入一串字符,回车后送到字符数组中,注意定义数组时数组长度要足够大。

(2)puts(字符数组名)此函数功能是将字符数组的内容输出到屏幕上。

(3)strcat(字符数组名1,字符数组名2)此函数功能是将字符数组1中的’’去掉后将字符数组2的内容连接到字符数组1的末尾。

(4)strcpy(字符数组名1,字符数组名2)函数功能是将字符数组2的内容(包括’’)拷贝到字符数组1中,字符数组2处也可以是字符串常量。strcpy函数可以实现拷子串。(5)strcmp(字符数组名1,字符数组名2)函数功能是两个字符串(ASCII码)比大小。(6)strlen(字符数组名)此函数功能是求字符串的长度,注意不包括’’。(7)strlwr(字符数组名)此函数功能是将字符串中的所有大写字母都变成小写。(8)strupr(字符数组名)此函数功能是将字符串中的所有小写字母都变成大写。

第六章

函数知识点

每个C源程序都是由函数组成的,一个主函数和若干个其它函数,C语言程序设计的基础工作就是函数的具体编写,C语言中的函数就相当于其它高级语言中的子程序。1.函数的概念

函数就是一个数据加工厂,从函数外部接收数据,在函数内部加工处理,然后得到一个结果返回给外部的调用者。所以函数就是对语言功能的扩充,对函数的调用就是对功能的调用。

2.标准函数

各种高级语言都定义了一些标准函数,C语言中的标准函数称为库函数,是将一些基本的、常用的功能编成了函数,供大家使用方便。使用库函数时必须把它的头文件用#include命令包含进来,每个库函数的功能及对应的头文件都会在手册中给出。3.自定义函数

C 语言也允许用户自己编写函数以实现C库函数中没有提供的功能,称作自定义函数。4.定义函数

C语言规定每个函数都要独立定义,函数定义不能嵌套。函数定义的形式:数据类型函数名(形参表)形参说明语句序列 { 说明语句序列 可执行语句序列 } 5.函数调用

函数调用的形式是: 函数名(实参表)。当实参表中有多个参数时,要用逗号隔开,若被调函数无参数,调用时小括号也不能省。函数调用过程是:将实参的值传给形参,在函数体内进行加工处理,然后由return语句将函数值返回调用处。5.全局变量和局部变量

局部变量:在函数内部定义的变量称为局部变量,只在本函数中有效。全局变量:在函数外部定义的变量称为全局变量,它的作用范围是从定义开始到本文件结束。6.动态存储与静态存储

内存中的用户数据区分为动态存储区和静态存储区,动态存储区是指程序运行期间给变量临时分配存储单元,变量用完后立即释放单元的区域,动态存储区放的是函数的形参、自动变量、函数调用期间的现场保护数据和返回地址。

静态存储区是指程序运行期间给变量分配固定的存储单元,放的是全局变量和局部静态变量。

一个变量除了它的数据类型以外还有存储类型,定义一个变量时应该说明这两种类型。

第七章 预处理知识点

对高级语言编译连接就是把源程序转换成机器语言,C语言在进行编译之前还要预先处理三件事:宏定义命令、文件包含命令和条件编译命令,统称为预处理命令,其特点是: 1.所有的预处理命令都放在程序的头部,以#开头,且#号后面不留空格。2.预处理命令不是C的语句,行尾不加分号。

3.预处理命令是在编译预处理阶段完成的,所以它们没有任何计算、操作等执行功能。4.预处理命令有所变动后,必须对程序重新进行编译和连接。1.宏定义

宏定义命令的作用是给一些常用的对象重新命名,在程序中可以用宏名来引用这些对象,预处理时宏名会被代表的内容替换,此过程称为宏展开或宏替换。宏定义有两种形式: 2.文件包含

使用文件包含命令可以将另—个C源程序的全部内容包含进来,其形式为: #include <文件名>或#include “文件名” 通常可以把经常用到的,带公用性的一些函数或符号等集合在„起形成一个源文件,然后用此命令将这个源文件包含进来,这样可以避免在每个新程序中都要重新键入这些内容。3.条件编译

顾名思义满足条件时进行编译,为了解决程序移植问题,C语言提供了条件编译命令,它能使源程序在不同的编译环境下生成不同的目标代码文件。条件编译命令有3种形式。

第八章 指针知识点

1.什么是指针和指针变量?

指针就是内存地址,因为通过“地址”可以找到变量,所以内存“地址“形象的称为指针。

指针变量就是存地址的变量。在C语言中用一个变量存另一个变量的地址,那么就称这个变量为指针变量,指针变量的值就是地址。通常指针变量被简称为指针。

指针变量是有类型的,即指针值增1表示指向下一个数据,如整型数据在内存中占两个字节,它的指针变量增1是增两个字节。如实型数据在内存中占4个字节,它的指针变量增1是增4个字节。

2.怎样定义指针变量?

定义形式为:数据类型*指针变量名1,*指针变量名2„„; 3.指针的有关运算

指针为内存地址是整数,可以进行一些算术运算、关系运算、赋值运算、特殊运算等,但要注意运算代表的实际意义。4.指向数组的指针变量

(1)指向数组元素的指针变量定义形式为:inta[10];int*p=a;(2)指向一维数组的指针变量 定义形式为:inta[3][4];int(*p)[4];p=a;(3)指向字符串的指针变量

定义形式为: char*p=”字符序列“;

C语言中的字符串是以隐含形式的字符数组存放的,定义了指针变量p并不是将整个字符串都存放在p中了,而p中存放的是字符串的首地址。5.指向函数的指针变量

一个函数在编译时被分配一个入口地址,这个地址就是函数的指针,可以用一个指针变量指向它。指向函数的指针变量定义形式为: 数据类型(*指针变量名); 6.指针变量做函数的参数

(1)指针作函数的参数可以传送地址,如数组的首地址,函数的入口地址等。(2)指针作函数的参数也可以用地址方式传送数据。7.返回值是指针的函数

即函数的返回值是内存的地址,利用这种方法可以将一个以上的数据返回给函数的调用者。定义形式如下:

数据类型*函数名(形参表)8.指针数组

定义形式为:数据类型*数组名[数组长度];

数组中的每个元素都是指针类型的数据,这种数组被称为指针数组。9.指向指针的指针

定义形式为:数据类型**指针变量名;

指向指针数据的指针变量称为指向指针的指针。10.main函数的形参

main函数可以带两个形参,如: main(argc,argv)intargc;

char *argv[]; { „„ } 11.指向结构体的指针变量

结构体变量的指针就是该变量所占据的内存段的首地址。指向结构体的指针变量定义形式为:struct结构体类型名*指针变量名; 12.指向共用体的指针变量

共用体变量的指针就是该变量所占据的内存段的首地址。指向共用体的指针变量定义形式为:union共用体类型名*指针变量名;

替换了的字符时(这里为正中间的字符”4"),原来的字符己不复存在。

第九章 结构体与共用体知识点

结构体类型是C语言的一种构造数据类型,它是多个相关的不同类型数据的集合,相当于其它高级语言中的记录。1.结构体类型定义

结构体类型的形式为: struct结构体类型名 { 数据类型成员名1;...数据类型成员名n; } 2.结构体变量的定义 结构体变量有三种定义形式:

(1)先定义结构体类型,后定义结构体变量。(2)定义结构体类型的同时定义结构体变量。

(3)不定义结构体类型名,直接定义结构体变量。3.结构体变量的引用

(1)结构体变量的初始化:许多C版本规定对外部或静态存储类型的结构体变量可以进行初始化,而对局部的结构体变量则不可以,新标准C无此限制,允许在定义时对自动变量初始化。

(2)结构体成员的引用:由于C语言一般不允许对结构体变量的整体引用,所以对结构体的引用只能是对分量的引用,结构体变量中的任一分量可以表示为:结构体变量名·成员名 4.结构体与数组

C语言中数组的成员可以是结构体变量,结构体变量的成员也可以是数组。结构体数组有三种定义形式:

(1)先定义结构体类型,后定义结构体数组。(2)定义结构体类型的同时定义结构体数组。

(3)不定义结构体类型名,直接定义结构体变量。5.结构体与指针

一方面结构体变量中的成员可以是指针变量,另一方面也可以定义指向结构体的指针变量,指向结构体的指针变量的值是某一结构体变量在内存中的首地址。结构体指针的定义形式:struct结构体类型名*结构体指针变量名。由结构体指针引用结构体成员的方法 6.用指针处理链表

结构体的成员可以是指针类型,并且这个指针类型就是本结构体类型的,这样可以构造出一种动态数据结构—成为链表。所谓动态数据就是指在编译时不能确定数据量的多少,而是在程序执行时才确定的数据,动态数据可以比较方便的进行数据插人或删除等操作。7.结构体与函数

结构体变量的成员可以作函数的参数、指向结构体变量的指针也可以作函数的参数。虽然结构体变量名也可以作为函数的参数,将整个结构体变量进行传递,但一般不这样做,因为如果结构体的成员很多,或者有些成员是数组,则程序运行期间,将全部成员一个一个的传递,既浪费时间,又浪费空间,开销太大。8.结构体与共用体

结构体变量中的成员可以是共用体,共用体变量中的成员可以是结构体。共用体

为了节省存储空间,C语言允许将几种不同类型的数据存放在同一段内存单元,它们共用一个起始地址,称做共用体。1.共用体类型定义 union共用体类型名 { 数据类型成员名1;...数据类型成员名n; } 2.共用体变量定义

(1)先定义类型,后定义变量。(2)定义类型的同时定义变量。

(3)不定义类型名,直接定义变量。3.共用体变量的引用

(1)共用体变量不能整体引用,只能引用其成员,形式为:共用体变量名·成员名(2)共用体变量的成员不能初始化,因为它只能放一个数据。(3)共用体变量存放的数据是最后放入的数据。(4)共用体变量的长度是最大的成员的长度。

(5)可以引用共用体变量的地址、各个成员的地址,它们都是同一个地址。(6)共用体变量不能当函数的参数或函数的返回值,但可以用指向共用体变量的指针作函数的参数。

(7)共用体变量的成员可以是数组,数组的成员也可以是共用体变量。

第十章 位运算知识点

位运算就是按二进制位进行操作的运算,运算的对象只能是整型或字符型,不能是实型。不同长度的变量进行位运算,系统会自动右对齐,而左端的不齐部分,对于无符号数左端补满0,对于有符号数则:正数左端补满0,负数左端补满1。

第十一章 文件知识点

操作系统是以文件为单位对数据进行管理的,任何一种计算机高级语言都要有和磁盘文件打交道的能力,否则该语言的功能充其量是算一算、显示显示而已。在C语言中没有单独的文件操作语句,所有对文件的操作都是通过库函数来完成的,所以本章的重点是学会使用有关文件操作的库函数。1.文件的基本概念 2.文件类型指针 3.文件的操作

下载北京分中心《C语言程序设计》班级讨论总结word格式文档
下载北京分中心《C语言程序设计》班级讨论总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    济南分中心软件工程班级讨论总结

    济南分中心软件工程班级讨论总结 2009年12月11日—13日,我们来自山东省各地不同高校的8位教师有幸参加了教育部全国高校教师软件工程培训中心对国家精品课程《软件工程》的......

    安徽省分中心管理信息系统班级讨论总结

    【安徽省分中心】管理信息系统班级讨论总结 时间:2008年12月20日下午 地点:安徽省分中心(安徽师大网络中心) 学员:马丽君 吴惺惺 叶向阳 吴炜炜 梁中义 郑嫏嬛 徐婧 郭倩 盛旗锋......

    贵州省分中心市场营销班级讨论总结[★]

    贵州省分中心市场营销班级讨论总结一、西部地方的高等院校,精品课程建设的重点、难点和关键有如下: 1、采用现代化的教学手段,引入多媒体教学,采用图、文、声、动画和录像等丰富......

    【山西分中心】大学语文班级讨论总结

    【山西分中心】大学语文班级讨论总结 山西分中心作为此次教育部全国高校教师网络培训中心的分会场,非常荣幸地现场聆听了王步高教授、白育芳老师的精彩讲座,大家普遍认为深受......

    经典C语言程序设计例题

    经典C语言程序设计例题 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组......

    第一章 C语言程序设计

    第一章 C语言程序设计 考试形式:试卷(全国统一 4月第二个星期六9月倒数第二个星期六) 笔试: 满分100分60分及格 时间:90分钟内容: 70分 C语言知识30分 公共基础 选择题:60分 前......

    C语言程序设计心得体会

    C语言程序设计心得体会在这为期半个月的时间内,通过我们小组各成员之间的相互讨论和合作,我们完成了学生信息管理系统的程序设计,更值得高兴的是我们的程序得到了大家的喜爱,在......

    C语言程序设计策划书

    信息工程学院学生会科技部 关于举办信息工程学院C语言程序设计大赛的策划书 一、活动背景: 随着计算机技术的快速发展,计算机程序语言的多样化,C语言已经使用的越来越广泛,C语言......