本书主要讲授C语言程序设计的基本思想、方法和解决实际问题的技巧,力求把概念、知识点与案例相结合,进行案例教学;精心设计了习题与上机实验,突出实用性、可操作性;做到从简单到复杂,结合任务驱动法和建构主义理论教学法组织各个知识点。全书共13章,主要内容包括C语言程序设计概述,数据类型、运算符和表达式,顺序结构,选择结构,循环结构,数组,函数,指针,复合数据类型,文件,位运算,编译预处理,以及C语言的实际应用等。本书可作为高等学校各专业C语言程序设计课程的教材,也可以作为计算机等级考试的辅导教材,还可以作为计算机爱好者的自学用书和各类工程技术人员的参考书。
本书讲授C语言程序设计的基本思想、方法和解决实际问题的技巧,特点是尽可能把概念、知识点与案例相结合,进行案例教学,并且每章都精心设计了习题与上机实验,突出实用性、操作性,每章的安排尽量做到从简单到复杂,在编著教材时尽量结合任务驱动法和建构主义理论教学法组织各个知识点。
前言
C语言是一种的程序设计语言,在世界范围内被普遍使用,是现代最流行的通用程序设计语言之一。它功能丰富,使用灵活,可移植性好,深受广大用户欢迎。C语言的数据类型丰富,既具有高级程序设计语言的优点,又具有低级程序设计语言的特点;既可以用来编写系统程序,又可以用来编写应用程序。
本书通过大量实例系统地介绍了C语言的语法结构。全书共13章。第1章为C语言程序设计概述,主要内容包括C语言的发展历程、C语言的特点、C语言程序的结构及在Visual C++集成环境下运行C程序的步骤与方法。第2章为数据类型、运算符和表达式,主要内容包括C语言的基本数据类型的表示形式、存储格式、相关的运算以及各种表达式。第3章为顺序结构,主要内容包括C语句、数据的输入输出及顺序程序设计。第4章为选择结构,主要内容包括选择结构语句及选择结构程序设计举例。第5章为循环结构,主要内容包括while循环、do…while循环、for循环、循环的嵌套、其他控制语句及循环结构综合实例。第6章为数组,主要内容包括一维数组、二维数组、多维数组介绍、字符数组及数组综合实例。第7章为函数,主要内容包括函数的定义、函数参数和函数的返回值、函数的调用、函数的嵌套调用、函数的递归调用、数组作为函数参数、变量的作用域、变量的存储类别、内部函数和外部函数。第8章为指针,主要内容包括指针的定义、指针变量、指针与函数、指针与数组、指针与字符串、指针数组与多重指针、指针的内存动态分配,以及指针综合实例。第9章为复合数据类型,主要内容包括结构体、用结构指针操作链表、共用体、枚举类型及类型定义。第10章为文件,主要内容包括C文件的概述、文件的打开与关闭、文件的读写及文件的定位与出错检测。第11章为位运算,主要内容包括二进制位运算概述、位运算符及位段。第12章为编译预处理,主要内容包括宏声明、文件包含及条件编译。第13章为C语言的实际应用,主要讲解C语言的程序设计步骤、实际应用中常见模块设计和综合实践实例。
本书文字精练,例题简单,容易理解,配备了各种类型的练习,部分章节结合了任务驱动教学法和建构主义理论组织各知识点,便于学习掌握。对于C语言中重要和较难理解、容易出错的内容,书中均特别加以强调和说明。此外,在介绍C语言的语法结构的同时,也强调了计算机算法和结构化设计方法的概念和作用。本书可作为高等学校C语言程序设计课程的教材,也可作为计算机等级考试的辅导教材。
本书以ANSI标准C语言为背景,有关内容不依赖任何具体的C系统。本书所有的程序实例都在Visual C++6.0中调试过,读者也可以自由选用其他符合ANSI标准的C系统编程环境作为学习工具。
本书由易云飞担任主编,万励、唐鹏和唐凤仙任副主编。全书由易云飞策划、确定框架结构,并统编定稿。本书第1章和第7章由唐凤仙编写,第2章由姜林和马楚奇编写,第3章由黄华、何传波和张彦博编写,第4章和第12章由万励和龚平编写,第5章和第6章由罗富贵、唐鹏和易云飞编写,第8章由杨凤和李海英编写,第9章由黄华和马楚奇编写,第10章由喻飞和唐鹏编写,第11章、第13章由喻飞、何传波和张彦博编写。另外,本书在编写过程中,得到兄弟高校从事计算机教育的老师的关心和帮助,教研室的同事也提出了许多宝贵意见,并得到广西高等教育本科教学改革工程项目(编号2024JGB335)的支持,在此一并表示衷心的感谢。
本书配有电子教案,并提供程序源代码,以方便读者自学,请扫描下载。
限于作者水平,书中难免存在不当之处,恳请广大读者批评指正。
编者2025年7月
目录
第1章C语言程序设计概述1
1.1程序设计的基本概念1
1.1.1程序1
1.1.2程序设计1
1.1.3程序设计语言2
1.2C语言的发展及其特点3
1.2.1C语言的发展历程3
1.2.2C语言的特点4
1.2.3C语言与C++语言交融发展5
1.3C程序的组成与结构5
1.4C程序的上机步骤与方法8
1.4.1有关概念9
1.4.2运行C程序的一般步骤9
1.4.3Visual C++6.0环境运行C程序的步骤10
1.5如何学好C语言13
本章小结14
习题114
第2章数据类型、运算符和表达式16
2.1C语言字符集与标识符17
2.1.1C语言字符集17
2.1.2标识符18
2.2变量和常量19
2.2.1变量19
2.2.2常量19
2.3基本数据类型20
2.3.1C语言的数据类型20
2.3.2整型数据21
2.3.3实型数据24
2.3.4字符型数据25
2.3.5变量赋初值27
2.4运算符和表达式28
2.4.1运算符和表达式概述28
2.4.2算术运算符及算术表达式30
2.4.3关系运算符及关系表达式33
2.4.4逻辑运算符及逻辑表达式34
2.4.5条件运算符及条件表达式36
2.4.6赋值运算符及赋值表达式38
2.4.7逗号运算符及逗号表达式40
2.4.8位运算符41
2.4.9求字节运算符42
2.4.10类型转换43
本章小结44
习题244
第3章顺序结构47
3.1简单顺序语句47
3.1.1表达式语句47
3.1.2空语句48
3.1.3复合语句48
3.2C语言数据的输入输出48
3.2.1字符输入输出函数49
3.2.2格式输入输出51
3.3综合实例59
本章小结62
习题362
第4章选择结构65
4.1if语句65
4.1.1if语句的基本形式66
4.1.2if语句嵌套70
4.2switch语句72
4.3程序应用75
本章小结81
习题482
第5章循环结构84
5.1while循环结构85
5.1.1while语句的基本形式85
5.1.2while语句的应用86
5.2do…while循环结构89
5.2.1do…while语句的基本形式89
5.2.2do…while语句的应用89
5.3for循环结构91
5.3.1for语句的基本形式91
5.3.2for语句的应用92
5.4循环的嵌套96
5.5转向语句100
5.5.1break语句100
5.5.2continue语句102
5.5.3goto语句103
5.6程序应用104
本章小结107
习题5107
第6章数组109
6.1数组的基本概念110
6.2一维数组110
6.2.1一维数组的声明110
6.2.2一维数组的引用111
6.2.3一维数组的初始化112
6.2.4一维数组的应用113
6.3二维数组118
6.3.1二维数组的声明118
6.3.2二维数组的引用119
6.3.3二维数组的初始化120
6.3.4多维数组122
6.3.5二维数组的应用122
6.4字符数组127
6.4.1字符数组的声明127
6.4.2字符数组的引用127
6.4.3字符数组的初始化127
6.4.4字符串变量128
6.4.5字符串变量的输入输出129
6.4.6字符串函数131
6.4.7字符数组的应用133
本章小结136
习题6136
第7章函数139
7.1函数的定义140
7.1.1有参函数的定义140
7.1.2无参函数的定义140
7.1.3空函数的定义141
7.2函数参数和函数的返回值141
7.2.1形式参数和实际参数141
7.2.2函数的返回值143
7.3函数的调用144
7.3.1函数调用的一般形式144
7.3.2函数调用的方式145
7.3.3对被调函数的声明和函数原型145
7.4函数的嵌套调用147
7.5函数的递归调用149
7.6数组作为函数参数152
7.6.1数组元素作为函数实参152
7.6.2一维数组名作为函数参数152
7.6.3二维数组名作为函数参数154
7.7变量的作用域155
7.7.1局部变量155
7.7.2全局变量156
7.7.3变量的优先级158
7.8变量的存储类别159
7.8.1auto变量160
7.8.2用static声明局部变量160
7.8.3register变量162
7.8.4用extern声明外部变量163
7.8.5用static声明外部变量165
7.9内部函数和外部函数166
7.9.1内部函数166
7.9.2外部函数167
本章小结168
习题7169
第8章指针171
8.1指针是什么171
8.2指针变量173
8.2.1指针变量的声明173
8.2.2指针变量的赋值174
8.2.3通过指针访问变量175
8.3指针与函数177
8.3.1指针变量作为函数的参数177
8.3.2指针函数178
8.3.3函数指针179
8.4指针与数组181
8.4.1数组名与数组首地址181
8.4.2指针的运算182
8.4.3通过指针访问一维数组184
8.4.4通过指针访问多维数组187
8.5指针与字符串190
8.5.1通过指针访问字符数组190
8.5.2字符指针作为函数参数传递192
8.6指针数组和多重指针194
8.6.1指针数组194
8.6.2多级指针196
8.6.3带参数的主函数198
8.7指针的内存动态分配200
8.7.1内存的动态分配200
8.7.2void指针类型202
8.8指针的应用举例204
本章小结207
习题8207
第9章复合数据类型212
9.1结构体数据类型213
9.1.1结构体类型的定义213
9.1.2结构体变量的使用214
9.1.3结构体数组220
9.1.4结构体指针223
9.1.5结构体及指向结构体的指针作为函数的参数225
9.1.6结构体综合举例226
9.2C语言动态存储分配228
9.3链表230
9.3.1链表与数组的主要区别230
9.3.2链表的操作231
9.3.3链表应用举例233
9.4共用体的定义和共用体变量的声明234
9.4.1共用体的定义234
9.4.2共用体类型变量234
9.4.3共用体类型变量的引用235
9.5枚举数据类型236
9.5.1枚举类型的定义和枚举变量的声明237
9.5.2枚举类型变量的赋值和使用237
9.6位域239
9.7类型声明240
本章小结241
习题9242
第10章文件247
10.1FILE结构类型248
10.2文件的操作248
10.2.1文件的打开249
10.2.2文件的关闭250
10.2.3文件的读写251
10.2.4文件缓冲区操作258
10.2.5文件的随机读写260
10.2.6文件的检测264
10.3库文件265
本章小结266
习题10266
第11章位运算268
11.1整数的计算机表示268
11.2位运算符270
11.2.1取反运算符~270
11.2.2按位与运算符&271
11.2.3按位或运算符|272
11.2.4按位异或运算符∧272
11.2.5左移运算符<<273
11.2.6右移运算符>>274
11.2.7位运算与赋值运算的结合274
11.2.8位运算举例274
本章小结275
习题11275
第12章编译预处理277
12.1宏声明277
12.1.1不带参数的宏声明277
12.1.2带参数的宏声明280
12.2文件包含286
12.3条件编译289
本章小结293
习题12293
第13章C语言的实际应用296
13.1C语言的程序设计步骤296
13.2实际应用中常见的模块设计297
13.2.1数据结构的设计297
13.2.2选择菜单的设计298
13.2.3数据输入模块的设计300
13.2.4功能模块的设计303
13.3综合实践实例: 企业员工工资管理系统306
本章小结326
附录AASCII编码表327
附录Bctype.h文件中包含的字符函数329
附录Cmath.h文件中包含的数学函数330
附录DC语言运算符优先级详细列表332