计算机类教材 > 算法与程序设计
C语言程序设计(第二版)
书号:9787113264932 套系名称:普通高等教育“十三五”规划教材
作者:肖捷 侯家利 敖欣 出版日期:2020-08-01
定价:58.00 页码 / 开本:356 /16
策划编辑:唐旭 责任编辑:刘丽丽 徐盼欣
适用专业:计算机教材 适用层次:高职高专
最新印刷时间:2023-02-17
资源下载
教学课件(暂无)
教学素材(暂无)
习题答案(暂无)
教学案例(暂无)
教学设计(暂无)
教学视频(暂无)
内容简介
前言
目录
作者介绍
图书特色
C 语言是许多普通高等院校广泛选用的首门编程语言,培养学生基础编程能力是其基本目标。 本书包含程序设计和语言知识两条线索,程序设计为主线,基于“阶梯递进”模式(案例分析→模仿练习→独立编程),以编程应用为驱动,通过案例和问题引入内容,重点讲解程序设计思维和方法;同时结合语言知识辅线,穿插讲解语言知识。为配合本书学习,编者还编写了与本书配套的辅导用书《C 语言程序设计实训教程与水平考试指导》(第二版),供读者参考使用。通过对本书的学习,读者能较全面掌握C语言的语言知识以及C 程序设计的基本方法和技巧,培养学生基础编程能力。 本书适合作为普通高等院校C 语言程序设计课程的教学用书,也可作为从事计算机应用的科技人员的参考用书及培训教材。
程序设计是普通高等院校重要的计算机基础课程,它以编程语言为平台,介绍程序设计的思想和方法。学生通过该课程的学习,不仅可以掌握程序设计语言的知识,更重要的是在实践中逐步掌握程序设计的思想和方法,培养求解问题和应用程序语言的能力。因此,这是一门以培养学生程序设计基本方法和技能为目标的程序设计基础课程。目前,C语言已被许多高等院校列为程序设计课程的首选语言。 C语言程序设计是一门实践性很强的课程,学生必须通过大量的编程训练,在实践中掌握程序设计语言,培养程序设计的基本能力,并逐步理解和掌握程序设计的思想和方法。因此,培养学生的实际编程能力是课程教学的重点,教材的组织必须满足课程教学的要求。 目前,介绍C语言的教材很多,但在多年的教学实践中我们发现,比较适合程序设计入门课程教学的教材并不多。现有教材一般围绕语言本身的体系展开内容,以讲解语言知识特别是语法知识为主线,辅以一些编程技巧的介绍,不利于培养学生的程序设计能力和语言应用能力。当然,C语言的案例教材也不少,但在案例分析时,问题分析和算法设计描述不够,主要突出程序代码和代码解析两方面,因此,也不利于培养学生分析问题的逻辑思维能力。 本书较好地弥补了传统教材的不足,在组织结构上包含程序设计和语言知识两条线索,以程序设计为主线,基于“阶梯递进”模式(案例分析→模仿练习→独立编程),以编程应用为驱动,通过案例和问题引入内容,重点讲解程序设计思维和方法;同时结合语言知识辅线,穿插讲解语言知识。“案例分析”基于问题求解的基本过程,从“问题分析—算法设计—程序清单—知识小结”四方面描述,使得读者更容易理解和掌握程序设计的思想和方法。“模仿练习”是针对本节中的相关概念和“案例分析”,在每节的模仿练习中给出一些难度较低的相关问题,学生可以模仿案例完成,以加深理解,提高兴趣。“独立编程”是“阶梯递进”模式的最后环节,在每章习题中给出一些难度稍大的编程问题,学生可以在前两个环节的基础上独立完成并上机调试通过。因此,本书比较适合作为程序设计入门课程教学的教材,有利于培养学生的程序设计能力和语言应用能力。 在教材的结构设计上,本书注重编程实践,让学生从第1周起就练习编程,使程序设计主线贯穿始终。前两章简单介绍一些背景知识和利用计算机求解问题的过程,然后从案例出发,介绍顺序、分支和循环三种控制结构的最简单使用形式及函数的简单使用,使学生对C程序设计有个总体认识,并学习编写简单程序,培养学习兴趣。第3章介绍C语言的基本数据类型和表达式,为学习后续章节做准备。从第4章开始,逐步深入地讲解程序设计的思想和方法,并说明如何应用语言知识解决实际问题。 本书共有12章正文和附录,分成4个部分。第1部分:简单程序设计,包括第1~3章,学习编写简单程序,培养学习兴趣。第1章介绍程序与程序设计语言的知识以及利用计算机求解问题的过程;第2章从实例出发,简单介绍顺序、分支和循环三种控制结构的最简单使用形式及函数的简单使用,以及在实例程序中用到的语言知识,使学生对C语言有一个总体的了解;第3章介绍数据类型和表达式等基本语言知识,为后续章节做准备。第2部分:控制结构程序设计,包括第4~6章,基于简单数据类型,学习编写三种控制结构的程序。通过大量的案例分析,进一步介绍分支结构、循环结构以及函数结构的程序设计思想和方法,侧重基本知识和基本编程能力。第3部分:基于构造数据类型的程序设计,包括第7~12章。第7章数组,通过大量的案例分析,介绍一维数组、二维数组和字符串的基础知识和基本编程;第8章指针,通过大量的案例分析,介绍指针的基础知识和基本编程;第9章结构体,通过大量的案例分析,介绍结构体的基础知识和基本编程;第10章链表,通过案例分析,介绍链表的基础知识和基本编程;第11章共用体与枚举,通过案例分析,介绍共用体与枚举的基础知识和基本编程;第12章文件,通过案例分析,介绍文件的基础知识和基本编程。另外,本书还设计了一个综合程序设计案例贯穿于结构体、链表、文件各章之中,详细描述了结构化程序设计方法的综合应用,更能培养学生的综合编程能力。书的最后将编程中常用的一些字符、函数和错误等列于附录以备读者速查。附录A为常用字符与ASCII代码对照表;附录B为C库函数,分类列出ANSI C的常用标准库函数;附录C为常见错误分析,列出常见的编译错误、连接错误和运行错误,分析出错原因并给出相应的解决方法;附录D为综合案例程序代码,给出了不同数据结构下的程序源代码。 根据教学需要,结合读者反馈意见,本书从两方面进行了修订:一方面,对书中案例从“问题分析—算法设计—程序清单—知识小结”四方面描述,使读者更容易理解和掌握程序设计的思想和方法,使用流程图描述算法,图文结合使版面更加清晰;另一方面,本版增加了一个贯穿全书的综合程序设计案例,详细描述了结构化程序设计方法的综合应用,以更好地培养学生的综合编程能力。改版后的教材更加完善,更便于学习。 为配合本书学习,编者还编写了与本书配套的辅导用书《C语言程序设计实训教程与水平考试指导》(第二版)供读者参考使用。 本书由肖捷、侯家利、敖欣主编并统稿,赵维佺、冯能山、王宁、谢伟鹏、彭富春、刘立平和黄瑜岳共同参加了编写工作。东莞理工学院李勇教授和徐钦桂教授认真、仔细地审阅了全书,并提出了许多宝贵意见,在此表示衷心感谢。另外,在本书编写、修订过程中,许多老师和同学都提出了宝贵的意见和建议,在此一并表示感谢。 特别说明:考虑到综合案例的程序源代码多,出现在教材中会占相当大的篇幅,因此在教材设计上将综合案例程序代码连同其他资源一起将以电子版形式提供,读者可以通过作者电话(13549379596)或E-mail(398948928@qq.com)与作者联系,获取教材的相关电子版资源。 由于编者水平有限,加之时间仓促,书中疏漏和不足之处在所难免,敬请读者批评指正。 编者 2020年2月
第1 章 C 语言程序设计概述·············· 1 1.1 程序与程序语言............................1 1.1.1 程序的基本概念........................... 1 1.1.2 程序设计语言............................... 1 1.2 算法及其描述................................3 1.2.1 算法的概念................................... 3 1.2.2 算法的描述方法........................... 3 1.3 C 语言的发展与特点.....................6 1.3.1 C 语言的发展概况....................... 6 1.3.2 C 语言的特点............................... 6 1.4 简单C 语言程序............................7 1.4.1 由main()函数构成的简单程序... 7 1.4.2 由main()函数调用另一个函数 构成的简单程序........................... 7 1.4.3 C 语言程序的基本结构............... 8 1.5 C 语言简介.....................................9 1.5.1 C 语言的功能............................... 9 1.5.2 C 语言字符集、标识符 与关键字..................................... 10 1.5.3 C 语言的主要语法单位............. 11 1.5.4 C 语言程序的上机步骤............. 13 1.6 实现问题求解的过程...................14 1.6.1 问题分析与算法设计................. 14 1.6.2 编辑程序..................................... 15 1.6.3 编译连接..................................... 15 1.6.4 运行与调试................................. 15 习题......................................................15 第2 章 用C 语言编写程序··············· 18 2.1 在屏幕上显示信息.......................18 2.1.1 案例分析..................................... 18 2.1.2 模仿练习..................................... 19 2.2 求三角形的面积..........................19 2.2.1 案例分析..................................... 19 2.2.2 常量、变量和数据类型............. 20 2.2.3 算术运算与赋值运算................. 21 2.2.4 格式化输出函数printf() 与格式化输入函数scanf()......... 22 2.2.5 模仿练习..................................... 23 2.3 计算分段函数............................. 23 2.3.1 案例分析..................................... 23 2.3.2 关系运算..................................... 25 2.3.3 if...else 语句................................ 25 2.3.4 常用数学库函数......................... 26 2.3.5 模仿练习..................................... 28 2.4 输出华氏—摄氏温度转换表....... 29 2.4.1 案例分析..................................... 29 2.4.2 for 语句....................................... 30 2.4.3 指定次数的循环结构程序 设计............................................. 31 2.4.4 模仿练习..................................... 35 习题..................................................... 35 第3 章 C 语言的基本数据类型 与表达式······························ 39 3.1 C 语言的基本数据类型............... 39 3.1.1 数据类型概述............................. 39 3.1.2 整数类型..................................... 39 3.1.3 实数类型..................................... 40 3.1.4 字符类型..................................... 41 3.2 常量与变量................................. 42 3.2.1 常量与符号常量......................... 42 3.2.2 变量与变量定义......................... 43 3.3 运算符与表达式.......................... 44 3.3.1 算术运算符与算术表达式......... 44 3.3.2 赋值运算符与赋值表达式......... 46 3.3.3 逗号运算符与逗号表达式......... 47 3.3.4 条件运算符与条件表达式......... 47 3.3.5 其他运算符................................. 48 3.4 类型转换......................................49 3.4.1 自动类型转换............................. 49 3.4.2 赋值转换..................................... 50 3.4.3 强制类型转换............................. 50 习题......................................................51 第4 章 分支结构······························· 55 4.1 统计一批字符中各类字符的 个数.............................................55 4.1.1 程序解析..................................... 55 4.1.2 字符类型..................................... 57 4.1.3 字符型数据的输入与输出......... 57 4.1.4 逻辑运算..................................... 59 4.1.5 多分支结构和else...if 语句....... 61 4.1.6 模仿练习..................................... 62 4.2 查询我国一线城市的行政区号.....63 4.2.1 程序解析..................................... 63 4.2.2 switch 语句.................................. 64 4.2.3 嵌套if 语句................................ 68 4.2.4 模仿练习..................................... 70 习题......................................................70 第5 章 循环结构······························· 75 5.1 while 语句....................................75 5.1.1 引例............................................. 75 5.1.2 用while 语句编程...................... 77 5.1.3 模仿练习..................................... 78 5.2 do...while 语句..............................78 5.2.1 引例............................................. 78 5.2.2 用do...while 语句编程............... 80 5.2.3 再析while 和do...while ............. 81 5.2.4 模仿练习..................................... 81 5.3 三种循环语句的比较...................81 5.3.1 进一步讨论for 语句.................. 81 5.3.2 循环语句的比较与选择............. 84 5.4 break 语句、continue 语句 和goto 语句................................. 85 5.4.1 break 语句................................... 85 5.4.2 continue 语句.............................. 87 5.4.3 goto 语句..................................... 89 5.4.4 模仿练习..................................... 90 5.5 循环嵌套..................................... 90 5.5.1 求1!+2!+…+10!的值................. 90 5.5.2 循环嵌套..................................... 91 5.5.3 模仿练习..................................... 92 5.6 循环结构程序设计...................... 92 5.6.1 程序举例..................................... 92 5.6.2 模仿练习..................................... 98 习题..................................................... 98 第6 章 函数与编译预处理············· 105 6.1 模块化程序设计与函数............ 105 6.1.1 模块化程序设计方法............... 105 6.1.2 案例:圆柱体积的计算问题... 106 6.1.3 C 语言中的模块与函数........... 107 6.1.4 模仿练习................................... 107 6.2 函数的定义与调用.................... 107 6.2.1 标准库函数............................... 107 6.2.2 用户自定义函数....................... 108 6.2.3 函数结构程序设计....................111 6.2.4 模仿练习................................... 119 6.3 递归函数................................... 119 6.3.1 递归函数基本概念................... 119 6.3.2 递归函数程序设计................... 120 6.3.3 模仿练习................................... 125 6.4 变量作用域与存储方式............ 125 6.4.1 变量的作用域........................... 125 6.4.2 变量的存储方式....................... 128 6.4.3 模仿练习................................... 130 6.5 编译预处理............................... 130 6.5.1 宏定义....................................... 131 6.5.2 文件包含................................... 133 6.5.3 条件编译................................... 134 6.5.4 模仿练习................................... 136 6.6 综合案例——简单“计算器” 程序...........................................136 习题....................................................138 第7 章 数组···································· 145 7.1 一维数组....................................145 7.1.1 引例........................................... 145 7.1.2 一维数组的定义与引用........... 147 7.1.3 一维数组的存储结构 与初始化................................... 148 7.1.4 一维数组程序设计................... 149 7.1.5 模仿练习................................... 154 7.2 二维数组....................................155 7.2.1 引例........................................... 155 7.2.2 二维数组的定义与引用........... 156 7.2.3 二维数组的存储结构 与初始化................................... 158 7.2.4 二维数组程序设计................... 159 7.2.5 模仿练习................................... 166 7.3 字符数组与字符串.....................166 7.3.1 引例........................................... 166 7.3.2 字符数组的定义与初始化....... 167 7.3.3 字符串的概念、存储与输入/ 输出........................................... 167 7.3.4 字符数组程序设计................... 169 7.3.5 模仿练习................................... 175 习题....................................................175 第8 章 指针···································· 180 8.1 指针与指针变量........................180 8.1.1 引例........................................... 180 8.1.2 地址与指针............................... 181 8.1.3 指针变量的定义与初始化....... 182 8.1.4 指针运算................................... 183 8.1.5 模仿练习................................... 185 8.2 指针与函数................................186 8.2.1 引例........................................... 186 8.2.2 指针作为函数参数................... 187 8.2.3 指针作为函数返回值............... 190 8.2.4 指向函数的指针....................... 190 8.2.5 模仿练习................................... 193 8.3 指针与数组............................... 193 8.3.1 指向一维数组的指针............... 193 8.3.2 指向二维数组的指针............... 199 8.3.3 模仿练习................................... 203 8.4 指针与字符串........................... 204 8.4.1 引例........................................... 204 8.4.2 字符串与字符指针................... 205 8.4.3 字符串处理函数....................... 209 8.4.4 模仿练习................................... 213 8.5 指针数组与二级指针................ 213 8.5.1 指针数组的概念....................... 213 8.5.2 指针数组的应用....................... 215 8.5.3 二级指针................................... 216 8.5.4 模仿练习................................... 218 习题................................................... 218 第9 章 结构体································ 225 9.1 结构体类型与结构体类型 变量.......................................... 225 9.1.1 引例........................................... 225 9.1.2 结构体的概念与定义............... 228 9.1.3 结构体变量............................... 229 9.1.4 模仿练习................................... 234 9.2 结构体数组............................... 234 9.2.1 引例........................................... 235 9.2.2 结构体数组的操作................... 237 9.2.3 模仿练习................................... 238 9.3 结构体指针............................... 238 9.3.1 指向结构体变量的指针........... 238 9.3.2 指向结构体数组元素的指针... 240 9.3.3 结构体指针作函数参数........... 240 9.3.4 模仿练习................................... 242 9.4 结构体综合程序设计................ 242 习题....................................................250 第10 章 链表·································· 257 10.1 链表概述..................................257 10.2 静态链表..................................258 10.2.1 静态链表的建立与输出......... 259 10.2.2 模仿练习................................. 260 10.3 动态链表..................................260 10.3.1 动态存储分配函数................. 260 10.3.2 动态链表的基本操作............. 263 10.3.3 模仿练习................................. 271 10.4 链表综合程序设计...................271 习题....................................................279 第11 章 共用体与枚举··················· 285 11.1 共用体......................................285 11.1.1 共用体类型的定义................. 285 11.1.2 共用体变量的定义................. 286 11.1.3 共用体变量的引用................. 287 11.1.4 共用体应用举例..................... 288 11.1.5 模仿练习................................. 290 11.2 枚举类型..................................291 11.2.1 枚举类型的定义..................... 291 11.2.2 枚举变量的定义..................... 291 11.2.3 枚举变量的引用..................... 292 11.2.4 枚举应用举例......................... 293 11.2.5 模仿练习................................. 295 习题....................................................296 第12 章 文件·································· 301 12.1 文件概述................................. 301 12.1.1 文件的基本概念..................... 301 12.1.2 数据文件的存储形式............. 301 12.1.3 标准文件与非标准文件......... 302 12.1.4 文件存取方式......................... 303 12.2 标准文件操作.......................... 303 12.2.1 文件结构与文件类型指针..... 303 12.2.2 文件的打开与关闭................. 305 12.2.3 文件顺序读写操作................. 307 12.2.4 文件随机读写操作................. 314 12.2.5 其他相关函数......................... 318 12.2.6 模仿练习................................. 319 12.3 非标准文件操作...................... 319 12.3.1 建立非标准文件..................... 320 12.3.2 非标准文件打开与关闭......... 320 12.3.3 非标准文件读写操作............. 321 12.3.4 模仿练习................................. 324 12.4 文件综合程序设计.................. 324 习题................................................... 334 附录A 常用字符与ASCII 码 对照表································· 340 附录B C 库函数····························· 341 附录C 常见错误分析····················· 344 附录D 综合案例程序代码············· 348
肖捷,侯家利,敖欣,东莞理工学院
本书包含程序设计和语言知识两条线索,程序设计为主线,基于“阶梯递进”模 式(案例分析→模仿练习→独立编程),以编程应用为驱动,通过案例和问题引入内 容,重点讲解程序设计思维和方法;同时结合语言知识辅线,穿插讲解语言知识。为 配合本书学习,编者还编写了与本书配套的辅导用书《C 语言程序设计实训教程与水 平考试指导》(第二版),供读者参考使用。通