C语言程序设计(面向系统能力培养大学计算机类专业教材)
- ISBN:9787302581505
- 装帧:平装
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:374
- 出版时间:2021-08-01
- 条形码:9787302581505 ; 978-7-302-58150-5
本书特色
"《C语言程序设计》作者长期在华中科技大学计算机学院从事程序设计课程的教学和研究。本书的编写既参考了国内外多本著作,也融入了作者多年从事教学和科研的实践经验和体会,同时还吸收了同行专家的意见和建议。本书具有以下特点: (1)教材内容突出计算机专业的学科特点。计算机专业学生能进行系统级软件设计非常重要,因此本书力求解决本专业的基础性问题,突出介绍位运算、各类指针、字段结构等支持系统级编程的语言成分,增加C的字符串库函数设计、数字串与数之间的转换函数设计、函数库设计、模拟串行进位的任意位数超长数据的加法运算、以函数指针为参数的函数设计等内容。 (2)结合程序实例引入各种常用算法。在介绍表达式、流程控制、函数、数组等C语言知识的同时,通过实例融入穷举法、递推法、有限状态机、筛法、蒙特卡罗法、排序、查找、递归、分治、高精度计算等算法的实现,目的是让本课程教学覆盖程序设计涉及的基本算法,训练算法分析和实现的能力,为灵活应用C语言分析解决实际工程问题打下扎实基础。 (3)兼顾后继数据结构课程的学习和引导。从编程使用的角度融入动态数据结构,学习用C语言来描述和实现这些数据结构。给学生打下扎实的程序设计所需的数据结构基础,加强深入学习后续专业课的兴趣。 (4)深入介绍C语言的各类数据类型。数据类型是程序设计语言的重要组成部分,理解数据类型和它的作用对于学好程序设计语言和掌握程序设计方法非常重要。为此,除基本数据类型,数组、结构、联合、字段结构等构造类型外,本书还突出介绍各类指针、指针与数组的关系、复杂声明等难度较高的数据类型。 (5)适当强调推理,采用逐步推导、归纳和比较的方法解释复杂类型及其声明,使学生更容易理解和掌握。目的是培养抽象思维能力、形式化的分析推理能力,以及准确的理解C的语法语义的能力。 (6)体现了近期新C语言标准ISO/IEC 9899:2011中新增语言成分。同时,在书中尽可能直接引用近期新C语言标准规定的语法和语义。 学习和掌握C语言有效的方法是实践。作者已出版《C语言程序设计典型题解与实验指导》(清华大学出版社)。此书依据本教材各部分的知识点设计了丰富的例题并进行了详细分析和解答,介绍了主流的C语言程序开发环境的上机操作过程和程序调试方法,针对本教材各章节的主要内容,按递进的方式设计了多元化的上机实践内容,是学习C语言程序设计的一本很有帮助的辅助教材。 "
内容简介
《C语言程序设计》依据C11标准和用C语言进行程序设计所涉及的知识结构,全面系统地阐述C语言的语法和语义,同时精心提炼一些算法实例进行分析和编程实现,培养学生的程序设计能力。 本书共11章,内容包括概论、C语言的基本元素、标准输入输出、程序的语句及流程控制、函数、编译预处理、数组、指针、结构与联合、文件、用户自定义库,尤其对C语言的重点、难点和特色之处,如位运算、递归函数、指针的用法、复杂指针的应用、字段结构、结构指针等进行了详细介绍。本书概念清楚,叙述翔实,内容新颖实用,实例典型丰富,要点清晰明了。既考虑初学者的需求,又突出计算机类专业的教学要求。 本书适合作为高等学校计算机、通信、电子、自动化等相关专业“程序设计”课程的教材,也可作为研究生入学考试C语言与程序设计的参考书,还可供软件开发工程师和广大科技人员自学参考。
目录
1.1基础知识1
1.1.1为计算而生1
1.1.2计算机系统概述4
1.1.3程序设计语言5
1.2问题求解和程序设计7
1.2.1问题求解过程7
1.2.2算法和程序8
1.3C语言的发展11
1.3.1C语言的发展过程11
1.3.2C语言的标准化12
1.3.3C语言的特征13
1.4C语言编程初步14
1.4.1C编程的典型过程14
1.4.2**个程序: 编程从这里开始15
本章小结21
习题121
第2章C语言的基本元素22
2.1字符集及词法元素22
2.1.1字符集22
2.1.2词法元素22
2.2关键字和标识符23
2.2.1关键字23
2.2.2标识符23
2.3基本数据类型24
2.3.1数据类型概述24
2.3.2char类型25
2.3.3整型类型26
2.3.4浮点类型27
2.3.5C99新增数据类型29
2.4常量与变量31
2.4.1整型常量32
2.4.2浮点型常量33
2.4.3字符常量33
2.4.4字符串常量35
2.4.5符号常量37
2.4.6变量声明38
2.5运算符和表达式39
2.5.1运算符概述39
2.5.2算术运算41
2.5.3关系运算42
2.5.4逻辑运算43
2.5.5自增和自减运算44
2.5.6赋值运算47
2.5.7条件运算48
2.5.8逗号运算49
2.5.9sizeof运算51
2.6位运算51
2.6.1整数在机内的表示51
2.6.2位逻辑运算52
2.6.3移位运算54
2.6.4位运算的应用55
2.7类型转换57
2.7.1类型转换的规则58
2.7.2类型转换的方法59
2.8枚举类型60
2.8.1枚举类型的声明60
2.8.2用枚举类型定义符号常量61
2.8.3枚举变量的定义61
本章小结63
习题263
第3章格式化输入与输出66
3.1字符输入与输出66
3.1.1字符输入函数getchar66
3.1.2字符输出函数putchar67
3.2格式化输入与输出69
3.2.1格式输出函数printf69
3.2.2格式输入函数scanf73
本章小结79
习题379
第4章程序的语句及流程控制82
4.1语句分类82
4.2表达式语句82
4.3复合语句83
4.4条件语句85
4.4.1if语句85
4.4.2switch语句88
4.5循环语句91
4.5.1while语句91
4.5.2dowhile语句96
4.5.3for语句100
4.5.4循环语句小结104
4.6转移语句104
4.6.1break语句104
4.6.2continue语句106
4.6.3return语句107
4.6.4goto语句和标号语句107
4.7程序设计实例110
4.7.1嵌套循环110
4.7.2枚举114
4.7.3筛法116
4.7.4递推117
本章小结118
习题4118
第5章函数120
5.1模块化程序设计120
5.1.1函数与模块化编程120
5.1.2蒙特卡洛模拟: 猜数程序122
5.1.3C程序的一般结构125
5.2自定义函数125
5.2.1函数定义125
5.2.2函数原型128
5.2.3函数调用130
5.3变量的存储类型132
5.3.1作用域与生存期132
5.3.2自动变量133
5.3.3外部变量134
5.3.4静态变量137
5.3.5寄存器变量140
5.4递归140
5.4.1递归概述140
5.4.2递归算法分析142
5.4.3递归函数设计143
5.4.4经典问题的递归程序设计144
5.4.5分治法与快速排序147
5.5多文件的C程序148
5.5.1函数的存储类型149
5.5.2多文件编程149
5.6参数数目可变的函数151
5.7C11增加的属性152
5.7.1函数修饰符_Noreturn152
5.7.2存储类型_Thread_local153
本章小结154
习题5154
第6章编译预处理157
6.1文件包含157
6.2宏定义158
6.2.1无参宏定义158
6.2.2带参数的宏定义159
6.2.3取消宏定义162
6.3条件编译162
6.3.1#if指令162
6.3.2#ifdef指令164
6.3.3#ifndef指令165
6.3.4defined运算符166
6.4断言166
6.4.1宏assert166
6.4.2静态断言167
6.5宏的高级用法167
6.5.1宏操作符#和##168
6.5.2可变参数宏168
6.5.3通用类型宏169
6.5.4预定义宏170
本章小结171
习题6171
第7章数组173
7.1数组概述173
7.2一维数组173
7.2.1一维数组的声明173
7.2.2一维数组元素的引用和下标175
7.2.3一维数组的运算176
7.2.4一维数组的逻辑结构和存储结构176
7.2.5初始化数组178
7.2.6用const、extern、static声明数组182
7.2.7一维数组作为函数的形参182
7.3二维数组185
7.3.1二维数组的定义186
7.3.2二维数组元素的引用和数组运算186
7.3.3二维数组的逻辑结构和存储结构187
7.3.4二维数组的初始化188
7.3.5二维数组作为函数的形参190
7.4n维数组191
7.4.1n维数组的定义191
7.4.2n维数组的使用192
7.4.3n维数组元素的引用和使用192
7.4.4n维数组的存储结构193
7.4.5n维数组的初始化194
7.4.6n维数组作为函数的参数195
7.5字符数组和字符串196
7.5.1字符数组196
7.5.2字符串196
7.5.3字符数组的初始化197
7.5.4字符数组的使用197
7.5.5字符串处理函数200
7.5.6二维字符数组和字符串数组208
7.6基于数组的应用210
7.6.1冒泡排序211
7.6.2二分查找212
7.6.3矩阵乘运算215
本章小结216
习题7217
第8章指针220
8.1指针的概念220
8.1.1变量的地址和指针变量220
8.1.2指针变量的声明222
8.1.3指针的赋值和移动操作223
8.1.4悬挂指针和NULL指针225
8.2指针参数226
8.2.1传值调用和传址调用226
8.2.2返回多个值的函数227
8.3指针和一维数组228
8.3.1一维数组元素的指针表示228
8.3.2一维数组参数的指针表示232
8.3.3高精度计算: 超长整数加法235
8.4指针与字符串237
8.4.1字符串的指针表示237
8.4.2字符串作函数参数238
8.5指针数组240
8.5.1指针数组的概念240
8.5.2用指针数组表示字符串数组241
8.5.3指向指针的指针246
8.6main函数的参数249
8.6.1命令行参数249
8.6.2带参main函数的定义249
8.6.3命令行参数的传递251
8.7指针函数252
8.7.1指针函数的声明252
8.7.2指针函数返回值的分析252
8.7.3指针函数的定义及应用253
8.8指向函数的指针256
8.8.1函数指针变量的声明256
8.8.2函数指针的应用257
8.9指针与多维数组258
8.9.1指向数组元素的指针259
8.9.2指向数组的指针259
8.9.3二维数组参数的指针表示262
8.9.4多维数组的指针表示265
8.10用typedef定义类型名266
8.10.1typedef的用法267
8.10.2typedef与#define的区别268
8.11复杂声明268
8.11.1函数指针数组269
8.11.2指向函数的指针函数270
8.11.3函数指针数组的指针271
8.12restrict和_Atomic类型限定符273
8.12.1restrict限定的指针273
8.12.2_Atomic类型限定符273
本章小结274
习题8274
第9章结构与联合278
9.1结构概述278
9.2结构的声明和引用279
9.2.1结构类型的声明279
9.2.2结构变量的定义280
9.2.3结构变量的初始化280
9.2.4点运算符281
9.2.5嵌套的结构281
9.2.6结构的大小282
9.3结构数组285
9.3.1结构数组的定义285
9.3.2结构数组的初始化286
9.3.3结构数组作函数参数286
9.4指向结构的指针288
9.4.1结构指针的声明288
9.4.2箭头运算符289
9.4.3结构数组的指针表示289
9.4.4柔性数组成员295
9.5结构与函数296
9.5.1结构或结构指针作函数参数296
9.5.2结构或结构指针作函数返回值297
9.5.3复合文字作实参299
9.6联合300
9.7字段结构303
9.8结构指针的应用306
9.8.1静态和动态数据结构306
9.8.2单链表的结构307
9.8.3单链表的建立和输出308
9.8.4单链表的基本操作313
9.8.5单链表排序319
9.8.6十字交叉链表322
9.8.7双向链表325
本章小结326
习题9326
第10章文件329
10.1文件概述329
10.1.1数据流329
10.1.2文件的概念329
10.1.3文件类型330
10.1.4文件指针332
10.1.5文件操作的基本步骤333
10.2文件的打开与关闭333
10.2.1打开文件函数fopen333
10.2.2关闭文件函数fclose335
10.2.3应用举例336
10.3文件的顺序读写336
10.3.1字符读写操作337
10.3.2字符串读写操作338
10.3.3格式化读写340
10.3.4数据块读写342
10.4文件的随机读写345
10.4.1文件指针的复位346
10.4.2文件指针的随机移动346
10.4.3文件指针当前位置的获取346
10.5文件的状态及异常检测350
10.5.1文件结束判断函数350
10.5.2文件读写错误信息判断函数350
10.5.3文件读写错误信息清除函数350
10.6文件的重定向352
10.7C11标准新增文件操作语法353
10.7.1打开文件时的独占模式354
10.7.2用gets_s函数替代gets函数354
10.7.3文件操作中参数使用restrict修饰的说明355
10.7.4关于边界检查函数接口355
本章小结355
习题10356
第11章用户自定义库358
11.1用户自定义库概述358
11.2allocation库的设计358
11.3allocation库的接口定义360
11.4allocation库函数的实现361
11.5allocation库的生成和使用363
11.5.1生成allocation库文件363
11.5.2allocation库的使用364
本章小结365
习题11365
附录AASCII字符编码表366
附录B常用标准库函数368
参考文献374
-
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
深度学习的数学
¥43.5¥69.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥37.7¥65.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥77.4¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
UN NX 12.0多轴数控编程案例教程
¥25.8¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥84.5¥119.0 -
PREMIERE PRO 2023全面精通:视频剪辑+颜色调整+转场特效+字幕制作+案例实战
¥69.3¥99.0