目录 1
第一章 程序设计基本概念 1
1.1 程序和程序设计 1
1.1.1 C程序 1
1.1.2 程序设计 2
1.2 算法 2
1.3 结构化程序设计和模块化结构 3
1.3.1 结构化程序 3
1.3.2 模块化结构 6
习题 6
第二章 C程序设计的初步知识 7
2.1 简单C语言程序的构成和格式 7
2.2 常量、变量和标识符 8
2.2.1 标识符 8
一个常量 9
2.2.3 用定义一个符号名的方法来代表 9
2.2.2 常量 9
2.2.4 变量 10
2.3 整型数据 10
2.3.1 整型常量 10
2.3.2 整型变量 11
2.3.3 整型数据的分类 11
2.3.4 整数在内存中的存储形式 12
2.4 实型数据 13
2.4.1 实型常量 13
2.4.2 实型变量 13
2.5 算术表达式 14
2.5.1 基本的算术运算符 14
2.5.2 运算符的优先级、结合性和算术 15
表达式 15
2.6.1 赋值运算符和赋值表达式 16
2.6 赋值表达式 16
2.5.3 强制类型转换表达式 16
2.6.2 复合的赋值表达式 17
2.6.3 赋值运算中的类型转换 17
2.7 自加、自减运算符和逗号运算符 18
2.7.1 自加运算符(++)和自减运算符(--) 18
2.7.2 逗号运算符和逗号表达式 19
习题 19
第三章 顺序结构 22
3.1 赋值语句 22
3.2 数据输出 22
3.2.1 printf函数的一般调用形式 22
3.2.2 printf函数中常用的格式说明 23
3.2.3 调用printf函数时的注意事项 26
3.3 数据输入 26
3.3.1 scanf函数的一般调用形式 26
3.3.2 scanf函数中常用的格式说明 27
3.3.3 通过scanf函数从键盘输入数据 28
3.4 复合语句和空语句 29
3.4.1 复合语句 29
3.4.2 空语句 29
3.5 程序举例 30
习题 31
第四章 选择结构 35
4.1 关系运算和逻辑运算 35
4.1.1 C语言中的逻辑值 35
4.1.2 关系运算符和关系表达式 35
4.1.3 逻辑运算符和逻辑表达式 36
4.2 if语句和用if语句构成的选择结构 37
4.2.1 if语句 37
4.2.2 嵌套的if语句 40
4.3 条件表达式构成的选择结构 43
4.4.2 switch语句的执行过程 44
4.4.1 switch语句 44
10.1.1 通过赋初值的方式给一维字符数组赋字符串 1 44
break语句构成的选择结构 44
4.4 switch语句以及用switch语句和 44
4.4.3 在switch语句体中使用break语句 45
习题 46
4.5.1 语句标号 46
4.5.2 goto语句 46
4.5 语句标号和goto语句 46
5.1 while语句和用while语句构成的循环 51
结构 51
5.1.1 while循环的一般形式 51
5.1.2 while循环的执行过程 51
第五章 循环结构 51
5.2 do-while语句和用do-while语句构成的循环结构 53
5.2.1 do-while语句构成的循环结构 53
5.2.2 do-while循环的执行过程 54
5.3 for语句和用for语句构成的循环结构 54
5.3.1 for语句构成的循环结构 54
5.3.2 for循环的执行过程 55
5.3.3 有关for语句的说明 55
5.4 循环结构的嵌套 56
作用 58
5.5.1 break语句 58
5.5 break和continue语句在循环体中的 58
5.5.2 continue语句 59
5.6 程序举例 60
习题 63
第六章 字符型数据 68
6.1 字符型常量 68
6.1.1 字符常量 68
6.1.2 转义字符常量 68
6.1.3 字符串常量 69
6.1.4 可对字符量进行的运算 69
6.2 字符变量 70
6.3 字符的输入和输出 70
6.3.1 调用printf和scanf函数输出和输入字符 70
6.3.2 调用putchar和getchar函数输出和输入字符 71
6.4 程序举例 72
习题 74
第七章 函数 77
7.1 库函数 77
7.2 函数的定义和返回值 78
7.2.1 函数定义的语法 78
7.2.2 函数的返回值 79
7.3 函数的调用 80
7.3.1 函数的两种调用方式 80
7.3.2 函数调用时的语法要求 80
7.4 函数的说明 81
7.4.1 函数说明的形式 81
7.4.2 函数说明的位置 82
7.5 调用函数和被调用函数之间的数据传递 82
7.6 程序举例 84
习题 89
第八章 指针 94
8.1 变量的地址和指针 94
8.2 指针变量的定义和指针变量的基类型 95
8.3.1 给指针变量赋地址值 96
8.3 给指针变量赋值 96
8.4.1 通过指针来引用一个存储单元 97
8.3.2 给指针变量赋“空”值 97
8.4 对指针变量的操作 97
8.4.2 移动指针 98
8.4.3 指针比较 99
8.5 函数之间地址值的传递 100
8.5.1 形参为指针变量时,实参和形参 100
之间的数据传递 100
8.5.2 通过传送地址值,在被调用函数中直接改变调用函数中的变量的值 101
8.5.3 函数返回地址值 102
习题 102
第九章 数组 107
9.1 一维数组的定义和一维数组元素的引用 107
9.1.1 一维数组的定义 107
9.1.2 一维数组元素的引用 108
9.1.3 一维数组的初始化 108
举例 109
9.1.5 一维数组的定义和数组元素引用 109
9.1.4 通过赋初值定义数组的大小 109
9.2.1 一维数组和数组元素的地址 110
9.2 一维数组和指针 110
9.2.2 通过数组的首地址引用数组元素 111
9.2.3 通过指针来引用一维数组元素 111
9.2.4 用带下标的指针变量引用一维 111
数组元素 111
9.3 函数之间对一维数组和数组元素的 112
引用 112
9.3.1 数组元素作实参 112
9.3.2 数组名作实参 112
9.3.3 数组元素地址作为实参 114
9.3.4 函数的指针形参和函数体中数组 115
的区别 115
9.4 一维数组应用举例 115
引用 124
9.5.1 二维数组的定义 124
9.5 二维数组的定义和二维数组元素的 124
9.5.2 二维数组元素的引用 125
9.5.3 二维数组的初始化 125
9.5.4 通过赋初值定义二维数组的大小 126
9.5.5 二维数组的定义和数组元素引用 127
举例 127
9.6 二维数组和指针 128
9.6.1 二维数组和数组元素的地址 128
9.6.2 通过地址来引用二维数组元素 129
9.6.3 通过建立一个指针数组来引用二维数组元素 129
9.6.4 通过建立一个行指针来引用二维 130
数组元素 130
9.7 二维数组名和指针数组作为实参 130
9.7.1 二维数组名作为实参时,实参和 130
形参之间的数据传递 130
9.8 二维数组程序举例 131
9.7.2 指针数组作为实参时,实参和形 131
参之间的数据传递 131
习题 135
第十章 字符串 143
10.1 用一个一维字符数组来存放字符串 143
10.1.2 在C语言程序执行过程中给一维 145
字符数组赋字符串 145
10.2 使指针指向一个字符串 146
10.2.1 通过赋初值的方式使指针指向 146
一个字符串 146
10.2.2 通过赋值运算使指针指向一个 146
字符串 146
10.2.3 用字符数组作为字符串和用指针指向的一个字符串之间的区别 146
必要条件 147
10.3.2 用格式说明符%s进行整串输入 147
和输出 147
10.3.1 输入和输出字符串时的 147
10.3 字符串的输入和输出 147
10.3.3 调用gets、puts函数,从终端 148
进行字符串行的输入和输出 148
10.4 字符串数组 148
10.5 用于字符串处理的函数 150
10.6 程序举例 150
习题 154
11.1 传给main函数的参数 159
第十一章 对函数的进一步讨论 159
11.2 通过实参向函数传递函数名或指向函数的指针变量 160
11.3 函数的递归调用 161
习题 164
第十二章 C语言中用户标识符的作用域和存储类 164
12.1 局部变量、全局变量和存储分类 169
12.1.1 用户标识符的作用域 169
12.1.2 局部变量、全局变量和存储分类 169
12.2 局部变量及其作用域和生存期 170
12.2.1 auto变量 170
12.2.3 静态存储类的局部变量 171
12.2.2 register变量 171
12.3 全局变量及其作用域和生存期 172
12.3.1 全局变量的作用域和生存期 172
12.3.2 在同一编译单位内用extern说明符来扩展全局变量的作用域 173
12.3.3 在不同编译单位内用extern说明符来扩展全局变量的作用域 173
12.3.4 静态全局变量 174
习题 175
12.4.2 用static说明函数 175
12.4.1 用extern说明函数 175
12.4 函数的存储分类 175
第十三章 编译预处理和动态存储分配 179
13.1 编译预处理 179
13.1.1 宏替换 179
13.1.2 文件包含 181
13.2 动态存储分配 182
13.2.1 malloc函数和free函数 182
第十四章 结构体、共用体和用户定义类型 183
习题 183
13.2.2 calloc函数 183
14.1 用typedef说明一种新类型名 187
14.2 结构体类型 188
14.2.1 结构体类型的说明 188
14.2.2 结构体类型的变量、数组和指针变量的定义 189
14.2.3 给结构体变量、数组赋初值 191
14.2.4 引用结构体变量中的数据 192
数据传递 194
14.2.5 函数之间结构体变量的 194
14.2.6 利用结构体变量构成链表 197
14.3 共用体 203
14.3.1 共用体类型的说明和变量定义 203
14.3.2 共用体变量的引用 204
习题 206
第十五章 位运算 211
15.1 位运算符 211
15.2 位运算符的运算功能 211
习题 214
16.1 C语言文件的概念 216
第十六章 文件 216
16.2 文件指针 217
16.3 打开文件 217
16.4 关闭文件 219
16.5 调用getc(fgetc)和putc(fputc)函数进行输入和输出 219
16.6 判文件结束函数feof 221
16.7 fscanf函数和fprintf函数 222
16.8 fgets函数和fputs函数 223
16.9 fread函数和fwrite函数 223
16.10 文件定位函数 224
16.10.1 fseek函数 225
16.10.2 ftell函数 225
16.10.3 rewind函数 226
习题 226
17.1 上机考试系统使用说明 229
17.1.1 上机考试环境 229
第十七章 上机指导 229
17.1.2 上机考试时间 230
17.1.3 上机考试题型及分值 230
17.1.4 上机考试登录 230
17.1.5 试题内容查阅工具的使用 233
17.1.6 考生目录和文件的恢复 235
17.1.7 文件名的说明 236
17.2 上机考试内容 236
17.2.1 DOS常用命令操作 236
17.2.2 程序修改调试运行 238
17.2.3 程序编制调试运行 242
习题 245
附录 254
附录一 C语言的关键字 254
附录二 双目算术运算中两边运算量类型 254
转换规律 254
附录三 运算符的优先级和结合性 254
附录四 常用字符与ASCII代码对照表 255
附录五 库函数 256