本书共分10章, 内容包括C语言的基本结构、数据类型及其运算符和表达式、C程序的3种控制结构、数组、函数、指针、结构体和文件。第10章通过一款智能充电机的编程实例, 介绍了C语言在单片机编程中的具体应用。
C语言是国内外广泛使用的计算机程序设计语言,是高等院校理工科相关专业重要的专业基础课程。C语言功能丰富、使用灵活方便,程序执行效率高,可移植性好,既可以用来编写系统程序,又可以用来编写应用程序,因而越来越受到人们的欢迎。
本书是根据教育部《关于进一步加强高等学校计算机基础教学的意见》的教学基本要求和高等院校计算机基础教学改革的需要,结合作者多年讲授C语言程序设计课程的教学经验编写而成。
本书的教学目标是培养学生的逻辑思维能力和程序设计能力,因此在内容编排上力求重点突出、难点分散,在语言描述上注重概念清晰、通俗易懂,并通过大量的例题分析将理论知识与实践相结合,以期逐步提高学生编写程序的能力。
本书是在第1版的基础上将有些内容进行了整合。从原来的12章改成10章,内容安排如下。
第1章主要介绍C程序的基本结构、C程序的基本要素以及C程序的集成开发环境。
第2章主要介绍运算符和表达式、C语言的基本语句、输入与输出函数以及算法的概念。
第3章主要介绍关系运算符、逻辑运算符以及选择结构控制语句。
第4章主要介绍循环控制语句、循环的嵌套。
第5章主要介绍一维数组、二维数组和字符串。
第6章主要介绍结构化与模块化程序设计思想、函数的定义与调用、变量的作用域和存储类别。
第7章主要介绍指针的概念、指针变量的定义以及指针与数组、指针与函数的关系。
第8章主要介绍结构体、链表、共用体的定义及应用。
第9章主要介绍数据文件的基本操作函数和使用规则。
第10章通过一款智能充电机的编程实例,介绍C语言在单片机编程中的具体应用。
由于C语言程序设计是一门理论性、实践性均较强的课程,为了帮助学生掌握有关的基本概念和程序设计方法,每章后面均精心设计了难易适当、题型丰富的习题供学生课后练习。每章的实验题均包含选择题、填空题和编程题,可以使学生在反复实践中提高设计程序和调试程序的能力。本书有对应的课程网站和微信订阅号,可以观看部分教学视频、算法动画、学习中会遇到的常见问题解答和计算机二级考试的相关资料。
本书由上海电机学院的吉顺如主编,计春雷主审。第2版编写分工:第1章由吉顺如、任远编写;第2、5、9章及附录由吉顺如编写;第3章由陶恂编写;第4章由张艳编写;第6章由任远编写;第7、8章由王中华、吉顺如编写;第10章由曾祥绪编写。全书由吉顺如统稿。
在本书的编写过程中得到许多教师的帮助,在此表示诚挚的谢意。由于编者水平有限,书中不足之处在所难免,恳请读者批评指正。
编者
2017年3月
第1章C语言程序设计概述1
1.1C程序简介1
1.2C程序的结构与书写格式3
1.3C语言的特点4
1.4C程序的开发过程5
1.5C程序的基本要素6
1.5.1标识符6
1.5.2数据类型、常量和变量7
1.6C程序的集成开发环境11
1.6.1DevC++11
1.6.2Visual Studio 201517
1.7习题27
1.8实验1熟悉C程序编程环境28
第2章顺序结构程序设计31
2.1运算符和表达式31
2.1.1算术运算符和算术表达式31
2.1.2赋值运算符和赋值表达式32
2.1.3逗号运算符和逗号表达式33
2.1.4强制类型转换运算符34
2.1.5sizeof运算符34
2.1.6不同数据类型的数据间的混合运算35
2.1.7自增、自减运算符36
2.1.8位运算符36
2.2C语言的基本语句37
2.3输入与输出函数38
2.3.1格式输入/输出函数38
2.3.2字符输入/输出函数43
2.4算法简介44
2.4.1算法的概念44目录2.4.2算法的特性45
2.4.3算法的表示46
2.5应用举例48
2.6习题51
2.7实验2顺序结构程序设计53
第3章选择结构程序设计57
3.1关系运算符和逻辑运算符57
3.1.1关系运算符57
3.1.2逻辑运算符58
3.2选择结构控制语句59
3.2.1if语句59
3.2.2条件运算符62
3.2.3switch语句63
3.3应用举例65
3.4习题71
3.5实验3选择结构程序设计75
第4章循环结构程序设计79
4.1循环结构控制语句79
4.1.1while循环语句79
4.1.2do...while循环语句80
4.1.3for循环语句82
4.1.4break语句和continue语句83
4.2循环的嵌套85
4.3应用举例86
4.4习题90
4.5实验4循环结构程序设计95
第5章数组99
5.1一维数组99
5.1.1一维数组的定义和引用99
5.1.2一维数组的初始化100
5.1.3一维数组的应用举例101
5.2二维数组104
5.2.1二维数组的定义和引用104
5.2.2二维数组的初始化105
5.2.3二维数组的应用举例106
5.3字符串109
5.3.1字符串与字符数组109
5.3.2字符串处理函数111
5.4应用举例115
5.5习题124
5.6实验5数组程序设计128
第6章函数132
6.1结构化与模块化程序设计思想132
6.2函数的定义与调用134
6.2.1函数的定义134
6.2.2函数的声明135
6.2.3函数的调用136
6.2.4函数的参数和返回值138
6.2.5数组名作函数参数139
6.3递归函数141
6.4变量的作用域和存储类别144
6.4.1变量的作用域144
6.4.2变量的存储类别146
6.5函数与带参数的宏148
6.6应用举例149
6.7习题154
6.8实验6函数程序设计157
第7章指针163
7.1指针概述163
7.1.1指针的概念163
7.1.2指针变量的定义165
7.1.3指针变量的引用165
7.2指针与数组169
7.2.1通过指针引用数组元素170
7.2.2指针与数组名174
7.3指针与字符串176
7.4指针与函数178
7.4.1指针作为函数参数178
7.4.2返回指针值的函数182
7.4.3指向函数的指针184
7.5多级指针186
7.5.1指向指针的指针187
7.5.2指针数组188
7.5.3指向多维数组行的指针193
7.6应用举例196
7.7指针小结198
7.8习题199
7.9实验7指针程序设计204
第8章结构体与共用体208
8.1结构体概述208
8.1.1结构体变量的定义和初始化208
8.1.2结构体成员的引用210
8.2结构体数组212
8.3指向结构体的指针214
8.4结构体与函数218
8.5链表219
8.5.1动态内存管理220
8.5.2链表概述222
8.5.3链表的相关操作223
8.6共用体概述230
8.6.1共用体变量的定义和初始化230
8.6.2共用体变量的引用231
8.7类型定义符typedef233
8.8应用举例236
8.9习题239
8.10实验8结构体与链表程序设计245
第9章文件250
9.1文件概述250
9.2常用文件操作函数251
9.2.1文件的打开与关闭251
9.2.2文件的读/写253
9.2.3文件的定位260
9.2.4文件读/写中的检测262
9.3应用举例262
9.4习题268
9.5实验9文件程序设计272
第10章单片机C语言编程实例277
10.1功能要求277
10.2硬件线路277
10.3编程分解279
10.3.1充电控制279
10.3.2时钟中断280
10.3.3端口操作281
10.4单片机C语言编程小结282
10.5智能充电机完整源代码283
附录295
附录A常用字符与ASCII代码对照表295
附录B编译预处理指令296
附录C运算符和结合性301
附录DC库函数302
附录EC程序中常见错误分析307
参考文献315