本书是国家职业教育微电子专业资源库课程、江苏省在线精品课程“C语言程序设计”的配套教材。本书以职业能力的培养为出发点,突出“以学习者为中心”的教育理念,从C语言的基本概念、基本知识、基本技能以及基本的编程思想入手,以大量实例来加深读者对知识的理解和运用,培养具有科技报国情怀、工匠精神、创新能力的新时代程序设计者。
全书分为3篇:基础篇、提高篇、应用篇。每篇均设置了项目实战环节,用三个典型项目“简易计算器程序设计”“简易学生成绩管理系统设计”“通讯录程序设计”培养学生的工程实践能力。为了方便教学,本书配有微课视频、习题答案等数字化资源,扫描二维码即可查看;本书配套电子课件与源代码,登录化工教育网站(www.cipedu.com.cn)即可免费下载使用。
本书可以作为高等职业院校电子与信息大类各专业C语言程序设计课程的教材,也可作为编程爱好者的参考用书。
第1篇 基础篇
单元一 C 语言概述2
1.1 C 语言的发展史 3
1.2 C 程序的简单实例 4
1.3 C 程序的开发过程 7
1.4 Microsoft Visual C++ 2010 集成开发环境 9
1.4.1 Visual C++ 2010 的安装 9
1.4.2 用Visual C++ 2010 环境运行C 程序 12
习题 17
实验一 C 程序的运行环境和运行过程 19
单元二 C 语言的数据类型、运算符与表达式23
2.1 C 语言的数据类型 24
2.1.1 常量与变量 24
2.1.2 整型数据 26
2.1.3 实型数据 28
2.1.4 字符型数据 29
2.1.5 符号常量与常变量 32
2.1.6 C99标准中新增的变量类型 33
2.2 运算符与表达式 34
2.2.1 算术运算符与算术表达式 34
2.2.2 自增与自减运算符 35
2.2.3 赋值运算符与赋值表达式 36
2.2.4 逗号运算符与逗号表达式 37
2.2.5 位运算符 38
2.2.6 不同数据类型间的转换 40
习题 43
实验二 数据类型、运算符与表达式应用 47
单元三 顺序结构的程序设计51
3.1 程序设计基础知识 52
3.1.1 算法 52
3.1.2 程序的三种基本结构 53
3.2 C 语句分类 54
3.3 数据的输入与输出 55
3.3.1 字符数据的输入与输出 55
3.3.2 格式输入与输出 56
3.4 顺序结构程序设计举例 62
习题 63
实验三 顺序结构程序设计 67
单元四 选择结构的程序设计69
4.1 关系运算符和关系表达式 70
4.1.1 关系运算符 70
4.1.2 关系表达式 70
4.2 逻辑运算符和逻辑表达式 71
4.2.1 逻辑运算符 71
4.2.2 逻辑表达式 72
4.3 if 语句 73
4.3.1 if 语句的三种形式 73
4.3.2 if 语句的嵌套 78
4.4 条件运算符和条件表达式 80
4.5 switch 语句 80
4.6 选择结构程序设计举例 84
习题 85
实验四 选择结构程序设计 93
单元五 循环结构的程序设计97
5.1 while 语句 98
5.2 do-while 语句 100
5.3 for 语句 101
5.4 如何选择循环 103
5.5 循环的嵌套 104
5.6 辅助控制语句break 与continue 105
5.6.1 break 语句 106
5.6.2 continue 语句 107
5.7 循环结构程序设计举例 109
习题 112
实验五 循环结构程序设计 119
【项目实战】简易计算器程序设计123
第2篇 提高篇
单元六 函数128
6.1 函数概述 129
6.1.1 函数的含义 129
6.1.2 函数的分类 129
6.2 函数的定义和调用 130
6.2.1 函数定义 130
6.2.2 函数调用 131
6.2.3 函数声明 133
6.3 函数的嵌套调用和递归调用 134
6.3.1 函数的嵌套调用 134
6.3.2 函数的递归调用 135
6.4 局部变量和全局变量 137
6.4.1 局部变量 137
6.4.2 全局变量 138
6.5 变量的存储方式和生存期 139
6.6 编译预处理 140
6.6.1 文件包含命令 141
6.6.2 宏定义命令 141
6.6.3 条件编译命令 143
习题 145
实验六 用函数实现模块化程序设计 151
单元七 数组155
7.1 一维数组 156
7.1.1 一维数组的定义 156
7.1.2 一维数组元素的引用 157
7.1.3 一维数组的初始化 158
7.1.4 一维数组的应用举例 159
7.2 二维数组 161
7.2.1 二维数组的定义 161
7.2.2 二维数组元素的引用 163
7.2.3 二维数组的初始化 163
7.2.4 二维数组的应用举例 164
7.3 字符数组 166
7.3.1 字符数组的定义 166
7.3.2 字符数组的初始化 166
7.3.3 字符串的输入/输出 167
7.3.4 常用字符串处理函数 169
7.3.5 字符数组的应用举例 171
7.4 数组作为函数参数 173
7.4.1 数组元素作为函数的参数 173
7.4.2 数组名作为函数的参数 174
习题 175
实验七 用数组实现批量数据处理 183
单元八 指针187
8.1 指针与指针变量 188
8.1.1 指针与指针变量的概念 188
8.1.2 指针变量的定义和赋值 188
8.1.3 指针变量的引用 189
8.1.4 指针变量作为函数参数 191
8.2 指针与数组 192
8.2.1 用指针访问一维数组 192
8.2.2 用指针访问二维数组 195
8.2.3 指向数组的指针作为函数参数 198
8.3 指针与字符串 202
8.3.1 用指针访问字符串 202
8.3.2 字符串在函数间的传递方式 204
8.4 返回指针值的函数 204
8.5 指针数组与指向指针的指针 206
8.5.1 指针数组 206
8.5.2 指向指针的指针 209
8.6 指向函数的指针 211
习题 213
实验八 利用指针进行程序设计 219
【项目实战】简易学生成绩管理系统设计223
第3篇 应用篇
单元九 用户自定义的数据类型232
9.1 结构体 233
9.1.1 结构体类型 233
9.1.2 结构体变量 233
9.1.3 结构体变量的引用 234
9.1.4 结构体变量的初始化 236
9.1.5 结构体数组 237
9.1.6 结构体类型的数据在函数间的传递 240
9.2 共用体 242
9.2.1 共用体的定义 242
9.2.2 共用体变量的引用方法 243
9.2.3 共用体变量的赋值 243
9.2.4 共用体的应用 243
9.3 枚举类型 245
9.4 使用typedef 定义新类型名 246
9.5 链表 247
9.5.1 链表概述 247
9.5.2 内存动态分配函数 249
9.5.3 链表的建立 250
9.5.4 链表的输出 251
9.5.5 链表的查找 252
9.5.6 链表的插入 252
9.5.7 链表的删除 254
习题 256
实验九 结构体的应用 261
单元十 文件265
10.1 文件概述 266
10.1.1 数据流 266
10.1.2 缓冲区 266
10.1.3 文件类型 267
10.2 文件的打开与关闭 267
10.2.1 FILE 结构体 267
10.2.2 fopen ( ) 和fclose ( )函数 268
10.3 文件的顺序读写 270
10.3.1 fputc ( ) 和fgetc ( )函数 270
10.3.2 fgets ( ) 和fputs ( )函数 272
10.3.3 fprintf ( ) 和fscanf ( )函数 274
10.3.4 fwrite ( ) 和fread ( )函数 276
10.4 文件的随机读写 278
10.4.1 rewind ( )函数 278
10.4.2 fseek ( )函数 279
10.4.3 ftell ( )函数 281
10.5 文件的检测函数 281
习题 283
实验十 文件处理基础 289
【项目实战】通讯录程序设计291
附录
附录1 常用字符与ASCII 码对照表 297
附录2 C 语言的关键字 298
附录3 C 语言运算符的优先级与结合方向 298
附录4 C 语言的库函数 299
参考文献 304