本书根据国家示范建设课程改革成果及C语言程序设计课程教学要求进行编写。全书内容分为12章,系统地讲解编程与C语言基础、基本数据类型、运算符与表达式、顺序结构程序设计、选择结构程序设计、循环结构程序设计、数组、函数、指针、结构体、联合体与枚举、编译预处理、文件处理等知识。书中设有多个实例,同时在章节中穿插3个阶段性综合训练,每经过一个阶段的学习就完成一个综合性的应用设计,在应用设计中强化理论知识,将理论和实践紧密结合。在内容安排上由浅入深,注重例题的可操作性,融入微信扫码实例的信息化手段,并通过读一读、练一练的形式帮助学生掌握C语言的程序设计方法和技巧,最后根据自测题和上机训练题进行学习检测和操作练习。 本书为高等职业本专科院校相应课程的教材,也可作为开放大学、成人教育、自学考试、中职学校和培训班的教材,以及编程爱好者自学C语言的参考书。 本书提供免费的电子教学课件、习题参考答案、程序代码,详见前言。
高玉玲 副教授,毕业后在南京信息职业技术学院从事十余年的C语言编程技术等专业课程的教学与研究工作,曾到企业专职从事编程技术与培训工作,具有丰富的教学与实践经验
第1章 编程与C语言基础 1
教学导航 1
知识分布网络 1
1.1 为什么需要编程 2
1.1.1 计算机的运行机制 2
1.1.2 编程语言 2
1.1.3 C语言特点 3
1.2 C语言程序的基本组成 4
1.2.1 表达式 4
1.2.2 语句 4
1.2.3 函数 5
1.3 C语言程序开发流程 8
1.4 Visual C++ 6.0集成开发环境 9
1.5 动手实战 12
1.5.1 编写你的第一个C语言源程序 12
1.5.2 上机调试你的第一个程序 14
1.5.3 C语言编译时常见的错误提示和排除 15
自测题1 17
上机训练题1 18
第2章 基本数据类型 20
教学导航 20
知识分布网络 20
2.1 关键字与标识符 21
2.1.1 关键字 21
2.1.2 标识符 21
2.2 数据类型的分类 22
2.3 常量 22
2.3.1 直接常量 22
2.3.2 符号常量 24
2.4 变量 26
2.4.1 变量的定义 26
2.4.2 变量的初始化 26
2.4.3 整型变量 26
2.4.4 实型变量 27
2.4.5 字符变量 28
2.5 数据类型的转换 29
2.5.1 自动转换 29
2.5.2 强制转换 30
2.6 基本数据类型常见错误及解决方法 30
自测题2 32
上机训练题2 34
第3章 运算符与表达式 35
教学导航 35
知识分布网络 35
3.1 运算符 36
3.2 算术运算符与表达式 36
3.2.1 基本算数运算符 37
3.2.2 自增、自减运算符 37
3.2.3 算数表达式 37
3.3 赋值运算符与表达式 38
3.3.1 赋值运算符 38
3.3.2 复合赋值运算符 39
3.3.3 赋值表达式 39
3.4 关系运算符与表达式 40
3.4.1 关系运算符 40
3.4.2 关系表达式 40
3.5 逻辑运算符与表达式 41
3.5.1 逻辑运算符 41
3.5.2 逻辑表达式 42
3.6 逗号运算符与表达式 43
3.6.1 逗号运算符 43
3.6.2 逗号表达式 43
3.7 条件运算符与表达式 44
3.8 运算符与表达式常见错误及解决方法 45
自测题3 47
上机训练题3 49
第4章 顺序结构程序设计 50
教学导航 50
知识分布网络 50
4.1 结构化程序设计 51
4.1.1 算法 51
4.1.2 程序的三种基本结构 52
4.2 数据的输入/输出 52
4.2.1 格式输出函数 52
4.2.2 格式输入函数 54
4.2.3 字符输出函数 56
4.2.4 字符输入函数 56
4.3 顺序结构 58
4.3.1 顺序结构中的常用语句 59
4.3.2 顺序结构程序组成要素 60
4.4 顺序结构常见错误及解决方案 62
自测题4 64
上机训练题4 66
第5章 选择结构程序设计 67
教学导航 67
知识分布网络 67
5.1 选择结构的组成 68
5.1.1 选择结构中常用语句和运算符 68
5.1.2 选择条件的描述 68
5.2 if语句 69
5.2.1 单分支的if语句 69
5.2.2 双分支的if语句 70
5.2.3 多分支的if语句 70
5.2.4 if语句的嵌套 71
5.3 条件运算符使用技巧 74
5.4 switch语句 75
5.4.1 switch语句的格式及执行过程 75
5.4.2 switch语句使用时的注意事项 76
5.5 选择结构常见错误及解决方法 78
自测题5 79
上机训练题5 82
第6章 循环结构程序设计 84
教学导航 84
知识分布网络 84
6.1 循环结构的组成与常用语句 85
6.2 while语句 85
6.2.1 while语句的一般形式 85
6.2.2 while语句的执行过程 86
6.2.3 while语句使用时的注意事项 86
6.3 do while语句 88
6.3.1 do while语句的一般形式 88
6.3.2 do while语句的执行过程 89
6.3.3 do while语句使用时的注意事项 89
6.3.4 do while语句与while语句的区别 89
6.4 for语句 91
6.4.1 for语句的一般形式 91
6.4.2 for语句的执行过程 91
6.4.3 for语句的变化形式 92
6.4.4 for语句使用时的注意事项 93
6.5 跳转语句 94
6.5.1 break语句 95
6.5.2 continue语句 95
6.5.3 goto语句 96
6.6 循环嵌套 98
6.7 循环结构常见错误及解决方法 101
自测题6 103
上机训练题6 106
阶段性综合训练1 打印ASCII码表 107
第7章 数组 110
教学导航 110
知识分布网络 110
7.1 数组的概念与分类 111
7.2 一维数组 111
7.2.1 一维数组的定义 112
7.2.2 一维数组的存储 113
7.2.3 一维数组元素的引用 113
7.2.4 一维数组的初始化 113
7.3 二维数组 115
7.3.1 二维数组的定义 115
7.3.2 二维数组的存储 116
7.3.3 二维数组元素的引用 116
7.3.4 二维数组的初始化 117
7.4 字符数组与字符串 118
7.4.1 字符数组的定义 118
7.4.2 字符数组的初始化 118
7.4.3 字符数组的引用 119
7.4.4 字符串和结束标志 120
7.4.5 字符串的输入与输出 120
7.4.6 常见的字符串处理函数 123
7.5 数组常见错误及解决方法 126
自测题7 128
上机训练题7 132
第8章 函数 134
教学导航 134
知识分布网络 134
8.1 模块化程序设计与函数 135
8.1.1 模块化程序设计的概念 135
8.1.2 函数分类 135
8.2 函数的定义和返回值 136
8.2.1 函数的定义 136
8.2.2 函数的返回值 137
8.3 函数的调用 138
8.3.1 函数调用的一般形式 139
8.3.2 函数调用的方式 139
8.3.3 被调函数的声明 140
8.4 函数的参数传递 142
8.4.1 形式参数与实际参数 142
8.4.2 值传递 142
8.4.3 地址传递 143
8.5 函数的嵌套与递归 145
8.5.1 函数的嵌套调用 145
8.5.2 函数的递归调用 146
8.6 变量的作用域 149
8.6.1 局部变量 149
8.6.2 全局变量 150
8.7 变量的生存期 153
8.7.1 静态存储变量 153
8.7.2 动态存储变量 153
8.8 函数的作用范围 157
8.8.1 内部函数 157
8.8.2 外部函数 158
8.9 函数常见错误及解决方法 159
自测题8 161
上机训练题8 164
阶段性综合训练2 打印日历 166
第9章 指针 171
教学导航 171
知识分布网络 171
9.1 为什么使用指针 172
9.1.1 内存与变量 172
9.1.2 地址与指针 173
9.2 指针变量 173
9.2.1 指针变量的定义 173
9.2.2 指针变量的初始化 174
9.2.3 指针变量的赋值 175
9.2.4 指针变量的运算 175
9.2.5 指针变量的引用 176
9.3 指针与函数 179
9.3.1 指针作为函数参数 179
9.3.2 返回指针的函数 179
9.3.3 指向函数的指针 181
9.4 指针与数组 183
9.4.1 指针与一维数组 184
9.4.2 指针与二维数组 188
9.5 指针与字符串 194
9.5.1 指向字符串的指针 194
9.5.2 指针与字符数组的区别 195
9.6 指针数组 198
9.7 指针常见错误及解决方法 198
自测题9 200
上机训练题9 203
第10章 结构体、联合体与枚举 205
教学导航 205
知识分布网络 205
10.1 结构体 206
10.1.1 为什么使用结构体 206
10.1.2 结构体类型的定义 206
10.1.3 结构体变量的定义、初始化和引用 208
10.1.4 结构体数组 213
10.1.5 结构体指针 215
10.2 链表 218
10.2.1 链表的概念 218
10.2.2 链表的基本操作 220
10.3 联合体 226
10.3.1 为什么使用联合体 226
10.3.2 联合体类型的定义 227
10.3.3 联合体变量的定义 227
10.3.4 联合体变量的引用 228
10.4 枚举 231
10.5 结构体、联合体常见错误及解决方法 233
自测题 10 235
上机训练题10 238
第11章 编译预处理 240
教学导航 240
知识分布网络 240
11.1 文件包含命令 241
11.1.1 头文件 241
11.1.2 文件包含的形式 241
11.2 宏定义命令 243
11.2.1 不带参数的宏定义 243
11.2.2 带参数的宏定义 245
11.3 条件编译命令 248
11.4 编译预处理常见错误及解决方法 250
自测题11 252
上机训练题11 253
第12章 文件处理 255
教学导航 255
知识分布网络 255
12.1 文件 256
12.1.1 什么是文件 256
12.1.2 文件的种类与存取方式 256
12.1.3 文件指针 257
12.2 文件的打开与关闭 258
12.2.1 文件的打开(fopen函数) 258
12.2.2 文件的关闭(fclose函数) 260
12.3 文件的读写 261
12.3.1 字符读写函数fgetc和fputc 261
12.3.2 字符串读写函数fgets和fputs 263
12.3.3 数据块读写函数fread和fwrite 265
12.3.4 格式化读写函数fscanf和fprintf 266
12.4 文件的定位函数 269
12.5 文件的检测函数 269
12.6 文件处理常见错误及解决方法 270
自测题12 271
上机训练题12 274
阶段性综合训练3 学生成绩管理系统设计 276
附录A 常用字符与ASCII码对照表 290
附录B C语言运算符与优先级汇总表 291
参考文献 292