C语言程序设计与实践 第2版
作者 : 凌云 谢满德 陈志贤 吴海燕 编著
出版日期 : 2017-02-10
ISBN : 978-7-111-55849-1
适用人群 : 理工科专业本科生
定价 : 39.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 343
开本 : 16
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书的定位是计算机相关专业的专业基础课和信息类工科专业公共基础课,同时为了照顾不同学校学时数的不同,力求在结构上就具有较好的伸缩性。本书从结构上将分成四大部分: 第一部分为C语言的基础语法介绍。包括第1到11章。第二部分为项目实训指导部分。第三部分初涉ACM/ICPC。第四部分为编程风格与程序调试介绍。帮助学生形成良好的程序设计风格。提高他们的实际动手调试能力。

图书特色

本书以程序设计为主线,在详细阐述程序设计基本概念、原理和方法的基础上,结合实践教学和学科竞赛的实际情况,通过经典实例讲解和实训,使学生掌握利用C语言进行结构化程序设计的技术和方法。注重培养良好的编程风格,掌握常见的算法思路,真正提高学生运用C语言编程以解决实际问题的综合能力,为后续课程实践环节的教学打下良好基础。
本书特色
实例丰富。在介绍理论知识的同时,书中还给出了大量的实例和实训内容,以提高学生的动手实践能力。
重点突出。针对C语言语法庞杂、有些语句可以相互替代、有些语法不常使用的情况,本书重点介绍了基本的、常用的C语言语法知识,使学生容易理解和掌握。
融会贯通。着重介绍程序设计语言的共性,培养学生自学其他程序设计语言的能力。

图书前言

C语言程序设计是一门理论与工程实践密切相关的专业基础课程,在计算机学科教学中具有十分重要的地位。大力加强该课程的建设,提高该课程的教学质量,有利于教学改革和教育创新,有利于创新人才的培养。通过本课程的学习,学生应培养良好的编程风格,掌握常见的算法思路,真正提高运用C语言编写程序解决实际问题的综合能力,为后续课程的实践环节打好基础。
目前国内关于C语言的教材较多,有些教材语法知识介绍细致,较适合作为非专业的等级考试类教学用书;有些教材起点较高,内容深奥,不适于初学者。为了帮助广大学生更好地掌握C语言编程技术,我们组织C语言程序设计课程组的教师进行了深入的讨论和研究,并针对学生学科竞赛和课时压缩的背景,将该课程的建设与其他信息类专业的课程体系改革相结合,发挥我们在计算机和电子商务、信息管理等专业上的办学优势,编写了《C语言程序设计与实践》一书。本书以程序设计为主线,采用了渐进式的体系结构,在详细阐述程序设计基本概念、原理和方法的基础上,结合实践教学和学科竞赛的实际情况,通过大量经典实例讲解和实训,帮助学生掌握利用C语言进行结构化程序设计的技术和方法,提高他们的实践动手能力和培养创新协作精神。
相对第1版而言,第2版主要做了以下修改:
1)根据这几年用书单位的反馈,对一些章节的安排和组织进行了调整。
2)根据课程组近几年实施开放视频课程的经验,引入了以一个实例贯穿整个课程的授课策略。实例由简单到复杂到优化,循序渐进地演化,通过实际应用场景的不断变化和实例功能的不断扩展,依次引入C语言的各个语法元素,从工程的角度阐述各个C语言概念。每个语法的引入,都通过实例的实际环境无缝连接,并采用对比等教学手段,加强学生对知识点的理解和运用,特别是加深学生对各个知识点使用场合的理解。课程学完后,一个完整的程序也完成了。这种有一定代码量的实例,能规避通常教学中由小例子导致的“只见树木不见森林”“一叶障目不见泰山”的缺陷,有利于培养学生的工程实践能力。
3)更新了许多教学示例,重写了第12章和第13章。在第13章中,引入了一些有趣的游戏实例和加解密、权限管理等工程概念,以培养学生的工程实践能力。
本书分为两部分。第一部分(第1~11章)主要介绍C语言的基础语法知识,这部分内容按C语言的知识点循序渐进地介绍,同时针对C语言中的重点和难点,例如指针部分,精心设计了丰富的实例,用了大量的篇幅从不同方面对其进行讲解,旨在帮助读者理解并掌握这些重点和难点。第二部分(第12~13章)为项目实训和常用算法指导,通过项目开发全过程的全方位指导,从需求分析、算法设计到程序编写和过程调试,以项目实训的形式引导和帮助学生解决实际问题,提高学生解决具体问题的能力,并对程序设计竞赛中常见的一些算法及其应用进行了介绍。在教学过程中,教师应注重融入良好编程风格和程序调试相关知识的介绍,本书网站及华章网站上将提供相应的教学素材,供教师参考。
C语言程序设计是一门强调实践练习的课程,因此教师对本书的教学组织可依据两条主脉络进行:一条是从字、词、数据、表达式、语句到函数、数组、指针,这也是语法范畴构成的基本脉络;另一条则以程序功能(即以组织数据和组织程序)为基本脉络。安排课程内容时应注意以下几点:①介绍程序设计语言语法时要突出重点。C语言语法比较庞杂,有些语句可以相互替代,有些语法不常使用。课程中要重点介绍基本的、常用的语法,不要面面俱到。②注重程序设计语言的共性。计算机的发展日新月异,大学期间不可能介绍所有的计算机语言,所以在本课程的学习过程中,教师应该介绍计算机程序设计语言共性的东西,使学生具有自学其他程序设计语言的能力。③由于课时的限制,课程不能安排太多的时间专门讲授程序设计理论。在教学过程中,教师应以程序设计为主线,结合教材中的实例分析,将程序设计的一般方法和技术传授给学生。
本书由浅入深地介绍了程序设计的技术与技巧,内容全面、自成一体,对启发、提高读者的程序设计能力很有裨益,适合不同层次的读者学习。本书可作为计算机类专业的本科或专科教材,也可以作为信息类或其他相关专业的选修教材,还可以作为其他一些课程的辅助读物,如数据结构、编译器设计、操作系统、计算机图形学、嵌入式系统及其他要用C语言进行项目设计的课程。
本书的作者均为浙江工商大学承担程序设计、数据结构等课程的骨干教师。凌云负责全书的策划、组织和指导,谢满德负责编写第1、2、12、13章,并负责对全书进行统稿和校对,陈志贤负责编写第6、7、8、9、10、11章,吴海燕负责编写第3、4、5章。
本书及其配套实验用书《C语言程序设计与实践实验指导》已经入选“十二五”普通高等教育本科国家级规划教材,也是浙江省精品课程“高级语言程序设计”的教学用书。除本书外,我们还提供了多媒体电子教案、习题与实验指导,以及教学网站和教学资源库等开放资源。读者可以上网共享我们的网络资源,网址为:e-lesson.zjgsu.edu.cn。
在本书的编写过程中,我们参考了部分图书资料和网站资料,在此向文献的原作者表示衷心的感谢。由于作者水平有限,书中恐有不足之处,恳请业界同仁及读者朋友提出宝贵意见和真诚的批评。

作者
2016年11月

上架指导

计算机\程序设计

封底文字

本书以程序设计为主线,在详细阐述程序设计基本概念、原理和方法的基础上,结合实践教学和学科竞赛的实际情况,通过经典实例讲解和实训,使学生掌握利用C语言进行结构化程序设计的技术和方法。注重培养良好的编程风格,掌握常见的算法思路,真正提高学生运用C语言编程以解决实际问题的综合能力,为后续课程实践环节的教学打下良好基础。
本书特色
实例丰富。在介绍理论知识的同时,书中还给出了大量的实例和实训内容,以提高学生的动手实践能力。
重点突出。针对C语言语法庞杂、有些语句可以相互替代、有些语法不常使用的情况,本书重点介绍了基本的、常用的C语言语法知识,使学生容易理解和掌握。
融会贯通。着重介绍程序设计语言的共性,培养学生自学其他程序设计语言的能力。

图书目录

前言
教学建议
第1章 C语言与程序设计概述 1
1.1 初见C语言程序 1
1.2 计算机与程序设计 2
1.2.1 指令与程序 2
1.2.2 程序与程序设计 3
1.2.3 程序设计和程序设计语言 3
1.2.4 程序设计过程 4
1.3 C语言学习与自然语言学习的关系 5
1.4 C语言的发展历史、现状与特点 6
1.4.1 C语言的发展历史和现状 6
1.4.2 C语言的特点 7
习题 7
第2章 示例驱动的C语言语法元素 8
2.1 变量与表达式 8
2.2 分支语句 9
2.2.1 if语句 9
2.2.2 switch语句 11
2.3 循环语句 12
2.3.1 while循环语句 12
2.3.2 for循环语句 12
2.4 符号常量 13
2.5 输入/输出 14
2.6 数组 15
2.7 函数 15
2.8 算法 17
2.8.1 算法概念 17
2.8.2 流程图与算法描述 18
习题 19
第3章 基本数据类型和表达式 20
3.1 基本语法单位 20
3.1.1 基本符号 20
3.1.2 关键字 20
3.1.3 标识符 20
3.2 数据类型 21
3.3 常量与变量 22
3.3.1 常量 22
3.3.2 变量 25
3.3.3 变量的初始化 27
3.4 表达式和运算符 28
3.4.1 算术运算符 28
3.4.2 赋值运算符 30
3.4.3 关系运算符 31
3.4.4 逻辑运算符 33
3.4.5 位运算符 35
3.4.6 逗号运算符 38
3.4.7 条件运算符 39
3.4.8 运算符的优先级和结合性 39
3.5 各类数值型数据间的混合运算 41
习题 41
第4章 输入/输出语句 43
4.1 putchar函数 43
4.2 printf函数 44
4.2.1 printf函数的形式 44
4.2.2 格式说明字符 45
4.3 getchar函数 51
4.4 scanf函数 51
4.4.1 一般形式 51
4.4.2 格式说明 52
4.4.3 执行scanf函数过程中应注意的问题 53
4.5 程序示例 55
习题 56
第5章 C语言程序结构 58
5.1 C语句 58
5.2 程序设计基础 59
5.3 结构化程序设计的三种基本结构 60
5.3.1 顺序结构 60
5.3.2 选择结构 60
5.3.3 循环结构 61
5.4 if分支语句 62
5.4.1 第一种if语句形式 62
5.4.2 第二种if语句形式 62
5.4.3 第三种if语句形式 63
5.4.4 if语句的嵌套 65
5.4.5 程序示例 67
5.5 switch分支语句 68
5.6 while循环语句 71
5.7 do…while循环语句 73
5.8 for循环语句 75
5.9 break语句和continue语句 79
5.9.1 break语句 80
5.9.2 continue语句 80
5.10 多重循环的嵌套 81
5.11 程序示例 83
习题 85
第6章 数组 88
6.1 一维数组 88
6.1.1 一维数组的定义 88
6.1.2 一维数组元素的引用 89
6.1.3 一维数组元素的初始化 89
6.2 二维数组 96
6.2.1 双下标变量 97
6.2.2 二维数组及其定义 97
6.2.3 二维数组的初始化 98
6.2.4 二维数组应用示例 99
6.3 综合应用示例 100
6.4 字符数组 103
6.4.1 字符串和字符串结束标志 105
6.4.2 字符数组的输入/输出 105
6.4.3 字符串函数 106
6.4.4 二维的字符数组 110
6.4.5 字符数组应用示例 111
习题 116
第7章 函数 118
7.1 函数的定义 119
7.2 函数的一般调用 121
7.2.1 函数调用的形式 121
7.2.2 形式参数和实际参数 121
7.2.3 函数的返回值 124
7.2.4 函数调用的方式 125
7.2.5 主调函数和被调函数的相对位置关系 126
7.2.6 函数调用时值的单向传递性 128
7.2.7 函数调用示例 128
7.3 函数的嵌套调用 130
7.4 递归调用 133
7.4.1 函数的递归调用 133
7.4.2 递归调用应用示例 134
7.5 用数组作为函数参数 137
7.5.1 用数组元素作为函数实参 137
7.5.2 用数组名作为函数参数 138
7.5.3 用多维数组作为函数参数 139
7.6 变量的作用域——局部变量和全局变量 140
7.6.1 局部变量 140
7.6.2 全局变量 142
7.7 变量的存储类别和生存期 144
7.7.1 变量的存储类别 144
7.7.2 动态变量 144
7.7.3 静态变量 148
7.7.4 外部变量 149
7.8 内部函数和外部函数 153
7.8.1 内部函数 153
7.8.2 外部函数 153
习题 154
第8章 编译预处理 159
8.1 宏定义 159
8.1.1 不带参数的宏定义 159
8.1.2 带参数的宏定义 161
8.2 文件包含 165
8.3 条件编译 167
8.3.1 条件编译语句1 167
8.3.2 条件编译语句2 168
8.3.3 条件编译语句3 169
习题 170
第9章 指针 175
9.1 地址和指针的概念 175
9.2 指针变量和地址运算符 175
9.2.1 指针变量的定义 175
9.2.2 指针变量的使用 176
9.3 指针和数组 177
9.3.1 通过指针存取数组元素 177
9.3.2 字符串和指针 179
9.4 指针和函数 180
9.4.1 用指针作为函数的参数 180
9.4.2 用指针作为函数的返回值 182
9.4.3 指向函数的指针 184
9.5 多级指针 187
9.5.1 多级指针的概念和使用 187
9.5.2 多级指针和多级数组 188
9.5.3 命令行参数 190
9.6 指针和动态存储管理 191
9.6.1 概述 191
9.6.2 malloc函数和free函数 192
9.6.3 动态存储管理的应用 192
9.7 指针和指针运算小结 195
习题 196
第10章 结构与联合 199
10.1 结构体类型变量的定义和引用 199
10.1.1 结构体类型变量的定义 201
10.1.2 结构体类型变量的引用 201
10.1.3 结构体类型变量的初始化 201
10.2 结构体数组的定义和引用 203
10.3 结构体指针的定义和引用 204
10.3.1 指向结构体类型变量的指针的使用 204
10.3.2 指向结构体类型数组的指针的使用 205
10.4 链表的定义和操作 208
10.4.1 链表 208
10.4.2 链表的建立 209
10.4.3 输出链表元素 211
10.4.4 删除链表元素 211
10.4.5 插入链表元素 212
10.4.6 查询链表元素 213
10.5 联合 213
10.5.1 联合的定义 213
10.5.2 联合成员的引用 215
10.5.3 应用示例 216
10.5.4 数组、结构和联合类型的比较 217
10.6 枚举类型 217
10.7 用typedef定义类型名 219
习题 220
第11章 文件操作 223
11.1 文件的基本概念 223
11.1.1 概述 223
11.1.2 文件分类 223
11.1.3 缓冲文件系统和非缓冲文件系统 223
11.1.4 流式文件 224
11.2 标准文件 224
11.3 文件类型指针 225
11.4 文件的打开与关闭 225
11.4.1 文件的打开 225
11.4.2 文件的关闭 226
11.5 文件的顺序读写 227
11.6 文件顺序读写的常用函数 227
11.7 文件顺序读写的应用示例 234
11.8 文件的随机读写 235
11.8.1 文件的定位 235
11.8.2 文件操作的出错检测 238
11.9 非缓冲文件系统 238
习题 241
第12章 综合实训 243
12.1 综合实训1:俄罗斯方块游戏 243
12.1.1 问题描述 243
12.1.2 问题分析 243
12.1.3 数据结构分析 244
12.1.4 程序执行流程和设计分析 246
12.1.5 程序运行和测试 251
12.2 综合实训2:五子棋游戏 252
12.2.1 问题描述 252
12.2.2 问题分析 252
12.2.3 数据结构分析 252
12.2.4 程序执行流程和设计分析 254
12.2.5 程序运行和测试 258
12.3 综合实训3:员工管理系统 258
12.3.1 问题描述 258
12.3.2 问题分析 259
12.3.3 数据结构分析 259
12.3.4 程序执行流程和设计分析 260
12.3.5 程序运行和测试 262
12.4 综合实训设计中的分析与讨论 263
第13章 初涉ACM/ICPC 266
13.1 ACM/ICPC概述 266
13.2 迷宫问题与深度优先搜索 267
13.2.1 问题描述 267
13.2.2 问题分析与求解 267
13.2.3 问题小结 269
13.3 斐波那契数列 269
13.3.1 问题描述 269
13.3.2 问题分析与求解 269
13.3.3 问题小结 270
13.4 8枚银币 271
13.4.1 问题描述 271
13.4.2 问题分析与求解 271
13.4.3 问题小结 273
13.5 筛选求质数 273
13.5.1 问题描述 273
13.5.2 问题分析与求解 273
13.5.3 问题小结 274
13.6 超长整数运算(大数运算) 275
13.6.1 问题描述 275
13.6.2 问题分析与求解 275
13.6.3 问题小结 276
13.7 经典01背包问题与动态规划算法 276
13.7.1 问题描述 276
13.7.2 问题分析与求解 276
13.7.3 问题小结 278
13.8 二分图的最大匹配、完美匹配和匈牙利算法 278
13.8.1 问题描述 278
13.8.2 问题分析与求解 278
13.8.3 问题小结 281
13.9 中序式转后序式(前序式) 281
13.9.1 问题描述 281
13.9.2 问题分析与求解 281
13.9.3 问题小结 283
13.10 一些提供练习服务的网站 283
参考文献 285

教学资源推荐
作者: 郑阿奇 梁敬东
作者: 刘艺 罗兵 周安栋
作者: 苏俊
作者: 朱鸣华,刘旭,麟杨微,罗晓芳,李慧,孙大为,赵晶