图书简介:
目 录
前 言 - 1 -
第1章 C语言与程序设计 1
1.1 计算机语言概述 1
1.1.1 计算机语言分类 1
1.1.2 高级语言分类 3
1.1.3 C语言发展历程 3
1.2 算法与程序设计 4
1.2.1 算法与程序 4
1.2.2 结构化程序设计 6
1.2.3 模块化程序设计 7
1.2.4 软件开发过程 10
1.2.5程序实现过程 11
1.3 C语言特点 12
本章小结 12
习题一 13
第2章 C语言基础 14
2.1 简单程序实例 14
2.2 标识符与数据 17
2.2.1 标识符 17
2.2.2 数据类型 19
2.2.3 变量 20
2.2.4 常量 24
2.2.5 表达式 26
2.3 基本类型数据 26
2.3.1 整型数据 27
2.3.2 字符型数据 30
2.3.3 浮点型数据 34
2.4 数据基本运算(一) 35
2.4.1 运算与运算符 35
2.4.2 算术运算 36
2.4.3 赋值运算 39
2.4.4 逗号运算 42
2.4.5 不同类型数据的混合运算 43
2.5 数据基本运算(二) 45
2.5.1 关系运算 45
2.5.2 逻辑运算 47
2.6 基本语句 49
本章小结 52
习题二 53
第3章 结构化程序设计 55
3.1 顺序程序设计 55
3.1.1 格式化输入输出 55
3.1.2 字符输入输出 62
3.1.3 顺序程序设计举例 64
3.2 分支程序设计 65
3.2.1 if语句及其嵌套 65
3.2.2 条件运算 74
3.2.3 switch语句 76
3.2.4 break语句 78
3.2.5 分支设计程序举例 81
3.3循环程序设计 86
3.3.1 goto语句 86
3.3.2 for语句 87
3.3.3 while语句 93
3.3.4 do-while语句 95
3.3.5 break语句和continue语句 98
3.3.6 循环嵌套 100
本章小结 104
习题三 106
第4章 构造类型数据(一) 109
4.1 指针类型数据 109
4.1.1 指针与指针运算 109
4.1.2 指针变量定义 111
4.1.3 指针变量访问 112
4.2 一维数组 116
4.2.1 一维数组定义 117
4.2.2 一维数组初始化 119
4.2.3 一维数组访问 120
4.3 多维数组 131
4.3.1 多维数组定义 131
4.3.2多维数组初始化 133
4.3.3 多维数组元素访问 135
4.4 字符数组与字符串 143
4.4.1 字符数组 143
4.4.2 字符串和字符串结束标记 144
4.4.3 字符串处理函数 147
4.5 动态内存分配 152
本章小结 156
习题四 157
第5章 构造类型数据(二) 159
5.1 结构体类型数据 159
5.1.1 结构体类型定义 159
5.1.2 结构体类型变量与数组 160
5.2 共用体类型数据 172
5.2.1 共用体类型定义 172
5.2.2 共用体类型变量与数组 173
5.3 枚举类型数据 176
5.3.1 枚举类型定义 176
5.3.2 枚举类型变量与数组 177
5.4 数据类型命名语句 180
本章小结 181
习题五 183
第6章 模块化程序设计 184
6.1 函数分类 184
6.2 函数定义与调用 186
6.2.1 函数定义 186
6.2.2 函数调用与函数声明 188
6.3 函数参数与函数值 192
6.3.1 函数参数 192
6.3.2 函数返回 204
6.4 函数嵌套调用与递归调用 211
6.4.1 函数嵌套调用 211
6.4.2 函数递归调用 212
6.5 函数有效范围 216
6.5.1 内部函数与外部函数 216
6.5.2 文件包含 217
6.6 主函数参数 218
6.7 函数程序设计举例 220
6.7.1 链表 220
6.7.2 方程求根 225
本章小结 227
习题六 229
第7章 变量有效范围与存储类别 231
7.1 变量有效范围 231
7.1.1 内部变量和外部变量 231
7.1.2 局部变量和全局变量 233
7.2 变量存储类别 236
7.2.1 内部变量的存储方式 237
7.2.2 外部变量的存储方式 240
7.3 程序设计举例 240
本章小结 245
习题七 246
第8章 数据位运算 247
8.1 位运算 247
8.1.1 移位运算 247
8.1.2 按位逻辑运算 249
8.1.3 按位运算符访问位 251
8.1.4 按位运算符访问位域 252
8.2 位域数据 252
8.2.1 位域变量定义 253
8.2.2 位域变量访问 254
本章小结 256
习题八 256
第9章 数据文件处理 259
9.1 文件概述 259
9.2 文件打开与关闭 261
9.2.1文件类型指针 261
9.2.2 数据文件打开 261
9.2.3 数据文件关闭 263
9.3 文件顺序访问 263
9.3.1 文件访问位置 263
9.3.2 文本文件访问 264
9.3.3 二进制文件访问 270
9.4 文件随机访问 272
9.5 文件访问出错检测 275
9.6 低级文件系统 276
9.6.1 文件柄 276
9.6.2 数据文件打开与关闭 276
9.6.3 数据文件创建 277
9.6.4 数据文件访问 277
9.6.5 数据文件定位 277
本章小结 280
习题九 281
附 录 283
附录A 常用字符与ASCII码表 283
附录B 关键字 283
附录C 运算符 284
附录D 编译预处理命令 285
附录E 头文件与库函数 285
参考文献 290
后 记 291
展开
前 言
进入21世纪以来,世界各国经济的发展围绕着物质、能源、信息的生产与分配,而信息技术成为当今社会信息快速采集、传输、管理、处理和共享等方面的核心技术,并促进了物质和能源的高效开发生产。计算机技术是信息技术的关键、信息社会的基石,计算机知识和技能也就成为现代社会必备的基本知识和基本技能。各行各业生产和管理人才,除必备人文、数理化、外语和专业知识外,还应掌握计算机知识。
高校是培养掌握专业知识的高层次人才的基地,为适应信息时代的发展,各高校计算机基础教学改革确定了“计算机基础”“计算机技术基础(包括软件、硬件技术基础)”和“计算机应用基础”三个层次结构的计算机知识体系。随着计算机应用的普及,有关该层次结构知识体系的教学内容、教学方法和教学手段也在不断更新发展。在“计算机软件技术基础”中,主要内容包括问题描述和问题求解,涉及计算机的数据表示、数据存储和数据操作及数据处理(算法)。通过计算机高级语言及其程序设计的教学,达到理解、掌握“计算机软件技术基础”的核心内涵的目的。近年来,随着计算思维的提出,其核心是:问题形式化表示、数据结构和算法设计、程序实现。C语言教学可作为载体,用于对学生进行具有直观感受的计算思维培养教育。
计算机高级语言的编程风格大体可分为四类:过程型语言(如FORTRAN、BASIC、Pascal等);逻辑型语言(如Prolog等);函数型语言(如LISP等);面向对象型语言(如Smalltalk、C++、Java等)。过程型语言程序设计的核心为数据,即常量、变量、表达式及参数等,其主要过程控制为结构化程序设计,即顺序程序设计、分支程序设计和循环程序设计。函数型语言程序设计的核心是函数定义和函数调用,属于弱数据类型语言,尽管保留无条件转向和条件分支控制程序的走向,但主要还是通过递归调用形式控制程序,其最大特点是:通过函数的定义实现程序的模块化。C语言是当前计算机高级语言的典型代表,已在国内外广泛流行多年,而且方兴未艾,其吸收了过程型语言的结构化、函数型语言的模块化的优点,该语言同时具有高级语言编程风格、实现低级语言(汇编语言)功能的特点,如访问物理地址、操作硬件、进行位运算、动态分配内存和调用中断服务程序等,同时拥有丰富和灵活描述问题的数据类型和解决问题的操作符。目前,掌握C语言可以为进一步深入学习面向对象语言(C++、Java、C#等)奠定基础。由于C语言本身具有极强的功能、丰富表达能力、高度模块化、高效目标代码、良好可读性和可移植性等优点,因此C语言不仅被非计算机专业人员用于开发应用软件,而且还被计算机人员用于开发系统软件。
目前,学习C语言的人员很多,并且C语言的教材也比较丰富,教材种类大体可分为三大类。
1.语言为主的教材
该类教材内容丰富详实,但重点在于介绍C语言的词法、语法、语义及简单的算法,可使首次接触编程的读者掌握C语言和简易算法,同时形成对计算机问题求解的思路。这类教材基础性强、通俗易懂、方便自学,可作为培养编程思维的入门用书,但对于应用开发的读者不适用。
2.案例为主的教材
该类教材通过程序案例介绍语言知识点,其优点是借助问题求解来讲解程序设计的基本概念和方法。由于该类教材把重点放在编程技能上,因此往往忽视语言本身的一些细节等知识内容。这类教材更适合已学习过一种或一种以上计算机语言的读者学习。
3.应用为主的教材
该类教材略去C语言的基本知识点和简单算法,结合C语言开发平台,重点介绍C语言的各种应用开发,如BIOS编程、图形处理等。其面向的读者是已熟练掌握C语言及其编程,或者具备计算机基本原理知识的人员。该类教材具有很强的应用性,适合基于C语言的计算机应用研发人员使用,而不适合本科计算机基础教学。
现有面向本科生教学的C语言教材概括起来普遍存在两个主要问题。① 内容衔接性差:C语言教学内容较为孤立,在计算机知识体系中,没能很好地形成与“计算机文化基础”和“计算机应用基础”的衔接,也没有把C语言知识应用于各理工科专业的问题描述和求解中。② 缺少应用性:C语言教材只是更多地强调C语言的词法、语法、语义和基本算法,缺少以实际问题求解为背景采用计算机思维方式开展C语言的应用。
本书以“确保基础,注重联系,增强应用,提高技能”为宗旨组织教材内容,并将“以程序设计为主线,数据及其操作为核心”融入教材编写中,涵盖了教学内容的基本性、技能性和应用性,使读者学习本书及配套教材《C语言学习辅导与实践》后达到“学以致用”的目的。作者多年来一直从事本科生和研究生的C语言课程教学工作,在深知学生对C语言知识的渴求和希望达到的C语言应用水平后,才逐步确定教材的内容。
本书所有例题及配套教材《C语言学习辅导与实践》(赵建辉主编,电子工业出版社,ISBN 978-7-121-34288-2)中的程序均在Visual C++ 6.0或Turbo C 2.0 环境中调试通过。如果读者使用其他C语言编译系统,那么请读者参考相应的编译系统资料,略加修改即可通过。
本书由李国和主编,负责本书的总体思路、框架和统稿,并编写第1章、第5章、第6章、第7章。朱瑛参编第2章、第8章,张岩参编第3章、第9章,赵建辉参编第3章、第4章。在教材编写过程中,得到中国石油大学(北京)教务处、地球物理与信息工程学院、中国石油大学(北京)克拉玛依校区教务与国际交流部大力支持以及“校级C语言优秀教学团队”大力帮助,还有董丹丹、段毛毛等老师的协作,在此一并向他们表示衷心的感谢。同时,也感谢新疆维吾尔自治区教改项目“面向新工科教育的计算机基础教学研究与实践(2017JG094)”的支持。由于计算机技术飞速发展,并且作者水平有限,因此不完善之处甚至缺点、错误在所难免,敬请读者批评和指正。
作 者
2018年4月
于中国石油大学(北京)
展开