本书是按照普通高等院校大学计算机程序设计课程的培养目标和基本要求,由多年从事计算机基础教学,具有教学经验的教师编写。全书共分10章,系统地介绍程序设计概述、数据类型、顺序结构程序设计、选择结构程序设计、循环结构程序设计、数组、函数、指针、结构体和共用体、文件等内容。
本书内容丰富翔实、语言通俗易懂,通过一些有趣的案例激发读者的学习兴趣,通过一些实用案例讲解知识点,把一些繁杂的知识点分散到不同的示例中讲解并应用,通过几个典型案例贯穿整个知识体系。
本书适合作为高等院校及高职高专院校C语言程序设计课程的教材,也可作为计算机各类培训班的教材或计算机及相关工作的科技人员,计算机爱好者及各类自学人员的参考。
C语言程序设计C语言自1972年诞生以来,以其灵活和实用的特点得到了广大用户的喜爱,迅速发展成为一种应用广泛的高级语言。从网站后台到底层操作系统,从多媒体应用到大型网络游戏,均可使用C 语言来开发。在工业领域,C语言也是首选的系统语言,特别是图形处理和底层应用方面目前使用更为广泛。此外,C语言是一门结构化程序设计语言,有利于学生掌握程序设计的思想,因此,C语言已成为目前高校学生掌握程序设计的一门基础性语言。
本书既注重概念清晰,使读者建立起对程序设计和C语言的清晰理解,又引导学生学以致用,使学生在较短的时间内初步学会用C语言编写程序,具有初步的编程知识和能力。本书的讲解是不断提出问题,解决问题,再进一步提出问题,并逐步解决问题的过程。使学生养成由简到繁、逐步求精的编程习惯。
全书共分10章,第1章介绍计算机与程序设计语言基础知识、C语言的发展和特点、C语言的应用等;第2章详细介绍C语言中常用的数据类型,即整型、实型和字符型等;第3章介绍赋值运算符与赋值表达式、算术运算符与算术表达式、宏定义与宏替换等,重点介绍了数据的格式化输入与输出;第4章介绍算法及其描述方法、关系运算符与关系表达式、逻辑运算符与逻辑表达式、条件运算符与条件表达式、单分支、双分支和多分支选择结构;第5章详细介绍while循环、dowhile循环和for循环三种循环结构语句的应用,以及C语言中流程转移的控制语句;第6章介绍一维数组、二维数组、字符数组的定义、引用和初始化等;第7章介绍函数的概念、函数声明、函数定义、函数调用、数组作为函数参数、变量的作用域和存储类型等;第8章介绍指针的概念、指针变量的定义、指针与数组、指针与函数、指针的高级应用等;第9章介绍结构体类型和结构体变量、结构体数组、结构体指针、链表、共用体等;第10章介绍文件的概念、分类、文件的打开与关闭、文件的读写操作等。
为了方便广大师生的教学和学习,本书还提供了配套的电子教案和有关的源程序文件。
本书由孙改平、王德志任主编,吴静、盛建瓴、王晓菊任副主编。第1、4章由王晓菊编写;第2、3章由盛建瓴编写;第5、9章由吴静编写;第6、7章由孙改平编写;第8、10章、附录由王德志编写,最后由孙改平、王德志进行统稿。在本书编写过程中得到了各级领导的关心和大力支持,许多C语言程序设计课程的任课教师郭红、鞠宏军、朱冬梅、陈超、郭晓欣、万雪芬、刘明艳、吴晓丹、乔良等为本书提出了宝贵的意见和建议,在此一并表示感谢。
在教材的编写过程中,参考了国内外的相关研究成果和著作,部分已列入本书后面的参考文献中,在此感谢所涉及的所有专家和研究人员。尽管作者们做出了种种努力,付出了许多劳动,但由于作者的水平有限,时间仓促,书中不妥或疏漏之处在所难免,恳请使用本书的广大同行和读者批评与指正,对教材提出宝贵意见,帮助我们不断地完善本教程。
编者2016年2月
第1章程序设计概述1
1.1计算机与程序设计语言1
1.1.1机器语言1
1.1.2汇编语言2
1.1.3高级语言2
1.2C语言的发展和特点4
1.2.1C语言的发展4
1.2.2C语言的特点5
1.3C语言的应用6
1.3.1简单的C语言程序实例6
1.3.2C语言程序的结构9
1.4程序设计语言的工作原理与操作环境11
1.4.1工作原理11
1.4.2操作环境13
习题17
第2章C数据类型18
2.1C语言的数据类型18
2.2常量和变量19
2.2.1标识符19
2.2.2常量和符号常量19
2.2.3变量20
2.3整型数据21
2.3.1整型常量21
2.3.2整型数据在内存中的存储形式22
2.3.3整型变量23
2.3.4整型常量的类型25
2.4实型数据26
2.4.1实型常量26
2.4.2实型数据在内存中的存储形式26C语言程序设计目录2.4.3实型变量27
2.5字符型数据28
2.5.1字符常量28
2.5.2字符变量30
2.5.3字符数据在内存中的存储形式及使用方法30
2.5.4字符串常量32
习题33
第3章顺序结构程序设计35
3.1赋值运算符与赋值表达式35
3.1.1赋值运算符35
3.1.2赋值表达式36
3.1.3赋值语句36
3.1.4不同数据类型间的赋值规则37
3.2算术运算符与算术表达式39
3.2.1算术运算符39
3.2.2算术表达式39
3.2.3运算符的优先级和结合性40
3.2.4自增自减运算符40
3.2.5算术运算中数据类型转换规则42
3.2.6sizeof运算符、复合赋值运算符43
3.3数据的格式化输出44
3.3.1整数的输出46
3.3.2实数的输出50
3.3.3字符和字符串的输出51
3.3.4格式化输出总结52
3.4数据的格式化输入54
3.5单个字符的输入和输出59
3.5.1单个字符输出函数putchar59
3.5.2单个字符输入函数getchar60
3.6宏定义与宏替换60
3.6.1无参宏定义61
3.6.2带参宏定义63
3.7程序举例64
习题66
第4章选择结构程序设计68
4.1算法及其描述方法68
4.1.1算法的概念68
4.1.2算法的表示69
4.2关系运算符与关系表达式77
4.2.1关系运算符77
4.2.2关系表达式78
4.3逻辑运算符与逻辑表达式79
4.3.1逻辑运算符79
4.3.2逻辑表达式79
4.4单分支与双分支结构81
4.4.1单分支结构81
4.4.2双分支结构83
4.4.3if语句的嵌套85
4.5条件运算符与条件表达式88
4.6多分支结构90
4.6.1多分支结构的条件语句90
4.6.2多分支结构的开关语句92
4.7程序举例96
习题103
第5章循环结构程序设计106
5.1循环结构程序的概念106
5.2while循环107
5.3dowhile循环109
5.4逗号表达式113
5.5for循环114
5.6循环的嵌套120
5.7流程的转移控制123
5.7.1goto语句123
5.7.2break语句125
5.7.3continue语句126
5.8几种循环的比较128
5.9程序举例128
习题132
第6章数组134
6.1数组的概念134
6.2一维数组136
6.2.1一维数组的定义136
6.2.2一维数组的引用137
6.2.3一维数组的初始化139
6.3二维数组146
6.3.1二维数组的定义146
6.3.2二维数组的引用147
6.3.3二维数组的初始化148
6.4字符数组150
6.4.1字符数组与字符串151
6.4.2字符数组的定义与初始化151
6.4.3字符数组的输入与输出153
6.4.4字符串处理函数157
6.5程序举例161
习题167
第7章函数171
7.1函数的概念171
7.2函数定义与返回值173
7.2.1函数类型173
7.2.2函数定义175
7.3函数调用176
7.3.1函数调用的形式176
7.3.2函数调用时的参数传递177
7.4函数声明178
7.5函数的嵌套与递归调用185
7.5.1函数的嵌套调用185
7.5.2函数的递归调用188
7.6数组作为函数参数190
7.6.1数组元素作为函数参数190
7.6.2一维数组作为函数参数192
7.6.3二维数组作为函数参数194
7.7变量的作用域和存储类型198
7.7.1变量的作用域198
7.7.2变量的存储类型202
7.8编译预处理205
7.9综合实例208
习题222
第8章指针227
8.1指针的概念227
8.2指针变量的定义229
8.2.1定义指针变量229
8.2.2引用指针变量230
8.2.3指针变量作为函数参数233
8.3指针与数组238
8.3.1数组元素的指针238
8.3.2一维数组的地址和指针239
8.3.3二维数组的地址和指针247
8.4字符串和指针251
8.4.1使用字符指针变量访问字符串常量251
8.4.2使用字符指针变量访问字符串变量254
8.4.3字符指针变量与字符数组的区别255
8.5指针与函数259
8.5.1指向函数的指针259
8.5.2返回指针的函数261
8.6指针的高级应用263
8.6.1指针数组263
8.6.2main函数的命令行参数265
8.6.3动态内存分配266
习题273
第9章结构体和共用体277
9.1结构体类型和结构体变量277
9.1.1结构体类型的定义277
9.1.2结构体变量的定义279
9.1.3结构体变量的引用282
9.1.4结构体变量的初始化285
9.1.5结构体变量的举例286
9.2结构体数组288
9.2.1结构体数组的定义288
9.2.2结构体数组的引用290
9.2.3结构体数组的初始化290
9.2.4结构体数组的举例292
9.3结构体指针293
9.3.1指向结构体变量的指针293
9.3.2指向结构体数组的指针295
9.4链表297
9.4.1链表概念297
9.4.2链表相关操作299
9.5共用体316
9.5.1共用体类型和共用体变量的定义316
9.5.2共用体变量的引用和初始化319
9.5.3共用体变量的举例322
9.6枚举类型323
9.7用typedef定义新类型名325
习题327
第10章文件329
10.1文件概述329
10.1.1文件的概念329
10.1.2文件的分类330
10.1.3文件指针330
10.2文件的打开与关闭331
10.2.1文件的打开331
10.2.2文件的关闭333
10.2.3文件的检测334
10.3文件的读写操作335
10.3.1字符读写函数335
10.3.2字符串读写函数339
10.3.3格式化读写函数341
10.3.4数据块读写函数346
10.4文件的随机读写350
习题355
附录AC语言中的关键字360
附录BC运算符的优先级与结合性362
附录C常用字符与ASCII值对照表363
附录D常用的ANSI C标准库函数365
参考文献372