《C语言程序设计/高等学校计算机基础教育教材》是一本理论与实践相结合、实用性很强的C语言程序设计教材,内容组织注重基础,突出应用,兼顾提高,强化主干知识,弱化细枝末节,注重培养学生分析问题和解决问题的能力。
《C语言程序设计/高等学校计算机基础教育教材》共12章,内容包括C语言概述、C语言基础知识、顺序结构程序设计、选择结构程序设计、循环结构程序设计、编译预处理、数组、函数、指针、用户自定义数据类型、位运算和文件。
《C语言程序设计/高等学校计算机基础教育教材》配有教学课件、例题及习题程序源代码等教学资源。
《C语言程序设计/高等学校计算机基础教育教材》适合作为高等院校理工类专业“程序设计”课程的教材,也可作为程序设计从业人员与爱好者以及参加计算机等级考试人员的自学参考书。
《C语言程序设计/高等学校计算机基础教育教材》以培养学生的逻辑思维能力和实践应用能力为出发点,从大量实例入手,采用通俗易懂的语言由浅入深地对C语言程序设计内容进行全面讲述,包括C语言的基础知识、结构化程序设计的三种结构、数组、函数、指针、用户自定义数据类型、位运算、文件等。
精选115道有普遍性和代表性的案例,先分析问题、讲解解题思路,然后再编写程序,最后对程序中关键内容、注意事项进行解释,让读者在潜移默化中掌握解题技巧、编程方法,提高分析问题、解决问题的能力。
结构新颖。每节先通过“学一学”介绍知识点,然后引入案例“试一试”巩固知识点,最后借助“练一练”来验证知识点掌握情况。通过这种结构,让读者更容易掌握章节内容,并进行熟练应用。
配有教学课件、例题及习题程序源代码等教学资源。
前 言
C语言是现代最流行的通用程序设计语言之一。它既具有高级程序设计语言的优点,又具有低级程序设计语言的特点;既可以用来编写系统程序,又可以用来编写应用程序。
本书以培养学生的逻辑思维能力和实践应用能力为出发点,从大量实例入手,采用通俗易懂的语言由浅入深地对C语言程序设计的内容进行全面讲述,包括C语言的基础知识、结构化程序设计的三种结构、数组、函数、指针、用户自定义数据类型、位运算、文件等。
全书在内容组织上具有以下特色:
●结构新颖。每节先通过“学一学”介绍知识点,然后引入案例“试一试”巩固知识点,最后借助“练一练”验证知识点掌握情况。通过这种结构,让读者更容易掌握章节内容并进行熟练应用。
●思路清晰。针对“试一试”部分精选的例题,先分析问题,讲解解题思路,然后再编写程序,最后对程序中的关键内容、注意事项进行注解,让读者在潜移默化中掌握解题技巧和编程方法。
●案例丰富。主要章最后精选了大量有普遍性和代表性的案例,并且详细介绍了每个案例程序的分析和设计过程。通过对这些案例程序的讲解,读者能够综合应用所学知识解决实际问题,不断提高分析问题和解决问题的能力。
本书例题都是经过编者精心筛选的,所有例题程序都已在Visual C++ 2010环境下运行通过。另外,本书配有电子教案并提供例题源程序及课后习题参考答案,以方便读者自学。
本书由马鞍山学院王英明担任主编并统稿,张露露、蒋林、吴志坚担任副主编。在本书编写的过程中,得到了学院同事、家人的支持与理解,以及清华大学出版社的帮助,在此对他们表示衷心的感谢!
由于编者水平有限,本书难免存在疏漏和不妥之处,敬请读者批评指正。
编者2021年5月
王英明,男,硕士研究生,2008年毕业于南京理工大学,6年企业研发经验,现任教于安徽工业大学工商学院,讲师,省级教坛新秀,主持省级自然科学项目一项,曾多次指导学生参加省级、国j级学科竞赛并获奖。
目 录
第1章C语言概述1
1.1程序与程序设计语言1
1.1.1程序1
1.1.2程序设计语言1
1.2C语言简介2
1.2.1C语言的产生与发展2
1.2.2C语言的特点2
1.3C语言程序的结构3
1.3.1最简单的C语言程序举例3
1.3.2C语言程序的基本结构3
1.4C语言编程环境4
1.4.1运行C程序的步骤4
1.4.2Visual C++6.0集成开发环境介绍5
1.4.3Visual C++2010 Express集成开发环境介绍9
1.5算法14
1.5.1什么是算法14
1.5.2算法的特征14
1.5.3算法的描述方法15
1.6典型题解17
1.7本章小结18
习题118
第2章C语言基础知识20
2.1数据类型21
2.1.1整型数据21
2.1.2字符型数据22
2.1.3浮点型数据22
2.2常量和变量24
2.2.1常量24
2.2.2变量27
2.3运算符和表达式29
2.3.1C运算符29
2.3.2赋值运算符30
2.3.3算术运算符32
C语言程序设计目录2.3.4关系运算符34
2.3.5逻辑运算符35
2.3.6逗号运算符38
2.3.7条件运算符39
2.4类型转换39
2.4.1自动类型转换40
2.4.2强制类型转换41
2.5典型题解42
2.6本章小结42
习题243
第3章顺序结构程序设计47
3.1C语句概述47
3.2格式化输入输出函数48
3.2.1格式化输出函数printf48
3.2.2格式化输入函数scanf51
3.3字符数据的输入输出54
3.3.1putchar函数55
3.3.2getchar函数55
3.4顺序结构程序设计56
3.5典型题解58
3.6本章小结58
习题358
第4章选择结构程序设计63
4.1if语句63
4.1.1简单if语句63
4.1.2双分支if语句65
4.1.3多分支if语句66
4.1.4if语句的嵌套68
4.2switch语句70
4.3典型题解74
4.4本章小结77
习题477
第5章循环结构程序设计83
5.1for循环83
5.2while循环86
5.3do…while循环88
5.4循环的嵌套90
5.5break语句和continue语句92
5.5.1用break语句提前终止循环92
5.5.2用continue语句提前终止循环94
5.6典型题解96
5.7本章小结100
习题5101
第6章编译预处理113
6.1宏定义113
6.1.1不带参数的宏定义113
6.1.2带参数的宏定义115
6.2文件包含117
6.3条件编译119
6.4典型题解120
6.5本章小结121
习题6121
第7章数组125
7.1一维数组126
7.1.1一维数组的定义126
7.1.2一维数组元素的引用127
7.1.3一维数组的遍历127
7.1.4一维数组的初始化129
7.1.5一维数组的应用130
7.1.6典型题解134
7.2二维数组136
7.2.1二维数组的定义137
7.2.2二维数组元素的引用138
7.2.3二维数组的遍历138
7.2.4二维数组的初始化140
7.2.5二维数组的应用141
7.2.6典型题解147
7.3字符数组149
7.3.1字符数组的定义及初始化149
7.3.2字符串和字符串结束标志150
7.3.3字符数组的引用151
7.3.4字符数组的输入输出152
7.3.5字符串处理函数153
7.3.6字符数组的应用157
7.3.7典型题解159
7.4本章小结161
习题7162
第8章函数169
8.1函数概述169
8.1.1库函数的使用169
8.1.2函数的定义170
8.2调用函数171
8.2.1函数调用的形式171
8.2.2函数的返回值172
8.2.3函数调用时的数据传递172
8.3函数的声明175
8.4数组作为函数参数177
8.4.1数组元素作为函数参数177
8.4.2数组名作为函数参数179
8.5函数的嵌套调用与递归调用182
8.6变量的作用域185
8.6.1局部变量185
8.6.2全局变量186
8.7变量的存储方式和生存期187
8.7.1动态存储方式与静态存储方式187
8.7.2局部变量的存储类别188
8.7.3全局变量的存储类别189
8.8内部函数和外部函数190
8.8.1内部函数190
8.8.2外部函数190
8.9典型题解191
8.10本章小结195
习题8196
第9章指针203
9.1指针概述203
9.2指针变量203
9.2.1指针变量的定义204
9.2.2与指针运算相关的两个运算符205
9.2.3指针变量作为函数参数206
9.3指针与数组208
9.3.1指针与一维数组208
9.3.2指针与二维数组213
9.3.3指针数组218
9.4指针与字符串220
9.4.1字符串引用方式220
9.4.2使用字符指针处理字符串222
9.5指针与函数224
9.5.1函数指针224
9.5.2指针函数226
9.5.3指针数组作为main()函数的形参229
9.6指向指针的指针232
9.7void指针与动态内存分配234
9.8典型题解237
9.9本章小结240
习题9242
第10章用户自定义数据类型251
10.1结构体251
10.1.1结构体类型的定义251
10.1.2结构体类型变量的定义252
10.1.3类型别名254
10.1.4结构体类型变量的成员访问255
10.1.5结构体类型变量的初始化257
10.1.6结构体与函数257
10.2共用体261
10.2.1共用体类型的定义261
10.2.2共用体类型变量的定义和成员访问262
10.2.3共用体类型的应用264
10.3枚举265
10.3.1枚举类型的定义266
10.3.2枚举类型变量的定义与赋值266
10.3.3枚举类型的应用267
10.4单链表269
10.4.1单链表的定义269
10.4.2单链表结构的定义270
10.4.3单链表的基本操作270
10.5典型题解276
10.6本章小结278
习题10279
第11章位运算287
11.1位运算与位运算符287
11.1.1按位与运算288
11.1.2按位或运算289
11.1.3按位异或运算289
11.1.4按位取反运算290
11.1.5左移运算291
11.1.6右移运算291
11.1.7位赋值运算符292
11.2典型题解292
11.3本章小结295
习题11296
第12章文件300
12.1文件概述300
12.2文件指针301
12.3文件的打开与关闭301
12.3.1文件打开函数fopen301
12.3.2文件关闭函数fclose303
12.4文件的读写304
12.4.1字符读写函数fgetc和fputc304
12.4.2字符串读写函数fgets和fputs307
12.4.3格式化读写函数fscanf和fprintf310
12.4.4数据块读写函数fread和fwrite312
12.5文件的定位314
12.5.1文件位置指针及其定位314
12.5.2文件的随机读写315
12.6文件读写的出错检测316
12.7典型题解316
12.8本章小结318
习题12318
附录AC语言运算符的优先级323
附录BC语言的保留字与关键字324
附录CC语言常用库函数325
附录D标准ASCII码331
参考文献333