第1章 进入程序设计世界(教学视频:20分钟) 1
1.1计算机程序设计 1
1.1.1计算机语言 1
1.1.2机器语言 2
1.1.3汇编语言 2
1.1.4高级语言 2
1.2什么是C语言? 3
1.2.1 C语言的发展 3
1.2.2 C语言的特点 4
1.3环境搭建,初识Visual C++ 5
1.3.1安装Visual C++ 5
1.3.2认识Visual C++ 9
1.4编制第一个C语言程序 10
1.4.1简单的Hello World程序 10
1.4.2程序开发步骤 13
1.4.3 C语言的代码 15
1.5本章小结 16
1.6本章习题 16
第2章 C语言数据类型、运算符和表达式(教学视频:62分钟) 17
2.1基本数据类型 17
2.1.1简单学习存储原理 17
2.1.2整数类型 18
2.1.3浮点数类型 20
2.1.4字符类型 21
2.1.5常用基本数据类型 23
2.2标识符与关键字 23
2.2.1标识符 23
2.2.2关键字 24
2.3常量与变量 25
2.3.1常量 25
2.3.2变量 26
2.3.3字符串常量 27
2.4运算符和表达式 28
2.4.1 C语言的运算符以及表达式 28
2.4.2算术运算符和算术表达式 29
2.4.3关系运算符和关系表达式 30
2.4.4逻辑运算符和逻辑表达式 31
2.4.5位运算符和位表达式 33
2.4.6自增、自减运算符和表达式 34
2.4.7赋值运算符和赋值表达式 35
2.4.8逗号运算符和逗号表达式 37
2.4.9 sizeof()运算符 37
2.4.10条件运算符和条件表达式 38
2.5数据类型之间的转换 38
2.5.1自动类型转换 39
2.5.2强制类型转换 39
2.6本章小结 40
2.7本章习题 40
第3章 输入与输出(教学视频:28分钟) 42
3.1输入输出——让人与机器交流的窗口 42
3.2格式化的输入输出 43
3.2.1格式化输出函数printf() 43
3.2.2格式化输入函数scanf() 47
3.3常用字符输入输出函数 51
3.3.1 putchar()函数 51
3.3.2 getchar()函数 51
3.4本章小结 52
3.5本章习题 52
第4章 程序控制结构(教学视频:60分钟) 53
4.1复合语句 53
4.2条件控制语句 55
4.2.1 if语句的简单形式 55
4.2.2 if-else条件判断形式 57
4.2.3 else-if多条件判断形式 58
4.2.4 switch多条件判断语句 60
4.2.5条件运算符 62
4.2.6条件控制语句的嵌套使用 63
4.3循环控制语句 65
4.3.1 while语句 65
4.3.2 do-while语句 66
4.3.3 for语句 67
4.3.4循环语句的嵌套使用 70
4.4其他控制语句 71
4.4.1 goto语句 71
4.4.2 break语句 72
4.4.3 continue语句 72
4.5控制语句的应用举例 73
4.5.1穷举——著名的爱因斯坦阶梯问题 73
4.5.2迭代 75
4.5.3死循环 76
4.6本章小结 77
4.7本章习题 77
第5章 数组(教学视频:60分钟) 82
5.1一维数组 82
5.1.1一维数组的定义 82
5.1.2数组的存储原理 83
5.2数组的赋值 85
5.2.1初始化赋值 85
5.2.2初始化部分元素 86
5.2.3不定长度数组赋值 87
5.2.4静态数组赋值 87
5.2.5遍历数组 88
5.3一维数组的应用 88
5.3.1冒泡排序 89
5.3.2简单选择排序 91
5.4多维数组 94
5.4.1多维数组的定义 94
5.4.2多维数组的存储原理 96
5.5多维数组的赋值 98
5.5.1顺序初始化 98
5.5.2部分数组元素初始化 100
5.6字符数组和字符串 101
5.6.1字符数组与字符串 101
5.6.2字符串的初始化 102
5.6.3字符串的输入输出 103
5.7常用的字符串函数 105
5.7.1字符串输入函数gets() 105
5.7.2字符串输出函数puts() 106
5.7.3字符串连接函数strcat() 106
5.7.4字符串拷贝函数strcpy() 107
5.7.5字符串比较函数strcmp() 108
5.7.6求字符串长度函数strlen() 109
5.8中文字符的处理 109
5.9本章小结 110
5.10本章习题 111
第6章 指针(教学视频:41分钟) 114
6.1神奇的指针 114
6.1.1指针的概念 114
6.1.2指针变量的定义 115
6.1.3指针的赋值和取值 115
6.1.4指向指针的指针 118
6.1.5指针的用处 119
6.2指针数组 120
6.2.1指向一维数组的指针 120
6.2.2指向多维数组的指针 122
6.2.3指针与字符串 124
6.3易混淆的指针概念 126
6.3.1指针常量 126
6.3.2常量指针 126
6.4本章小结 127
6.5本章习题 128
第7章 函数(教学视频:50分钟) 130
7.1函数的概念 130
7.1.1 C语言程序结构 130
7.1.2函数的分类 131
7.2函数 132
7.2.1函数的定义 132
7.2.2函数的参数 134
7.2.3函数的声明 134
7.2.4函数的返回 136
7.3函数的调用 136
7.3.1传值调用 136
7.3.2传址调用 137
7.3.3嵌套调用 139
7.3.4递归调用 139
7.4变量的存储属性 141
7.4.1存储位置、作用域和生存期 141
7.4.2存储类别 142
7.4.3动态变量 142
7.4.4静态变量 145
7.5指针与函数 148
7.5.1指针作为函数的参数 148
7.5.2实参和形参均为数组名 148
7.5.3实参和形参均为指针 150
7.5.4实参和形参混合使用数组名与指针 151
7.5.5指向函数的指针 151
7.5.6返回指针的函数 152
7.6其他函数 153
7.6.1 main()函数 153
7.6.2库函数 154
7.7本章小结 154
7.8本章习题 154
第8章 其他数据类型与预编译(教学视频:41分钟) 157
8.1结构体类型变量 157
8.1.1定义结构体类型 157
8.1.2定义结构体变量 158
8.1.3结构体变量的访问 160
8.1.4结构体变量的赋值 161
8.1.5结构体数组 162
8.1.6结构体指针 163
8.2共用体 164
8.2.1定义共用体 164
8.2.2使用共用体的注意事项 165
8.3枚举类型 166
8.3.1枚举类型的定义 166
8.3.2枚举类型变量的使用 166
8.4自定义数据类型 167
8.5 void类型 168
8.6预编译 168
8.6.1文件包含 168
8.6.2条件编译 170
8.7宏 172
8.7.1不带参数的宏 172
8.7.2带参数的宏 174
8.8本章小结 175
8.9本章习题 175
第9章 文件操作(教学视频:45分钟) 178
9.1文件的概念和分类 178
9.1.1文件分类 178
9.1.2文件标识 179
9.1.3流 180
9.2文件的读写过程 180
9.2.1文件的工作原理 181
9.2.2文件类型指针 181
9.2.3打开和关闭文件 182
9.3对文件的操作 184
9.3.1面向字符的I/O 184
9.3.2面向行的I/O 185
9.3.3格式化的I/O 187
9.3.4面向记录的I/O 188
9.4文件定位与随机读写 190
9.4.1文件读写位置的定位 190
9.4.2文件的随机读写 190
9.5文件出错检测 191
9.6本章小结 192
9.7本章习题 192
第10章 C语言高级应用(教学视频:41分钟) 193
10.1内存分配策略 193
10.2 C语言动态内存分配函数 194
10.2.1申请内存 194
10.2.2释放内存 195
10.3线性表 195
10.3.1线性表的定义 196
10.3.2线性表的表示 196
10.3.3线性表的接口 197
10.3.4新建线性表 197
10.3.5插入结点 198
10.3.6删除结点 199
10.3.7删除某个线性表 199
10.4栈和队列 200
10.4.1栈 200
10.4.2队列 203
10.5栈的应用实例 207
10.5.1进制转换 208
10.5.2括号匹配检测 210
10.6本章小结 216
10.7本章习题 216
第11章 Visual C++ 6.0测试与调试(教学视频:20分钟) 217
11.1 Visual C++ 6.0的调试技巧 217
11.1.1程序测试 217
11.1.2断点设置 218
11.1.3跟踪调试 219
11.1.4调试实践 220
11.2常见的程序错误 226
11.2.1编译时常见错误 226
11.2.2连接时常见错误 227
11.2.3运行时常见错误 227
11.3本章小结 228
11.4本章习题 228
第12章 编程风格(教学视频:24分钟) 229
12.1编写风格良好的代码 229
12.1.1为什么编写风格良好的代码? 229
12.1.2编写风格良好代码的原则 230
12.2命名规则 230
12.2.1标识符命名规则 230
12.2.2函数命名规则 231
12.2.3类型的命名 232
12.2.4宏与常量的命名 232
12.3注释规则 233
12.3.1注释的原则 233
12.3.2注释的写法 233
12.4表达式和语句 234
12.4.1表达式的书写 234
12.4.2代码的排版 235
12.4.3语句的书写 236
12.5本章小结 238
12.6本章习题 238
第13章 Linux基础知识(教学视频:16分钟) 239
13.1Linux操作系统 239
13.1.1操作系统与UNIX 239
13.1.2 Linux的发展历史 240
13.1.3开源的概念 241
13.1.4 Linux内核版本 242
13.1.5 Linux的特色 242
13.2 Linux的安装 243
13.2.1安装前准备 243
13.2.2虚拟机VMware安装与配置 244
13.2.3 Linux系统的安装 246
13.2.4 Ubuntu系统界面 252
13.3如何学习Linux 254
13.3.1文件系统 254
13.3.2常用Shell指令 256
13.3.3在线求助 257
13.3.4权限控制 259
13.4 Linux环境的C语言开发 260
13.4.1在终端中开发 261
13.4.2在IDE中开发 263
13.5本章小结 265
13.6本章习题 265
第14章 算法初步入门(教学视频:37分钟) 266
14.1算法的基本概念 266
14.1.1大数A+B问题 266
14.1.2算法的基本性质 271
14.1.3算法的基本要求 272
14.2算法的复杂度分析 272
14.2.1事后统计法 272
14.2.2事前估算法 272
14.3分治法 273
14.3.1分治法的设计步骤 273
14.3.2二分法查找 274
14.3.3快速排序 276
14.4贪心法 279
14.4.1贪心算法的基本要素 279
14.4.2背包问题 279
14.4.3活动表问题 281
14.5动态规划 283
14.5.1动态规划的原理 284
14.5.2 0-1背包问题 285
14.6回溯法 287
14.6.1回溯法的原理 287
14.6.2 N皇后问题 289
14.7常见数学问题的算法实现 290
14.7.1水仙花数 290
14.7.2回文数 291
14.7.3最大公约数 292
14.7.4素数 293
14.8本章小结 295
14.9本章习题 295
第15章 案例开发——学生成绩管理系统(教学视频:32分钟) 296
15.1需求分析 296
15.2总体设计 296
15.3详细设计 297
15.3.1文件结构 298
15.3.2主函数 298
15.3.3显示 299
15.3.4菜单 300
15.4数据处理 301
15.4.1学生信息的表示 301
15.4.2学生信息的输入 302
15.4.3学生信息的查询 303
15.4.4学生信息的删除 304
15.4.5学生信息的排序 305
15.4.6学生信息的修改 306
15.4.7学生信息的保存 307
15.4.8学生信息的显示 307
15.5维护与改进 308
15.5.1增加错误检测 308
15.5.2完善数据处理功能 308
15.5.3进一步分离数据处理和程序显示 309
15.6本章小结 309
15.7本章习题 309
附录A ASCII详解 310
附录B C语言标准库函数 313
B.1标准库函数及其头文件 313
B.2数学函数 313
B.2.1求正弦值的sin()函数 314
B.2.2求反正弦值的asin()函数 314
B.2.3求余弦值的cos()函数 315
B.2.4求反余弦值的acos()函数 315
B.2.5求正切值的tan()函数 316
B.2.6求反正切值的atan()函数 316
B.2.7求幂值的exp ()函数 317
B.2.8取2为底对数的log ()函数 317
B.2.9取10为底对数的log10 ()函数 318
B.2.10求绝对值的fabs ()函数 318
B.2.11求小数上限的floor()函数 319
B.2.12求小数下限的ceil ()函数 319
B.2.13取余操作的fmod()函数 320
B.2.14求任意幂次的PoW()函数 321
B.2.15求平方根的sqrt()函数 321
B.3字符测试类函数 322
B.3.1判断字符是否为控制字符的iscntrl()函数 322
B.3.2判断字符是否为字母或数字的isalnum()函数 322
B.3.3判断字符是否为字母的isalpha()函数 323
B.3.4判断字符是否为ASCII字符的isascii ()函数 324
B.3.5判断字符是否为数字的isdigit()函数 324
B.3.6判断字符是否为制表符或空格符的isgraph()函数 325
B.3.7判断字母是否小写的islower()函数 325
B.3.8判断字母是否大写的isupper()函数 326
B.3.9将字母转换为小写的tolower ()函数 326
B.3.10将字母转换为大写的toupper()函数 327
B.4字符串函数 328
B.4.1求字符串长度的strlen()函数 328
B.4.2字符串拷贝的strcpy()函数 328
B.4.3连接两个字符串的strcat()函数 329
B.4.4比较字符串大小的strcmp()函数 329
B.4.5在字符串中查找字符的strchr()函数 330
B.4.6比较字符串大小(不区分大小写)的stricmp ()函数 331
B.4.7字符串中查找字符的strcspn()函数 331
B.4.8字符串中查找字符的stmcat()函数 332
B.4.9比较字符串大小的strcmp()函数 332
B.4.10字符串中查找字符的strstr()函数 333
B.4.11分割字符串的strtok()函数 334
B.4.12内存移动的memmove()函数 335
B.4.13字符串赋值的memcpy()函数 335
B.4.14字符串连接的memcmp()函数 335
B.4.15 字符串查找的memchr()函数 336
B.4.16字符串重置的memset()函数 336
B.5实用函数 336
B.5.1将字符串转换为小数的atof()函数 336
B.5.2将字符串转换为整数的atoi()函数 337
B.5.3将字符串转换为整数的atol()函数 337
B.5.4将字符串的前缀转换为小数的strtod()函数 338
B.5.5将字符串前缀转换为整数的strtol()函数 338
B.5.6生成随机数的rand()函数 339
B.5.7设置随机数种子的srand()函数 340
B.5.8动态内存分配的malloc()函数 340
B.5.9重新分配内存的realloc()函数 341
B.5.10释放内存的free()函数 341
B.5.11终止程序执行的abort()函数 341
B.5.12程序退出时会执行atexit()函数 341
B.5.13可以调用系统命令的system()函数 342
B.6时间函数 342
B.6.1返回处理机时间的clock()函数 343
B.6.2返回日历时间的time()函数 343
B.6.3转换时间格式为字符串的asctime ()函数 344
B.6.4将日历时间转换为标准格式的gmtime()函数 344
B.6.5将日历时间转换为本地时间的localtime ()函数 345
B.6.6将日历时间转换为字符串的ctime()函数 346
B.6.7指定时间格式的strftime()函数 346