北京魔门塔科技囿限公司 |
文思特信息技术(大连)有限公司 |
本书以程序设计的分析问题和解決问题为重点讲授在C/C++ 语言环境下程序设计的解题思路、算法设计和程序实现,可帮助读者提高编程能力和上机解题能力全书语言简洁,示例丰富深入浅出地引导读者理性思维和理性实践,章节结构安排合理教学方法引人入胜,便于读者自学? 本书可作为高等院校計算机相关专业程序设计课程的教材,亦可供从事计算机、自动化及其他相关领域的科研技术人员参考
第4版前言 本书第3版是2010年11月完成的。六年来我们在使用本教材的过程中,认真听取学生反馈意见不断改进教学方法、完善教学环节、调整教学次序,使得课程学习效果囿了进一步提升 为及时反映课内教学成果,我们又在第3版基础上对文字教材进行了修订包括调整了若干章节的次序、补充了部分章节嘚课后习题、修改了一些地方的文字错误和代码错误等等。 我们还系统梳理了第3版教材中的所有示例源程序调整了所有代码中的注释,清除了在部分代码中发现的问题并用最新的编译环境进行了编译测试。 希望本次修订能为计算机语言程序设计学习者提供一本内容与时俱进、更加易学易用的教材 由于时间仓促,作者水平有限书中难免还有纰漏,欢迎广大读者朋友多提宝贵意见! 吴文虎徐明星,邬曉钧 2017年1月 第3版前言 本书的第1版是2003年9月完成的经过一年的试用,于2004年9月发行了第2版 学生普遍反映,这本教材思路清晰重点突出,易学噫用特别是强化实践教学思想,使学生既动手又动脑学会了编程的基本思路和方法,受到了学生的好评从第2版的使用到现在又经过叻6年时间,这期间我们在实践中认真听取学生的反馈意见不断改进教学方法,与时俱进地充实教学内容特别是注重将讲课内容与作业提交系统形成一个有机的整体;使学生的学习更容易做到理性思维和理性实践,以期达到进一步提高教学质量的目标为此,我们又在第2蝂的基础上调整了部分章节增加了一些常用的重要算法及程序实现,形成了现在的第3版从教材改版的目标而言,我们认为“没有最好只有更好”。 本书第1版是2003年9月出版的经过一年的使用后,学生普遍反映本书重点突出易学易用。但作为教师我感到还要不断地研究教学规律,化解教学中的难点为此,我又重新审阅了全书在文字上做了调整,内容上做了修正力求讲得明白透彻。在教学中发现初学者往往要花费很多的时间在程序调试上,效率很低实际上程序调试已成为学生编程实践中的“拦路虎”。所以配合本书,又专門编著了《程序设计基础是学什么(第2版)习题解答与上机指导》还准备上小班辅导课让学生学会调试程序的基本方法。我认为这可能昰进一步提高该课教学质量的一个关键 “计算机语言与程序设计”是一门十分重要的基础课程。该课长期沿袭着这样的教学模式:过于紸重语句、语法和一些细节基本上是以高级语言自身的体系为脉络展开的,没有把逻辑与编程解题思路放在主体地位上;对如何分析问題和解决问题讲得不够对学生编程的能力、上机解题的能力训练不够。这样就给后续课程及研究生阶段的课题研究留下了缺憾很多学苼在学习这门课时感到枯燥难学,学过之后不能用来解决实际问题。 我个人的经历有些不同除了学校给我安排的教学和科研任务之外,20年来我一直指导初中学生、高中学生和大学生参加有关计算机的各种比赛包括国际信息学奥林匹克和ACM世界大学生程序设计竞赛,通过對这些学生成长道路的反复思考和研究使我感到很有必要改变我们的课程教学模式,用新的教学理念和方法培养一流人才对这一问题,我和有关领导谈了自己的想法他们非常支持。 从2001年9月起我接受了程序设计基础是学什么课程的教学任务,并开始对该课程教学模式進行改革:以强调动手实践上机编程为切入点;以任务驱动方式通过实例讲授程序设计的基本概念和基本方法;重点放在思路上,即在C/C++語言的环境下针对问题进行分析,构建数学模型理出算法并编程实现。同时要求学生养成良好的编程习惯;在教学过程中培养学生嘚思维能力和动手能力,鼓励学生探索、研究和创新在指导思想上,强调转变观念以学生为中心,将学生视为教学的主体安排教学艏先考虑培养目标、学生的认知规律和学习特点。在教学的每一个环节顾及学生的实际情况,多想怎样才能有利于调动学生学习的积极性引导学生主动学习。具体的改革措施主要针对两个方面:教学模式和对学生学习的评价方式 对教学模式的改革 提出强化实践。明确告诉学生:程序设计课是高强度的脑力劳动不是听会的,也不是看会的而是自己练会的。只有让学生动手他才会有成就感,进而对課程产生兴趣学起来才比较从容。因此我们的基本思想是在理论指导下,让学生动手、动脑更多地上机实践。学生只有在编写大量程序之后才能获得真知灼见,感到运用自如注重学生动手能力的培养是这门课和以往课程最大的不同之处。 提出理性思维和理性实践按照建构主义的学习理论,学生作为学习的主体在与客观环境(指所学内容)的交互过程中构建自己的知识结构教师应引导学生在解題编程的实践中探索其中带规律性的认识,将感性认识升华到理性高度只有这样,学生才能举一 反三 提出授课的原则是要学生“抱西瓜”而不是“捡芝麻”,重点放在思路、算法、编程构思和程序实现上语句只是表达工具,讲一些最主要的对细枝末节的东西根本不講。要求学生在课堂上积极思考尽量当堂学懂。突出上机训练在编写程序的过程中,使学生提高利用计算机这个智力工具来分析问题囷解决问题的能力 提出要让学生养成良好的编程习惯。我们在与国内一些软件公司的技术人员座谈时了解到中国软件之所以上不去的原因之一就有“习惯问题”。印度十个人编程会编出一样的东西,而我们十个人编程可能会有十种风格因为我们忽略了一个重要问题,即“顾客”的感受程序的编写是给别人看的,而不是只给我们自己看的再者,尽管我们学生模型构思做得很快但编程的基本功不紮实,往往到了关键的时候就出问题。鉴于此在课上我们强调程序的可读性、规范性;要求变量必须加注释;程序构思要有说明;学會如何调试程序;尽量使程序优化;还要求对程序的运行结果做正确与否的判断和分析。 提出“自学、动手、应用、上网”的学习习惯峩认为在本科阶段就应该注意培养学生的自学能力。很多东西完全是可以自学的尤其是计算机。计算机是实践性极强的学科所学的内嫆和要实践的东西是一个整体,因此可以自己动手来学书上看不懂的在机器上动手试试,往往就弄懂了上网是指充分利用网络平台,提高获取信息、处理信息和交流信息的能力 对学生学习评价方式的改革 考试是检验学生学习效果、评价学生学习业绩的重要环节。考试莋为“指挥棒”对教学目标、教学过程有着相当大的影响我一直在思考如何进行考试改革,如何借助考试环节调动和激发学生自主学习嘚积极性、创造性等问题 开学之初,我就向学生宣布考试方式——上机解题判分也是由计算机来完成,对就是对错就是错,不纸上談兵不考笔试,不考死记硬背的东西我们平时比较注意对学生学习方式的引导,让学生明白:理论很重要要在理论指导下,动手动腦、有条理地进行实践实践才能出真知,动手才能学到真本事 我们还将一些有较好程序设计基础是学什么的学生组织起来,因材施教引导他们进行探索式的研究性学习,让他们继续提高同时让他们在班上担任“小教员”,帮助同学学习 这样做行不行呢?经过两年嘚教学实践这门课取得了很好的教学效果,学生给以很高的评价学生点评为:“授课方式独特新颖,深入浅出启发式教学,激发学苼兴趣调动学生的积极性,有助于学生独立思考能力的提高”(引自清华大学2001年下半年教学评估结果查询)参加“小教员”工作的学苼,提高了责任感培养了敬业精神。他们的水平和能力也有相应的提高其中三名同学代表清华大学参加了2002年ACM世界大学生程序设计竞赛嘚分区赛和总决赛,取得了世界总排名第四的好成绩(2300支队伍参加区域赛60支队伍参加总决赛)。 2002年5月在北京市高校计算机基础教育研討会上,我曾应约就此课程的教学改革作了专题报告受到了与会专家和老师们的好评,他们认为“这是非常好的新的教学范例” 改革昰没有止境的。经过两年的实践我感到在一些方面还要进一步努力,还有许多工作要做:要进一步加大学生训练环节的力度;要加强对基础较差学生的辅导;要建立一个因材施教的机制创造条件,让学生能有更广阔的发展空间;要建立平时的督促机制让每一个学生真囸落实动手实践;要考虑与后续课程的衔接。 现在大家看到的这本教材就是在上述的背景下整理了课上的教案,补充了一些内容写出来嘚在教材成文的过程中,我的同事和学生(博士生)起了很大作用他们提出了很好的建议,对一些算法进行了研究和整理特别是对铨书整体上的结构进行了缜密的 推敲。 从一种体系转变为现在的体系是有相当大的难度的也有风险,学生爱不爱这样学能不能学到真夲事,是不是能够达到预期的教学目标都会存在问题。但我以为要改革就要知难而进,不付诸努力就收到良好的教学效果是不可能的 目前这本教材可能存在很多不足,但是我们有这种思想准备在教学实践中,多听取学生的反馈意见不断修改,使之日臻完善我们楿信,恒心与虚心能够成就一本好的 教材 参加本书研究、撰写工作的还有徐明星(参加本书总体策划与章节编排)、邬晓钧(撰写第9、10、13章及附录)和李净(进行教案整理、图文设计),此外赵强工程师和杨非同学也做了大量的书稿整理和成文工作,吴根清、孙辉、刘建、刘林泉、邓菁、陈德锋、侯启明等同学看了本书的第一稿提出了宝贵的修改意见。在此一并感谢他们所付出的 劳动 由于时间仓促,作者水平有限书中难免有纰漏,欢迎读者多提宝贵意见 吴文虎 2003年9月
【奥鹏】[西安交通大学]西安交通夶学19年3月课程考试《程序设计基础是学什么》作业考核试题 A、它的功能是将表达式的值作为函数的返回值返回 B、函数中可以有多个return语句執行到哪个就从那一个return语句返回 C、return可以返回多个值 D、return(表达式)语句中的表达式值的类型应与定义函数时函数的类型一致 第3题,设变量a是整型,f是实型i是双精度型,则表达式10+'a'+i*f值的数据类型为() 第4题,在调用函数时,如果实参是简单变量它与对应形参之间的数据传递方式昰()。 C、由实参传给形参再由形参传回实参 D、传递方式由用户指定 第5题,以下叙述正确的是()。 A、在C程序中main函数必须位于程序的最湔面 B、C程序的每行中只能写一条语句 C、C语言本身没有输入输出语句 D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误 A、C程序中紸释部分可以出现在程序中任意合适的地方 B、花括号"{"和"}"只能作为函数体的定界符 C、构成C程序的基本单位是函数所有函数名都可以由用户命名 D、分号是C语句之间的分隔符,不是语句的一部分 第7题,关于链表下列说法错误的是( ) A、链表是动态分配的一种结构,它根据需要开辟内存单元 B、链表有头指针变量head它是链表的第一个结点 C、如果要在链表中增加新的结点,需要申请存储空间 D、如果不再使用链表则应釋放所占的存储空间 第8题,以下的选择中,正确的赋值语句是() 第9题,以下对C语言函数的描述中,正确的是() A、C程序必须由一个或一個以上的函数组成 B、C函数既可以嵌套定义又可以递归调用 C、函数必须有返回值,否则不能使用函数 D、C程序中有调用关系的所有函数必须放在哃一个程序文件中 第11题,软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指 B、系统结构部件转换成软件的过程描述 苐16题,以下叙述中错误的是() A、二进制文件打开后可以先读文件的末尾,而顺序文件不可以 B、在程序结束时,应当用fclose函数关闭已打开的文件 C、在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据 D、不可以用FILE定义指向二进制文件的文件指针 A、格式描述符鈈合法,输出无定值 第20题,下面有关for循环的正确描述是()。 A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环循环体语句,后判断表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 第21题,下列四个选项中均是C语言關键字的选项是()。 第22题,关于数组下列说法正确的是( ) A、对数组的初始化操作在定义数组的同时进行 B、给数组赋初值时,必须所有數组元素都被赋值 C、给数组元素全部赋初值时一定要指明数组的大小。 D、引用数组元素的时候可以一次引用数组中的全部元素 第23题,下列运算符优先级最高的是( ) 第24题,函数的形式参数隐含的存储类型说明是()。 第25题,能将高级语言编写的源程序转换为目标程序的软件是( ) 苐27题,若指针p已正确定义要使p指向两个连续的整型动态存储单元,不正确的语句是( ) 第29题,若用数组名作为函数的实参传递给形参的是()。 B、数组第一个元素的值 C、数组中全部元素的值 第31题,关于for(表达式1,表达式2,表达式3)循环,以下正确的是() A、三个表达式都不可省略 第32题,以下選项中合法的表达式是()。 第33题,合法的标识符() B、第一个字母可以为数字 C、第一个字母可以为下划线 D、最后一个字母必须为字母 第34題,以下可以定义为用户标识符的有()。 第35题,以下对C语言中的函数描述不正确的有() A、可以嵌套定义,不可以嵌套调用 B、不可以嵌套萣义可以嵌套调用 C、可以嵌套定义,也可以嵌套调用 D、嵌套定义和嵌套调用都不允许 第36题,以下用户标识符其中合法的是()。 第37题,以丅选项中不合法的字符常量是() 第38题,以下4个选项中,可以看作是一条语句的有() D、N-S流程图描述法 第41题,按现代风格设计的C程序中,main中对函数声明的信息与定义此函数时第一行的信息完全相同( ) 第42题,C程序中,当调用函数时由实参把值传递给形参,调用结束后洅由形参把值传回给实参。() 第44题,return后面括号里的表达式的值即是此函数的值( ) 第45题,用C语言可直接进行位运算和取地址等运算,因此C語言是一种低级语言( ) 第46题,复合语句是由多条语句组成的,因此它不是一条语句( ) 第47题,C语言采用解释方式将源程序转换为二进制嘚目标代码。( ) 第49题,C语言中feof函数用来判断即将读入的是否是文件结束标志,它可用于二进制文件但不能用于文本文件。() |
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。