标题：C语言程序设计——从入门到进阶
图书信息
书　名　C语言程序设计——从入门到进阶(工业和信息化普通高等教育“十二五”规划教材立项项目)
丛 书 名　21世纪高等学校计算机规划教材——高校系列
标准书号　ISBN 978-7-115-27216-4
编目分类　TP312
作　者　巨同升 主编  [1]
译　者　--
责任编辑　董楠
开　本　16 开
印　张　14.75
字　数　381 千字
页　数　226 页
装　帧　平装
版　次　第1版第1次
初版时间　2011年12月
本 印 次　2011年12月
首 印 数　-- 册
定　价　26.50 元
内容提要

本书在内容编排上，采用“应用驱动知识”的方式，即根据每一章应用目标的需求，合理地安排每一个知识主题的引入点，从而将C语言中枯燥难懂的语法知识分解到全书各章并融入到丰富的实例中。本书在编程方法的讲解上，采用“逐步构造法”，即通过问题分析、算法设计、程序原型等环节一步一步地构造出完整的程序，从而加深读者对编程方法的理解和掌握。
本书主要内容包括引论、基本数据与运算、顺序结构程序设计、选择结构程序设计、循环结构程序设计、数组、指针、字符串处理、函数、函数的进一步讨论、编译预处理命令、结构体与共用体、位运算、文件等。本书以Visual C++ 6.0运行环境为基础进行介绍，符合当前软件的发展趋势，便于读者学习。
本书内容编排顺畅合理，编程方法讲解新颖独特，特别适合初学者自学。本书可作为高等院校各专业学生学习C语言程序设计的教材和参考书。
目　录

第1章　引论　1
1.1　程序与程序设计语言　1
1.2　C语言的发展及特点　2
1.2.1　C语言的发展　2
1.2.2　C语言的特点　3
1.3　C程序的构成　3
1.4　C程序的运行　5
第2章　基本的数据与运算　10
2.1　常量、变量与标识符　10
2.1.1　标识符　10
2.1.2　变量　10
2.1.3　常量　12
2.2　整型、实型与字符型数据　12
2.2.1　整型数据　13
2.2.2　实型数据　14
2.2.3　字符型数据　15
2.3　算术运算符和算术表达式　17
2.3.1　基本算术运算符　17
2.3.2　算术表达式　19
2.3.3　运算符的优先级　19
2.3.4　运算符的结合性　19
2.4　拓展：整型数据与实型数据的内存格式　19
2.4.1　整型数据在内存中的表示形式　19
2.4.2　整型数据的溢出　20
2.4.3　实型数据在内存中的表示形式　20
2.4.4　实型数据的舍入误差　21
第3章　顺序结构程序设计　22
3.1　C语言的语句类型　22
3.2　变量的赋值和初始化　23
3.2.1　赋值表达式　23
3.2.2　变量的初始化　23
3.3　数据的格式输入与格式输出　24
3.3.1　格式输出函数(printf函数)　24
3.3.2　格式输入函数(scanf函数)　27
3.4　字符型数据的输入与输出　30
3.4.1　字符输出函数(putchar函数)　30
3.4.2　字符输入函数(getchar函数)　30
3.5　拓展：赋值运算中的类型转换　31
3.5.1　实型数据赋给整型(或字符型)变量　31
3.5.2　整型(或字符型)数据赋给实型变量　31
3.5.3　较长的整型数据赋给较短的整型(或字符型)变量　31
3.5.4　较短的整型(或字符型)数据赋给较长的整型变量　32
3.5.5　整型数据赋给不同类型的等长整型变量　32
第4章　选择结构程序设计　34
4.1　关系表达式与逻辑表达式　34
4.1.1　关系运算符　34
4.1.2　关系表达式　35
4.1.3　逻辑运算符　35
4.1.4　逻辑表达式　36
4.2　算法与流程图　36
4.2.1　简单算法举例　37
4.2.2　算法的特征　37
4.2.3　算法的表示　37
4.3　if语句　39
4.3.1　if语句的两种基本形式　39
4.3.2　if语句的嵌套　41
4.3.3　嵌套if结构与平行if结构的区别　43
4.4　混合运算与强制类型转换　44
4.4.1　混合运算　44
4.4.2　强制类型转换　45
4.5　switch语句　45
4.6　选择结构程序举例　48
4.7　拓展：条件表达式与goto语句　51
4.7.1　条件表达式　51
4.7.2　语句标号与goto语句　52
第5章　循环结构程序设计　53
5.1　while循环　53
5.1.1　while语句　53
5.1.2　while循环程序举例　54
5.2　自增自减运算符与复合赋值运算符　56
5.2.1　自增自减运算符　56
5.2.2　复合赋值运算符　57
5.3　for循环　58
5.3.1　for语句　58
5.3.2　for循环程序举例　59
5.4　do-while循环　59
5.5　循环的嵌套　61
5.6　break语句和continue语句　64
5.6.1　break语句　64
5.6.2　continue语句　65
5.7　拓展：逗号表达式与for语句变式　65
5.7.1　逗号运算符与逗号表达式　65
5.7.2　for语句变式　66
5.8　循环结构应用举例　67
第6章　数组　70
6.1　一维数组　70
6.1.1　一维数组的定义　70
6.1.2　一维数组的使用　71
6.1.3　一维数组的初始化　71
6.1.4　一维数组应用举例　72
6.2　二维数组　75
6.2.1　二维数组的定义　76
6.2.2　二维数组的初始化　76
6.2.3　二维数组的引用　76
6.2.4　二维数组应用举例　77
第7章　指针　80
7.1　变量的地址和指针　80
7.2　变量的间接引用　81
7.2.1　指针变量　81
7.2.2　指针变量的定义　81
7.2.3　两种与指针有关的运算符　81
7.3　指针与一维数组　85
7.3.1　指向一维数组元素的指针　85
7.3.2　通过指针引用一维数组元素　85
7.4　拓展：指针与二维数组　87
7.4.1　指向二维数组元素和行的指针　87
7.4.2　行指针变量　88
7.4.3　指针数组　89
7.4.4　指向指针的指针　90
第8章　字符串处理　92
8.1　字符串的存储与引用　92
8.1.1　字符串在内存中的存储形式　92
8.1.2　用字符数组存储和引用字符串　92
8.1.3　用字符指针引用字符串　93
8.2　字符串的输入和输出　94
8.2.1　用printf函数输出字符串　94
8.2.2　用scanf函数输入字符串　94
8.2.3　用puts函数输出字符串　95
8.2.4　用gets函数输入字符串　95
8.3　字符串处理函数　96
8.3.1　字符串长度函数strlen　96
8.3.2　字符串复制函数strcpy　96
8.3.3　字符串连接函数strcat　97
8.3.4　字符串比较函数strcmp　98
8.3.5　字符串大写转小写函数strlwr　99
8.3.6　字符串小写转大写函数strupr　99
8.4　字符串处理应用举例　99
第9章　函数　104
9.1　库函数　104
9.2　用户函数的定义与调用　105
9.2.1　无参函数的定义　105
9.2.2　无参函数的调用　106
9.2.3　有参函数的定义和调用　107
9.3　函数的参数和返回值　109
9.3.1　函数的参数　109
9.3.2　函数的返回值　109
9.4　函数的调用方式与函数原型　111
9.4.1　函数的调用方式　111
9.4.2　函数原型的声明　111
9.5　变量的作用域和生存期　115
9.5.1　变量的作用域　115
9.5.2　变量的存储方式　117
9.6　拓展：多文件程序　118
9.6.1　多文件程序的运行　119
9.6.2　函数的存储类别　119
9.6.3　全局变量的存储类别　120
第10章　函数的进一步讨论　123
10.1　指针作函数参数　123
10.2　数组名作函数参数　126
10.2.1　一维数组名作函数参数　126
10.2.2　拓展：二维数组名作函数参数　129
10.3　指针型函数和指向函数的指针　131
10.3.1　指针型函数　131
10.3.2　指向函数的指针　132
10.4　函数的递归调用　133
第11章　编译预处理命令　136
11.1　宏定义命令　136
11.1.1　不带参数的宏定义　136
11.1.2　带参数的宏定义　137
11.2　文件包含命令　138
11.3　拓展：条件编译　139
第12章　结构体与共用体　142
12.1　定义结构体类型与结构体变量　142
12.1.1　结构体类型的定义　142
12.1.2　结构体类型变量的定义　143
12.1.3　用typedef定义类型别名　145
12.2　结构体变量的引用和初始化　145
12.2.1　结构体变量的引用　145
12.2.2　结构体变量的初始化　146
12.3　结构体数组　147
12.3.1　结构体数组的定义　147
12.3.2　结构体数组的初始化　148
12.4　结构体指针　149
12.4.1　指向结构体变量的指针　149
12.4.2　指向结构体数组元素的指针　150
12.4.3　结构体指针作函数参数　152
12.5　链表　153
12.5.1　链表的概念　153
12.5.2　内存的动态分配　154
12.5.3　链表的建立与遍历　154
12.5.4　链表的插入与删除　157
12.6　拓展：共用体　160
12.6.1　共用体的定义　160
12.6.2　共用体变量的引用　160
12.7　拓展：枚举类型　161
12.7.1　枚举类型的定义　161
12.7.2　枚举类型变量的使用　161
12.8　综合应用举例　162
第13章　位运算　166
13.1　位运算符　166
13.1.1　按位取反运算符～　166
13.1.2　按位与运算符&　167
13.1.3　按位或运算符|　167
13.1.4　按位异或运算符^　168
13.1.5　按位左移运算符<<　168
13.1.6　按位右移运算符>>　168
13.2　位运算应用举例　169
第14章　文件　172
14.1　文件概述　172
14.1.1　文本文件和二进制文件　172
14.1.2　FILE类型　172
14.2　文件的打开与关闭　173
14.2.1　文件打开函数fopen　173
14.2.2　文件关闭函数fclose　175
14.3　文件的读写　176
14.3.1　fscanf函数和fprintf函数　176
14.3.2　fgetc函数和fputc函数　179
14.3.3　fgets函数和fputs函数　181
14.3.4　fread函数和fwtrite函数　184
14.4　拓展：文件的读写定位及状态检测　186
14.4.1　rewind函数　186
14.4.2　fseek函数　186
14.4.3　ftell函数　188
附录A　C语言编程典型错误　189
附录B　C语言的关键字　214
附录C　ASCⅡ字符表　215
附录D　常用的C语言库函数　218
附录E　Visual C++ 6.0常见错误信息表　224
参考文献　226