C 语言是目前使用比较广泛的一种结构化高级程序设计语言,由于其具有高效、灵活、运算能力强等特点,特别适合嵌入式系统和底层操作系统程序的开发。 本书从计算机“存储程序”工作原理出发,以启发式教学方法,采用一问一答的形式,由简入繁、循序渐进地将每个知识点逐步展开,引导学生在深入理解知识点的同时,进行程序开发。每个知识点都配有丰富的实践例题。在语法上严格遵守ANSI C 标准。在程序设计方面强调模块化思想,特别注重知识点的分析和程序设计能力的训练,通过实践训练提高程序设计能力和知识点的综合运用能力。本书共分11 章,主要内容包括:C 语言入门、数据类型、运算符与表达式、选择结构、循环结构、函数、数组、预处理命令、指针、结构体与共用体、文件。 本书教法新颖、深入浅出、通俗易懂、逻辑性强,适合作为高等学校理工类学生学习C 语言的教材,也可作为初学者自学教材以及各类等级考试和社会培训机构C 语言课程的培训教材。
本教程从计算“存储程序”工作原理出发,以启发式教学方法,采用一问一答的形式,由简入繁、循序渐进地将每个知识点逐步展开,引导学生在深入理解知识点的同时,进行程序开发。
前?言C语言是目前比较流行的一种计算机程序设计基础语言,由于其具有高效、灵活、表达力与运算能力强等特点,普遍应用于底层操作系统和嵌入式系统的开发,例如Linux操作系统和智能手机、智能电器、智能机器人等。但由于其内容较多,语法严谨,尤其是指针类型的引入,用法比较抽象,难于理解,更加深了初学者的学习难度。因此,本书从计算机“存储程序”工作原理出发,强调程序开发以内存为中心,以启发式教学方法为主导,从初学者角度,把知识点转化为读者学习的具体问题,再通过进一步详细解答问题讲解知识点,一问一答,由简入繁,循序渐进地将每个知识点逐步展开,zui后形成一套比较完整的知识体系。本书在引导读者理解知识点的同时,更注重培养读者分析问题、解决问题的能力,激发读者自主编程的热情,提高学习兴趣。在程序设计方面强调模块化设计思想,引导读者对程序的设计按功能进行模块分解,分而治之,分工协作,并以“服务外包”思想解读模块之间的调用过程。教材中每个知识点都配有生动、丰富的实践例题,通过实践例题的训练提高读者程序设计开发能力和知识综合运用能力。 本书共11章,每章的开始部分都介绍一些基本概念和原理,让初学者知道本章内容适用于解决什么问题及在什么情况下使用。然后在后续各节中,采用一问一答的形式教会读者如何使用本章的知识点。第1章主要以问答的方式介绍了C语言的特点、C语言程序的开发步骤,通过讲解读者可了解C语言程序的结构和执行原理,开发出属于自己的第一个C语言程序。第2章介绍了基本数据类型和各种输入和输出函数。第3章介绍了各种运算符和表达式。第4章介绍了选择结构,讲解时注重与实际问题结合,选择贴近生活的实例,让读者理解各种选择结构如何实现对程序流程的控制。第5章介绍了循环结构,重点介绍了循环结构的运算特点及循环结构在程序开发中的运用,提高读者使用循环结构解决实际问题的能力。第6章是本书的重点之一,介绍了函数的定义、调用、返回和程序中变量的作用域和生命周期。强调程序开发模块化的设计原则,并通过“服务外包”思想,结合生动的实例,一步一步讲解函数的调用过程。使读者对函数的使用有更深入的理解,提高读者模块化的程序设计能力。第7章是本书的另一个重点,介绍了数组元素的存储和地址的分布特点,详细介绍了数组与循环结合对数据进行批处理的使用方法,同时结合实践例题讲解了一些实用的算法。第8章介绍了预处理命令。第9章是本书的难点指针,通过启发式提问,介绍了指针的工作原理和指针操作变量、指针操作数组、指针操作函数、指针操作字符串的使用过程。第10 章介绍了结构体、共用体与枚举的定义及它们在处理复杂问题时的使用方法。第11章介绍了文件操作的基本原理和步骤,详细讲解了文件读/写函数和文件读/写控制函数的使用。 学习C语言编程,学习语法是基础,学习解决问题的算法是关键。因此本书在讲授语法的同时还详细地介绍了一些实用的算法(如打擂算法、穷举算法、排序算法和开关控制算法等),并结合一些典型例题引导学生进行算法设计。同时也在算法设计过程中,深入理解C语言的语法知识。 本书由大连交通大学软件学院赵旭宝、大连海洋大学信息工程学院祝开艳主编。其中,第1~3章由祝开艳编写,第4~11 章由赵旭宝编写。本书是作者多年教学和培训成果的结晶,采用启发式教授方法,特别适合作为C语言初学者入门级教材。本书在编写过程中参考了大量的著作和教材,在此对其作者深表感谢。 由于作者水平有限,书中难免存在疏漏和不足之处,敬请广大读者不吝指正,不胜感谢。编者2018年10月
赵旭宝 2002.9-2005.7中国科学院沈阳自动化研究所 机械电子工程专业 2005.7-现在 大连交通大学软件学院祝开艳 2002.9-2005.6吉林大学通信学院 信号与信息处理专业 2007.9-2014.12 大连理工大学电信学部 信号与信息处理专业 2005.7-现在 大连海洋大学信息工程学院
目?录 第1章?C语言入门 ............1 1.1?C语言历史背景................1 1.2?一个简单的C语言程序....3 1.3?C语言程序的开发与运行步骤....6 1.4?如何学习C语言..............14 1.5?结构化程序设计方法简介........15小??结...............16习??题...............16第2章?数据类型 .............18 2.1?数据类型介绍................18 2.2?基本数据类型................19 2.3?数据类型的转换............31 2.4?数据的输入/输出...........33 2.5?单个字符的输入/输出...34 2.6?有格式数据的输入/输出...........35 2.7?字符串的输入/输出.......42小??结...............42习??题...............43第3章?运算符与表达式 .............47 3.1?运算符介绍...47 3.2?算术运算符和算术表达式........48 3.3?关系运算符和关系表达式........51 3.4?逻辑运算符和逻辑表达式........52 3.5?赋值运算符和赋值表达式........56 3.6?位运算符.......58 3.7?其他运算符...60 小??结...............62 习??题...............63 第4章?选择结构 ............. 68 4.1?选择结构概述.................68 4.2?简单if选择结构...............69 4.3?if else选择结构................70 4.4?if…else if…else选择结构...........72 4.5?选择结构的嵌套.............74 4.6?switch case多分支选择结构.......76 4.7?switch case嵌套结构.......79 4.8?选择结构在程序开发中的应用...................81 小??结...............83 习??题...............83 第5章?循环结构 ............. 89 5.1?循环结构概述.................89 5.2?while循环结构.................90 5.3?do while循环结构............94 5.4?for循环结构...96 5.5?break和continue关键字...99 5.6?各种循环结构嵌套.......101 5.7?循环结构在程序开发中的应用 ................104 小??结.............108 习??题.............108 第6章?函数 .................. 116 6.1?函数的结构...................116 6.2?函数声明与函数原型...127 6.3?C程序的基本结构.........128 6.4?函数的递归...................130 6.5?全局变量和局部变量...133 6.6?存储类别.....136 小??结.............140 习??题.............140第7章?数组 .................. 147 7.1?数组的引入...................147 7.2?一维数组的定义与使用...........148 7.3?二维数组的定义与使用...........158 7.4?字符数组的定义与使用...........165 7.5?数组在程序开发中的应用.......174 小??结.............176 习??题.............177 第8章?预处理命令 ....... 185 8.1?预处理命令的引入.......185 8.2?宏定义.........186 8.3?文件包含.....188 8.4?条件编译.....192 小??结.............195 习??题.............195 第9章?指针 .................. 198 9.1?内存地址的介绍...........198 9.2?指针的引入...................199 9.3?指向单个变量的指针变量.......200 9.4?指针与数组元素的关系...........205 9.5?指向一维数组的指针变量.......213 9.6?指向字符串的指针变量...........216 9.7? 指针数组....221 9.8?指针与函数...................226 9.9?指针在程序开发中的应用.......228 小??结.............230 习??题.............231 第10章?结构体与共用体 ......... 240 10.1?结构体类型的引入.....240 10.2?结构体类型的定义.....241 10.3?指向结构体的指针变量.........249 10.4?结构体在程序开发中的应用...................252 10.5?共用体类型.................259 10.6?枚举类型...262 10.7?typedef类型重命名......265 小??结.............266 习??题.............266 第11章?文件 ................. 274 11.1?文件介绍...274 11.2?文件顺序读/写操作....276 11.3?文件读/写控制............285 11.4?文件在程序开发中的应用.....287 小??结.............289 习??题.............290 附录A?标准ASCII表 ... 295 附录B?运算符表 .......... 296 附录C?习题参考答案 .. 297 参考文献 ...... 307