第1章 C语言概述 1
1.1计算机与程序、程序设计语言 1
1.2C语言的出现和发展过程 2
1.3简单的C语言程序 2
1.4运行C程序的步骤与方法 6
1.4.1运行C程序的步骤 6
1.4.2上机运行C程序的方法 7
本章小结 14
习题 15
第2章 数据的存储与运算 16
2.1数据在计算机中是怎样存储的 16
2.1.1数据在计算机中是以二进制形式存储的 16
2.1.2位、字节和地址 17
2.1.3不同类型数据的存储方式 18
2.2整型数据的运算与分析 19
2.2.1整型数据运算程序举例和分析 19
2.2.2整型常量与整型变量 22
2.3实型数据的运算与分析 24
2.3.1实型数据的运算举例 24
2.3.2实型常量的表示形式 26
2.3.3实型变量 27
2.4字符型数据的运算 29
2.4.1字符数据运算的简单例子 29
2.4.2字符常量和字符变量 29
2.4.3字符串常量 33
2.5符号常量 34
2.5.1符号常量的作用 35
2.5.2符号常量的性质和使用方法 36
2.6算术运算符和算术表达式 38
2.6.1算术运算符 38
2.6.2算术表达式 39
2.7C运算符和C表达式 41
2.7.1C运算符 41
2.7.2C表达式 42
2.8提高部分 42
2.8.1求补码的方法 42
2.8.2整型常量的表示形式 43
2.8.3整型变量的类型 44
2.8.4整型常量的类型 45
2.8.5运算符的优先级与结合性 45
本章小结 46
习题 46
第3章 最简单的C程序设计——顺序程序设计 48
3.1算法是程序的灵魂 48
3.1.1算法的概念 48
3.1.2怎样表示算法 50
3.2程序的三种基本结构 53
3.3C语句综述 54
3.4赋值表达式和赋值语句 56
3.4.1赋值表达式 56
3.4.2赋值过程中的类型转换 59
3.4.3赋值语句 60
3.4.4变量赋初值 60
3.5数据输入输出的概念 61
3.6字符数据的输入输出 63
3.6.1用putchar函数输出一个字符 63
3.6.2用getchar函数输入一个字符 64
3.7简单的格式输入与输出 66
3.7.1用简单的printf函数输出数据 66
3.7.2用简单的scanf函数输入数据 70
3.8顺序结构程序设计举例 73
3.9提高部分 76
3.9.1无符号数据与有符号数据之间的赋值 76
3.9.2较复杂的输入输出格式控制 78
3.9.3简单易用的C++的输入输出 85
3.9.4C++用“//”作为注释的标识 86
本章小结 86
习题 87
第4章 选择结构程序设计 89
4.1条件判断 89
4.1.1条件判断的含义 89
4.1.2关系运算符和关系表达式 90
4.1.3逻辑运算符和逻辑表达式 91
4.2用if语句实现选择结构 95
4.2.1用if语句实现选择结构举例 95
4.2.2if语句的一般形式 97
4.2.3if语句的使用说明 97
4.2.4使用嵌套的if语句实现多层判断 99
4.3利用switch语句实现多分支选择结构 103
4.4程序综合举例 105
4.5提高部分 109
4.5.1用条件表达式实现简单的选择结构 109
4.5.2在程序中使用条件表达式 110
本章小结 111
习题 112
第5章 循环结构程序设计 115
5.1程序中需要用循环结构 115
5.2用while语句和do…while语句实现循环 115
5.2.1用while语句实现循环 115
5.2.2用do…while语句实现循环 117
5.3用for语句实现循环 119
5.3.1for语句的一般形式和执行过程 120
5.3.2for循环程序举例 120
5.4循环的嵌套 124
5.5提前结束循环 124
5.5.1用break语句提前退出循环 124
5.5.2用continue语句提前结束本次循环 126
5.6几种循环的比较 128
5.7程序举例 128
5.8提高部分 132
5.8.1while和do…while循环的比较 132
5.8.2for语句的各种形式 134
本章小结 137
习题 137
第6章 利用数组处理批量数据 139
6.1为什么要用数组 139
6.2定义和引用一维数组 139
6.2.1定义一维数组 140
6.2.2引用一维数组的元素 140
6.2.3一维数组的初始化 141
6.2.4一维数组程序举例 142
6.3二维数组的定义和引用 145
6.3.1定义二维数组 145
6.3.2引用二维数组的元素 146
6.3.3二维数组的初始化 147
6.3.4二维数组程序举例 148
6.4字符数组 151
6.4.1定义字符数组及对其初始化 151
6.4.2引用字符数组 152
6.4.3字符串和字符串结束标志 153
6.4.4字符数组的输入输出 155
6.4.5字符串处理函数 157
6.4.6字符数组应用举例 157
6.5提高部分 161
6.5.1定义二维数组时为何采用两对双括号形式 161
6.5.2C语言字符串函数的详细介绍 162
本章小结 166
习题 167
第7章 用函数实现模块化程序设计 168
7.1函数是什么 168
7.2函数的定义和调用 170
7.2.1为什么要定义函数 170
7.2.2定义函数 171
7.2.3函数的调用 172
7.2.4对被调用函数的声明和函数原型 175
7.3函数的嵌套调用和递归调用 177
7.3.1函数的嵌套调用 177
7.3.2函数的递归调用 179
7.4数组作为函数参数 184
7.4.1数组元素作函数实参 185
7.4.2数组名作函数参数 186
7.5变量的作用域和生存期 192
7.5.1变量的作用域——局部变量和全局变量 192
7.5.2变量的存储方式和生存期 195
7.5.3作用域和生存期的小结 199
7.6内部函数和外部函数 200
7.6.1内部函数 200
7.6.2外部函数 201
7.7提高部分 203
7.7.1实参求值的顺序 203
7.7.2递归的典型例子——Hanoi(汉诺)塔问题 203
本章小结 206
习题 208
第8章 善于使用指针 210
8.1什么是指针 210
8.2指针变量 211
8.2.1使用指针变量访问变量的例子 211
8.2.2怎样定义指针变量 212
8.2.3怎样引用指针变量 214
8.2.4指针变量作为函数参数 215
8.3通过指针引用数组 220
8.3.1数组元素的指针 220
8.3.2通过指针引用数组元素 221
8.3.3用数组名作函数参数 224
8.4通过指针引用字符串 229
8.4.1字符串的表示形式 229
8.4.2字符指针作函数参数 233
8.4.3对使用字符指针变量和字符数组的讨论 236
8.5提高部分 239
8.5.1指针使用的技巧 239
8.5.2多维数组的指针 240
8.5.3指向函数的指针 241
8.5.4返回指针值的函数 242
8.5.5指针数组 242
8.5.6多重指针——指向指针的指针 243
本章小结 244
习题 247
第9章 使用结构体类型处理组合数据——用户自定义数据类型 248
9.1定义和使用结构体变量 248
9.1.1自己建立结构体类型 248
9.1.2定义结构体类型变量 250
9.1.3结构体变量的初始化和引用 252
9.2结构体数组 255
9.3结构体指针 258
9.4用结构体变量和结构体变量的指针作函数参数 262
9.5用指针处理链表 265
9.5.1什么是线性链表 265
9.5.2建立简单的静态链表 266
9.5.3建立动态链表 267
9.6提高部分 269
9.6.1共用体类型 269
9.6.2枚举类型 270
本章小结 272
习题 273
第10章 利用文件保存数据 275
10.1C文件的有关概念 275
10.1.1什么是文件 275
10.1.2文件名 276
10.1.3文件的分类 276
10.1.4文件缓冲区 277
10.1.5文件指针 277
10.2文件的打开与关闭 278
10.2.1用f open函数打开数据文件 278
10.2.2用fclose函数关闭文件 280
10.3文件的顺序读写 280
10.3.1向文件读写一个字符 280
10.3.2向文件读写一个字符串 284
10.3.3文件的格式化读写 287
10.3.4用二进制方式读写文件 288
10.4文件的随机读写 291
10.4.1文件位置指针及其定位 292
10.4.2随机读写文件 294
10.5提高部分 296
10.5.1系统定义的文件指针 296
10.5.2回车换行符的转换 296
10.5.3fread和f write函数只用于二进制文件的输入输出 296
10.5.4文件读写的出错检测 297
本章小结 297
习题 299
附录A 常用字符与ASCII代码对照表 300
附录B C语言中的关键字 301
附录C 运算符和结合性 302
附录D C语言常用语法提要 304
附录E C库函数 308
参考文献 314