C语言是目前最为流行的通用程序设计语言之一,是许多计算机专业人员和计算机爱好者学习程序设计语言的首选。本书共12章,内容包括C语言程序设计预备知识,C语言程序设计基础,基本数据类型、运算符与表达式,基本输入输出和顺序程序设计,选择结构程序设计,循环结构程序设计,数组,函数,指针,预处理命令,复杂数据类型,文件等。
本书注重教材的可读性和实用性,每章开头都给出了学习意义、学习目标及难点提示,对关键知识点进行了详细的说明,并附有大量的图表方便读者正确、直观地对问题进行理解,样例程序由浅入深,强化了知识点、算法、编程方法与技巧,并给出了详细的解释。为了帮助初学者正确地掌握C语言的语法特点,每章还列举出了初学者在编程过程中常见的错误。另外,本书还配套提供题型丰富的《C语言程序设计教程(第二版)习题解答与实验指导》教材,为任课教师免费提供电子课件,其中包括全部例题和习题源程序文件。
作者长期在高校从事计算机软件教学,有丰富的教学经验和科研开发能力。本书文字流畅、通俗易懂、概念清楚、深入浅出、例题丰富。
本书为普通高等教育“十一五”国家级规划教材,适合计算机专业的本专科生及研究生使用,也可以作为大学各专业公共教材和全国计算机等级考试参考书。
目录
第1章 C语言程序设计预备知识/1
1.1 计算机系统组成及工作原理简介/1
1.2 进位计数制及其转换/4
1.2.1 十进制数的表示/4
1.2.2 二进制数、八进制数和十六进制数的表示/4
1.2.3 二进制数和十进制数的转换/5
1.2.4 二进制数、八进制数和十六进制数的转换/7
1.3 机器数的表示形式及其表示范围/8
1.3.1 真值与机器数/8
1.3.2 数的原码表示/8
1.3.3 数的反码表示/9
1.3.4 数的补码表示/10
1.3.5 补码的加、减运算/11
1.3.6 无符号整数/11
1.3.7 字符表示法/11
1.4 二进制数的位运算/12
1.5 本章小结/13
习题1/14
第2章 C语言程序设计基础/16
2.1 程序设计语言的发展及其特点/16
2.2 C语言的发展及其特点和应用/18
2.3 C语言与C++、Java和C#之间的关系/20
2.4 C语言程序的基本结构/21
2.5 编制C语言程序的基本步骤/26
2.6 本章小结/28
习题2/29
第3章 基本数据类型、运算符与表达式/31
3.1 C语言的数据类型/32
3.2 常量、变量和标识符/33
3.3 简单数据类型与表示范围/35
3.3.1 整型数据/36
3.3.2 实型数据/42
3.3.3 字符型数据和字符串常量/44
3.3.4 简单数据类型的表示范围/47
3.3.5 数据的简单输出/49
3.4 C语言的运算符与表达式/51
3.4.1 赋值运算符、赋值表达式/51
3.4.2 强制类型转换符/53
3.4.3 算术运算符、算术表达式/55
3.4.4 自增自减运算符、负号运算符/56
3.4.5 算术运算中数据类型转换规则/58
3.4.6 位运算符、位运算表达式/59
3.4.7 逗号运算符、逗号表达式/60
3.4.8 sizeof运算符、复合赋值运算符/61
3.5 运算符的优先级和结合性/62
3.6 有符号数与无符号数之间运算问题/62
3.7 本章小结及常见错误列举/64
习题3/69
第4章 基本输入输出和顺序程序设计/73
4.1 格式化输出printf/73
4.1.1 整数的输出/76
4.1.2 实数的输出/80
4.1.3 字符和字符串的输出/81
4.1.4 格式化输出小结/82
4.2 格式化输入scanf/84
4.3 字符数据的非格式化输入输出/90
4.4 程序的控制结构/93
4.4.1 算法的基本概念/93
4.4.2 算法的描述方法/95
4.4.3 算法的基本结构/97
4.5 顺序程序设计举例/99
4.6 本章小结及常见错误列举/101
习题4/103
第5章 选择结构程序设计/107
5.1 C语言程序中语句的分类/107
5.2 关系运算符、逻辑运算符、条件运算符/109
5.2.1 关系运算符和关系表达式/109
5.2.2 逻辑运算符和逻辑表达式/110
5.2.3 条件运算符和条件表达式/112
5.3 选择结构的程序设计/113
5.3.1 if语句/114
5.3.2 switch语句/118
5.4 选择结构程序设计举例/122
5.5 本章小结及常见错误列举/128
习题5/131
第6章 循环结构程序设计/138
6.1 循环结构的程序设计/138
6.1.1 while语句/139
6.1.2 do-while语句/142
6.1.3 for语句/143
6.1.4 循环嵌套/146
6.1.5 break与continue语句/147
6.1.6 goto语句/149
6.1.7 exit()函数/150
6.2 循环结构类型的选择及转换/151
6.3 循环结构程序设计举例/153
6.4 本章小结及常见错误列举/159
习题6/162
第7章 数组/169
7.1 一维数组/170
7.1.1 一维数组的定义和引用/170
7.1.2 一维数组的赋值/172
7.1.3 一维数组的应用举例/175
7.2 二维数组/181
7.2.1 二维数组的定义和引用/182
7.2.2 二维数组的赋值/183
7.2.3 二维数组的应用举例/185
7.3 字符串与数组/187
7.3.1 字符串的本质/187
7.3.2 字符及字符串操作的常用函数/188
7.3.3 字符串数组/194
7.4 数组综合应用举例/197
7.5 本章小结及常见错误列举/200
习题7/204
第8章 函数/210
8.1 函数概述/210
8.2 函数的定义与调用/212
8.2.1 无参数无返回值的函数/212
8.2.2 无参数有返回值的函数/214
8.2.3 带参数无返回值的函数/217
8.2.4 带参数有返回值的函数/219
8.3 函数参数的传递方式/220
8.4 变量的作用域和生存期/224
8.5 变量的存储类型/229
8.6 函数的嵌套和递归调用/234
8.6.1 函数的嵌套调用/234
8.6.2 函数的递归调用/235
8.7 函数的作用域/241
8.8 函数封装/242
8.9 函数应用综合举例/242
8.10 本章小结及常见错误列举/246
习题8/250
第9章 指针/255
9.1 指针与指针变量的概念/255
9.2 指针变量的定义和引用/257
9.3 指针和地址运算/263
9.4 指针与数组/263
9.4.1 数组的指针和指向数组的指针变量/264
9.4.2 指向多维数组的指针——数组指针/266
9.4.3 元素为指针的数组——指针数组/271
9.5 指针与字符串/274
9.6 指针与动态内存分配/280
9.7 多级指针/285
9.8 指针作为函数参数/288
9.9 指针作为函数的返回值——指针函数/294
9.10 指向函数的指针——函数指针/295
9.11 带参数的main函数/298
9.12 本章小结及常见错误列举/301
习题9/306
第10章 预处理命令/312
10.1 预处理命令简介/312
10.2 宏定义/313
10.2.1 不带参数的宏定义/313
10.2.2 带参数的宏定义/316
10.3 文件包含/317
10.4 条件编译/319
10.5 本章小结及常见错误列举/323
习题10/325
第11章 复杂数据类型/328
11.1 复杂数据类型概述/328
11.2 结构体/329
11.2.1 结构体类型的定义/329
11.2.2 结构体变量的定义和引用/331
11.2.3 结构体变量的赋值/334
11.2.4 结构体变量内存分配问题透析/337
11.2.5 简化结构体类型名/340
11.2.6 结构体数组/341
11.3 线性链表/344
11.4 联合体/350
11.4.1 联合体类型的定义/351
11.4.2 联合体变量的定义和引用/352
11.4.3 联合体变量的赋值/352
11.5 位域/356
11.6 枚举类型变量的定义和引用/358
11.7 复杂数据类型应用综合举例/361
11.8 本章小结及常见错误列举/365
习题11/369
第12章 文件/375
12.1 文件的基本概念/375
12.2 文件的类别/376
12.3 文件操作概述/377
12.4 文件指针/378
12.5 文件的打开、读写和关闭/378
12.5.1 文件的打开与关闭/379
12.5.2 文件的读写/380
12.5.3 文件读写函数选用原则/392
12.6 文件的定位读写/393
12.7 文件应用综合举例/396
12.8 本章小结及常见错误列举/398
习题12/399
附录A 常见问题解答/404
附录B 常用标准库函数/407
附录C C语言的关键字/414
附录D 运算符和结合性/415
附录E ASCII码/416
参考文献/418