本书分为三个部分:语言篇、信号与系统基础篇以及信号与系统应用篇。系统地介绍MATLAB软件,内容涉及:MATLAB软件简介、MATLAB编程基础、MATLAB工具箱简介、MATLAB混合编程等。
第1篇程 途 启 步
第1单元简单程序设计2
1.1C语言程序主框架2
1.1.1用伪代码描述的简单计算器程序算法2
1.1.2将伪代码描述的算法逐步细化为C程序2
1.2数据类型与数据形式3
1.2.1数据类型3
1.2.2程序中的数据形式及其引用方式4
1.3标识符与声明6
1.3.1标识符6
1.3.2声明6
1.3.3变量的声明与初始化7
1.4操作符8
1.4.1赋值操作符与赋值表达式8
1.4.2算术操作符与算术表达式8
1.4.3操作符的优先级与结合性9
1.5函数9
1.5.1函数及其应用过程10
1.5.2函数调用与函数返回11
1.5.3函数定义11
1.5.4局部变量12
1.5.5函数声明14
1.5.6main()函数15
1.5.7函数库、头文件与文件包含命令15
1.6格式化输入/输出函数16
1.6.1printf()函数的基本用法16
1.6.2scanf()的基本用法17
1.7C程序的编译与执行19
1.7.1C语言程序的编译与连接19
1.7.2程序中的错误和异常20
1.7.3程序测试22
1.7.4设计用户友好的程序23
习题123
第2单元选择程序设计27
2.1可选择计算类型的计算器程序算法分析27
2.1.1主函数的算法分析27
2.1.2计算函数calculate()的算法分析28
2.1.3判等操作符与关系操作符28
2.2ifelse型选择结构29
2.2.1用ifelse结构实现的calculate()函数29
2.2.2ifelse结构的应用特点30
2.2.3良好的程序书写风格32
2.3选择结构的程序测试34
2.3.1白箱测试法34
2.3.2等价分类法35
2.4字符类型38
2.4.1ASCII码38
2.4.2char类型的基本特点39
2.4.3转义字符39
2.4.4字符的输入/输出40
2.5浮点类型41
2.5.1浮点类型取值范围与表数精度41
2.5.2浮点类型变量和字面量42
2.5.3浮点类型数据的操作42
2.6switch型选择结构43
2.6.1基于整数值匹配的选择结构——switch结构43
2.6.2一个字符分类程序44
2.6.3用switch结构实现的calculate()函数47
2.6.4switch结构与ifelse结构的比较48
习题249
第3单元重复程序设计56
3.1可连续计算的计算器程序的算法分析56
3.1.1主函数初步算法56
3.1.2主函数算法细化56
3.1.3重复结构的C语言实现途径57
3.2while结构57
3.2.1while结构的基本机理57
3.2.2使用while结构的可连续计算的计算器主函数57
3.2.3逗号操作符59
3.3dowhile结构59
3.3.1dowhile结构的基本机理59
3.3.2使用dowhile结构的可连续计算的计算器程
序主函数60
3.4for结构60
3.4.1for结构的基本机理60
3.4.2使用for结构的可连续计算的计算器程序主函数61
3.4.3计数型重复结构62
3.4.4复合赋值操作符与增值、减值操作符66
3.5重复结构的程序测试67
3.5.1基于路径覆盖的重复结构测试67
3.5.2边值分析法与重复结构测试67
3.5.3基于因果分析的程序测试68
3.6在重复体内控制重复过程71
3.6.1跳出当前层控制结构语句break72
3.6.2提前结束当前重复体语句continue72
3.6.3实例: 求素数72
习题374
第2篇组 织 数 据
第4单元同类型数据的聚合类型: 数组86
4.1一维数组86
4.1.1数组的特点86
4.1.2数组的定义87
4.1.3数组初始化87
4.1.4访问下标变量89
4.2二维数组90
4.2.1二维数组的概念90
4.2.2二维数组的初始化91
4.2.3访问二维数组元素92
4.3字符串93
4.3.1字符串字面量93
4.3.2字符串变量94
4.3.3字符串的输入/输出95
4.3.4字符串操作库函数98
习题4102
第5单元描述一类对象属性的聚合类型: 结构体和共用体107
5.1结构体类型与结构体变量107
5.1.1结构体类型及其定制107
5.1.2结构体变量的声明与初始化108
5.1.3结构体变量及其分量的应用109
5.2用结构体数组存储一组学生信息111
5.2.1结构体数组的定义与初始化111
5.2.2结构体数组元素的访问112
5.3共用体类型114
5.3.1共用体类型的定制与共用体变量的定义114
5.3.2共用体类型与结构体类型的比较115
5.3.3共用体变量的应用117
习题5118
第6单元指针124
6.1指针类型与指针变量124
6.1.1指针=基类型+地址124
6.1.2同类型指针间的赋值与判等操作126
6.1.3指针的递引用127
6.1.4悬空指针、空指针与void指针128
习题6.1129
6.2数组的指针形式131
6.2.1数组名与指向数组元素的指针131
6.2.2指向数组元素指针的加减运算133
6.2.2指针与字符串135
6.2.3二维数组与指针137
习题6.2139
6.3指向结构体变量的指针与链表142
6.3.1指向结构体类型变量的指针142
6.3.2链表及其特点142
6.3.3构建链表144
习题6.3146
6.4动态存储分配146
6.4.1申请需要的存储空间147
6.4.2释放一个指针指向的存储空间149
6.4.3修改一个指针指向的存储空间大小149
6.4.4构建动态链表150
习题6.4154
第3篇构 建 算 法
第7单元基础算法156
7.1穷举156
7.1.1搬砖问题156
7.1.2推断名次159
习题7.1163
7.2迭代与递推168
7.2.1用二分迭代法求方程在指定区间的根168
7.2.2猴子吃桃子171
7.2.3用辗转相除法求两个正整数的最大公因子173
习题7.2176
7.3递归180
7.3.1阶乘的递归计算180
7.3.2汉诺塔182
习题7.3185
第8单元计算机模拟187
8.1随机问题模拟187
8.1.1产品随机抽样187
8.1.2用蒙特卡洛法求π的近似值190
习题8.1192
8.2基于步长的模拟192
8.2.1事件步长法——中子扩散问题192
8.2.2时间步长法——盐水池问题194
习题8.2198
第9单元数据处理201
9.1排序201
9.1.1直接选择排序201
9.1.2冒泡排序203
习题9.1206
9.2查找206
9.2.1穷举查找206
9.2.2二分查找207
习题9.2208
第4篇语 海 探 幽
第10单元算术数据类型及其转换210
10.1C数据类型概览210
10.2整数类型211
10.2.1有符号整数类型与无符号整数类型211
10.2.2标准整数类型与扩展整数类型211
10.2.3整数类型的极值宏212
10.2.4char类型213
10.2.5枚举214
10.2.6_Bool类型216
10.3浮点类型216
10.3.1浮点类型的值特性216
10.3.2浮点数据的舍入模式217
10.3.3浮点数据的求值特性217
10.3.4IEEE 754标准218
10.3.5关于浮点数的判等操作218
10.3.6_Complex类型和_Imaginary类型218
10.4数据类型转换219
10.4.1普通算术转换——提升拉齐规则219
10.4.2传送转换——与目的类型一致原则221
10.4.3数据的显式类型转换规则222
10.4.4数据类型转换注意事项222
习题10226
第11单元C语言中的常量229
11.1字面量229
11.1.1整数字面量的表示和辨识229
11.1.2浮点类型字面量的表示和辨识230
11.1.3复合字面量231
11.2宏232
11.2.1宏定义232
11.2.2使用宏应当注意的几点233
11.2.3带参宏定义234
11.3const类型限定符237
11.3.1用const限定变量237
11.3.2用const限定数组238
11.3.3用const限定函数参数239
11.3.4用const限定指针239
11.3.5在多文件程序中共享一个const定义240
习题11241
第12单元C程序中变量的访问属性247
12.1变量访问属性的概念247
12.1.1变量的存储类型与生存期247
12.1.2标识符的作用域248
12.1.3标识符的链接属性249
12.2C语言程序实体的存储类型249
12.2.1C程序中的局部变量250
12.2.2外部变量的定义与声明251
12.2.3初始化255
习题12256
第13单元操作符、表达式与语句261
13.1操作符与表达式261
13.1.1算术操作符261
13.1.2逻辑表达式262
13.1.3位操作符262
13.1.4条件表达式265
13.1.5增值表达式和减值表达式265
13.1.6下标表达式与指针的加减操作266
13.1.7赋值操作267
13.1.8左值表达式268
13.2操作符的副作用与序列点270
13.2.1操作符的副作用与透明引用270
13.2.2基于序列点的副作用不叠加表达式规则272
13.2.3函数的副作用274
13.3语句274
13.3.1表达式语句、空语句和复合语句274
13.3.2控制语句275
13.3.3跳转语句276
13.3.4关于分号(;)的说明276
习题13276
第14单元函数280
14.1函数参数280
14.1.1现代C语言函数参数不能空280
14.1.2C语言函数调用中的值结合280
14.1.3指针类型参数282
14.2函数定义与函数声明289
14.2.1函数定义289
14.2.2函数声明290
14.3内联函数291
14.3.1内联函数的概念291
14.3.2C99的内联函数定义291
14.3.3gcc的内联函数定义292
14.3.4内联函数的限制292
习题14292
第15单元输入/输出297
15.1格式化输出函数printf()297
15.1.1printf()格式参数结构297
15.1.2printf()基本格式符297
15.1.3长度修饰符298
15.1.4域宽与精度说明299
15.1.5前缀修饰符299
15.2格式化输入函数scanf()301
15.2.1scanf()指针参数301
15.2.2scanf()格式参数结构302
15.2.3数值数据的输入控制304
15.2.4scanf()与输入缓冲区305
15.2.5字符型数据的输入控制306
15.2.6scanf()的停止与返回309
15.3C语言的文件操作310
15.3.1文件及其分类310
15.3.2FILE类型及其指针312
15.3.3C语言文件操作的一般过程313
15.3.4文件操作程序示例316
习题15318
附录324
附录AC语言关键字324
附录BC语言运算符的优先级和结合方向324
附录C编译预处理命令325
C.1宏定义325
C.2文件包含326
C.3条件编译326
附录DC标准库头文件326
附录EC语言常用标准库函数327
E.1数学函数327
E.2字符函数和字符串函数328
E.3输入/输出函数329
E.4动态内存分配函数331
E.5退出程序函数331
E.6数值转换函数331
E.7时间和日期函数332
参考文献333