21天学通C语言|在线阅读-高飞网
21天学通C语言
 /  513
  • 第一周课程 1
  • 第1天课程 c语言初步 2
  • 1.1 c语言简史 2
  • 1.2 为何要使用c语言 2
  • 1.3 编程前的准备工作 3
  • 1.4 程序开发周期 4
  • 1.4.1 创建源代码 4
  • 1.4.2 编译源代码 4
  • 1.4.3 链接以创建可执行文件 5
  • 1.4.4 结束开发周期 6
  • 1.5 第一个c语言程序 7
  • 1.5.1 输入并编译hello.c 7
  • 1.6 总结 9
  • 1.7 问与答 9
  • 1.8 作业 10
  • 1.8.1 小测验 10
  • 1.8.2 练习 10
  • type&run1 打印程序清单 12
  • 第一个type&run 12
  • 第2天课程 c语言程序的组成部分 14
  • .2.1 一个简短的c语言程序 14
  • 2.2 程序的组成部分 15
  • 2.2.1 main( )函数(第8~23行) 15
  • 2.2.2 #include编译指令(第2行) 15
  • 2.2.3 变量定义(第4行) 15
  • 2.2.4 函数原型(第6行) 16
  • 2.2.5 程序语句(第11、12、15、16...
  • 2.2.6 函数定义(第26~29行) 16
  • 2.2.7 程序注释(第1、10、14、18和...
  • 2.2.8 使用花括号(第9、23、27和29...
  • 2.2.9 运行程序 17
  • 2.2.10 有关精度的说明 18
  • 2.3 重温程序的组成部分 18
  • 2.4 总结 20
  • 2.5 问与答 20
  • 2.6 作业 20
  • 2.6.1 小测验 20
  • 2.6.2 练习 21
  • 第3天课程 存储信息:变量和常量 23
  • 3.1 计算机内存 23
  • 3.2 使用变量存储信息 24
  • 3.2.1 变量名 24
  • 3.3 数值变量的类型 25
  • 3.3.1 变量声明 27
  • 3.3.2 typedef关键字 27
  • 3.3.3 初始化变量 28
  • 3.4 常量 28
  • 3.4.1 字面常量 28
  • 3.4.2 符号常量 29
  • 3.5 总结 31
  • 3.6 问与答 32
  • 3.7 作业 32
  • 3.7.1 小测验 32
  • 3.7.2 练习 32
  • 第4天课程 语句、表达式和运算符 34
  • 4.1 语句 34
  • 4.1.1 空白对语句的影响 34
  • 4.1.2 创建空语句 35
  • 4.1.3 使用复合语句 35
  • 4.2 表达式 35
  • 4.2.1 简单表达式 35
  • 4.2.2 复杂表达式 36
  • 4.3 运算符 36
  • 4.3.1 赋值运算符 36
  • 4.3.2 数学运算符 37
  • 4.3.3 运算符优先级和圆括号 40
  • 4.3.4 子表达式的计算顺序 41
  • 4.3.5 关系运算符 41
  • 4.4 if语句 42
  • 4.4.1 else子句 44
  • 4.5 判断关系表达式 46
  • 4.5.1 关系运算符的优先级 47
  • 4.6 逻辑运算符 48
  • 4.7 再谈true/false值 48
  • 4.7.1 运算符的优先级 49
  • 4.7.2 复合赋值运算符 50
  • 4.7.3 条件运算符 50
  • 4.7.4 逗号运算符 51
  • 4.8 再谈运算符优先级 51
  • 4.9 总结 52
  • 4.10 问与答 52
  • 4.11 作业 53
  • 4.11.1 小测验 53
  • 4.11.2 练习 53
  • type&run2 猜数游戏 55
  • 第5天课程 使用函数封装代码 57
  • 5.1 函数是什么 57
  • 5.1.1 函数的定义 57
  • 5.1.2 函数的用法 57
  • 5.2 函数的工作原理 59
  • 5.3 函数和结构化编程 60
  • 5.3.1 结构化编程的优点 60
  • 5.3.2 规划结构化程序 60
  • 5.3.3 从顶向下的方法 61
  • 5.4 编写函数 61
  • 5.4.1 函数头 62
  • 5.4.2 函数的返回类型 62
  • 5.4.3 函数名 62
  • 5.4.4 参数列表 62
  • 5.4.5 函数体 64
  • 5.4.6 函数原型 67
  • 5.5 将参数传递给函数 67
  • 5.6 调用函数 68
  • 5.6.1 递归 69
  • 5.7 函数的位置 70
  • 5.8 内联函数 70
  • 5.9 总结 71
  • 5.10 问与答 71
  • 5.11 作业 72
  • 5.11.1 小测验 72
  • 5.11.2 练习 72
  • 第6天课程 基本的程序流程控制 74
  • 6.1 数组的基本知识 74
  • 6.2 控制程序的执行 75
  • 6.2.1 for语句 75
  • 6.2.2 嵌套for语句 79
  • 6.2.3 while语句 80
  • 6.2.4 嵌套while语句 82
  • 6.2.5 do…while循环 84
  • 6.3 嵌套循环 87
  • 6.4 总结 88
  • 6.5 问与答 88
  • 6.6 作业 88
  • 6.6.1 小测验 89
  • 6.6.2 练习 89
  • 第7天课程 信息读写基础 90
  • 7.1 在屏幕上显示信息 90
  • 7.1.1 printf( )函数 90
  • 7.1.2 格式化字符串 90
  • 7.1.3 转义序列 91
  • 7.1.4 使用puts( )显示消息 96
  • 7.2 使用scanf( )函数输入数值数据 97
  • 7.3 三字符序列 100
  • 7.4 总结 101
  • 7.5 问与答 101
  • 7.6 作业 102
  • 7.6.1 小测验 102
  • 7.6.2 练习 102
  • 第一周复习 104
  • 第二周课程 109
  • 第8天课程 使用数值数组 110
  • 8.1 数组是什么 110
  • 8.1.1 一维数组 110
  • 8.1.2 多维数组 113
  • 8.2 命名和声明数组 114
  • 8.2.1 初始化数组 115
  • 8.2.2 初始化多维数组 116
  • 8.2.3 数组的最大长度 119
  • 8.3 总结 121
  • 8.4 问与答 121
  • 8.5 作业 121
  • 8.5.1 小测验 121
  • 8.5.2 练习 122
  • 第9天课程 指针 123
  • 9.1 指针是什么 123
  • 9.1.1 计算机内存 123
  • 9.1.2 创建指针 123
  • 9.2 指针和简单变量 124
  • 9.2.1 声明指针 124
  • 9.2.2 初始化指针 124
  • 9.2.3 使用指针 125
  • 9.3 指针和变量类型 126
  • 9.4 指针和数组 127
  • 9.4.1 作为指针的数组名 128
  • 9.4.2 数组元素的存储 128
  • 9.4.3 指针算术 130
  • 9.5 有关指针的注意事项 133
  • 9.6 数组下标表示法和指针 133
  • 9.7 将数组传递给函数 133
  • 9.8 总结 137
  • 9.9 问与答 137
  • 9.10 作业 138
  • 9.10.1 小测验 138
  • 9.10.2 练习 138
  • type&run3 让程序暂停 139
  • 第10天课程 字符和字符串 141
  • 10.1 char数据类型 141
  • 10.2 使用字符变量 141
  • 10.3 使用字符串 144
  • 10.3.1 字符数组 144
  • 10.3.2 初始化字符数组 144
  • 10.4 字符串和指针 144
  • 10.5 不存储在数组中的字符串 145
  • 10.5.1 编译时分配字符空间 145
  • 10.5.2 malloc( )函数 145
  • 10.5.3 使用malloc( )函数 146
  • 10.6 显示字符串和字符 148
  • 10.6.1 puts( )函数 149
  • 10.6.2 printf( )函数 149
  • 10.7 从键盘读取字符串 150
  • 10.7.1 使用gets( )函数输入字符串...
  • 10.7.2 使用scanf( )函数输入字符...
  • 10.8 总结 154
  • 10.9 问与答 154
  • 10.10 作业 155
  • 10.10.1 小测验 155
  • 10.10.2 练习 156
  • 第11天课程 结构、共用体和typedef...
  • 11.1 简单结构 157
  • 11.1.1 定义和声明结构 157
  • 11.1.2 存取结构的成员 158
  • 11.2 复杂结构 160
  • 11.2.1 包含其他结构的结构 160
  • 11.2.2 包含数组的结构 162
  • 11.3 结构数组 164
  • 11.4 初始化结构 167
  • 11.5 结构和指针 168
  • 11.5.1 将指针作为结构的成员 168
  • 11.5.2 创建指向结构的指针 170
  • 11.5.3 使用指针和结构数组 171
  • 11.5.4 将结构作为参数传递给函数 173
  • 11.6 共用体 174
  • 11.6.1 定义、声明和初始化共用体 175
  • 11.6.2 存取共用体的成员 175
  • 11.7 使用typedef给结构创建别名 179
  • 11.8 总结 179
  • 11.9 问与答 179
  • 11.10 作业 180
  • 11.10.1 小测验 180
  • 11.10.2 练习 180
  • 第12天课程 变量作用域 182
  • 12.1 作用域是什么 182
  • 12.1.1 演示作用域 182
  • 12.1.2 作用域为何重要 184
  • 12.2 外部变量 184
  • 12.2.1 外部变量的作用域 184
  • 12.2.2 何时使用外部变量 184
  • 12.2.3 extern关键字 184
  • 12.3 局部变量 185
  • 12.3.1 静态变量和动态变量 186
  • 12.3.2 函数参数的作用域 187
  • 12.3.3 外部静态变量 188
  • 12.3.4 寄存器变量 188
  • 12.4 局部变量和main( )函数 189
  • 12.5 应使用哪种存储类型 189
  • 12.6 局部变量和代码块 189
  • 12.7 总结 190
  • 12.8 问与答 191
  • 12.9 作业 191
  • 12.9.1 小测验 191
  • 12.9.2 练习 191
  • type&run4 机密消息 194
  • 第13天课程 高级程序流程控制 197
  • 13.1 提早结束循环 197
  • 13.1.1 break语句 197
  • 13.1.2 continue语句 199
  • 13.2 goto语句 200
  • 13.3 死循环 202
  • 13.4 switch语句 205
  • 13.5 退出程序 212
  • 13.5.1 exit( )函数 212
  • 13.6 在程序中执行操作系统命令 213
  • 13.7 总结 214
  • 13.8 问与答 215
  • 13.9 作业 215
  • 13.9.1 小测验 215
  • 13.9.2 练习 215
  • 第14天课程 操纵屏幕、打印机和键...
  • 14.1 流和c语言 217
  • 14.1.1 何为程序的输入/输出 217
  • 14.1.2 什么是流 217
  • 14.1.3 文本流和二进制流 218
  • 14.1.4 预定义的流 218
  • 14.2 使用c语言的流函数 219
  • 14.2.1 例子 219
  • 14.3 读取键盘输入 220
  • 14.3.1 字符输入 220
  • 14.3.2 格式化输入 225
  • 14.4 控制屏幕输出 231
  • 14.4.1 使用putchar( )、putc( )和...
  • 14.4.2 使用puts( )和fputs( )输出...
  • 14.4.3 使用printf( )和fprintf( )...
  • 14.5 重定向输入/输出 238
  • 14.5.1 重定向输入 239
  • 14.6 何时使用fprintf( ) 239
  • 14.6.1 使用stderr 240
  • 14.7 总结 241
  • 14.8 问与答 241
  • 14.9 作业 242
  • 14.9.1 小测验 242
  • 14.9.2 练习 242
  • 第二周复习 244
  • 第三周课程 251
  • 第15天课程 有关指针的高级主题 252
  • 15.1 声明指向指针的指针 252
  • 15.2 指针和多维数组 253
  • 15.3 指针数组 259
  • 15.3.1 复习字符串和指针 259
  • 15.3.2 声明char类型指针数组 259
  • 15.3.3 范例 261
  • 15.4 函数指针 265
  • 15.4.1 声明函数指针 265
  • 15.4.2 初始化并使用函数指针 266
  • 15.5 链表 273
  • 15.5.1 有关链表的基本知识 273
  • 15.5.2 使用链表 274
  • 15.5.3 演示简单链表 278
  • 15.5.4 实现链表 280
  • 15.6 总结 286
  • 15.7 问与答 286
  • 15.8 作业 286
  • 15.8.1 小测验 287
  • 15.8.2 练习 287
  • 第16天课程 使用磁盘文件 289
  • 16.1 将流与磁盘文件关联起来 289
  • 16.2 磁盘文件的类型 289
  • 16.3 文件名 290
  • 16.4 打开文件 290
  • 16.5 读写文件数据 292
  • 16.5.1 格式化文件输入/输出 293
  • 16.5.2 字符输入/输出 296
  • 16.5.3 直接文件输入/输出 297
  • 16.6 文件缓冲技术:关闭和刷新文...
  • 16.7 顺序文件存取和随机文件存取 301
  • 16.7.1 ftell( )和rewind( )函数 301
  • 16.7.2 fseek( )函数 303
  • 16.8 检测文件尾 305
  • 16.9 文件管理函数 307
  • 16.9.1 删除文件 307
  • 16.9.2 给文件重命名 308
  • 16.9.3 复制文件 309
  • 16.10 使用临时文件 311
  • 16.11 总结 312
  • 16.12 问与答 312
  • 16.13 作业 313
  • 16.13.1 小测验 313
  • 16.13.2 练习 313
  • type&run5 计算字符数 314
  • 第17天课程 操纵字符串 318
  • 17.1 确定字符串的长度 318
  • 17.2 复制字符串 319
  • 17.2.1 strcpy( )函数 319
  • 17.2.2 strncpy( )函数 320
  • 17.2.3 strdup( )函数 321
  • 17.3 拼接字符串 322
  • 17.3.1 strcat( )函数 322
  • 17.3.2 strncat( )函数 324
  • 17.4 比较字符串 325
  • 17.4.1 比较两个完整字符串 325
  • 17.4.2 比较字符串的一部分 326
  • 17.4.3 比较字符串时忽略大小写 328
  • 17.5 查找字符串 328
  • 17.5.1 strchr( )函数 328
  • 17.5.2 strrchr( )函数 329
  • 17.5.3 strcspn( )函数 329
  • 17.5.4 strspn( )函数 330
  • 17.5.5 strpbrk( )函数 331
  • 17.5.6 strstr( )函数 331
  • 17.6 字符串转换 332
  • 17.7 其他字符串函数 333
  • 17.7.1 strrev( )函数 333
  • 17.7.2 strset( )和strnset( )函数...
  • 17.8 将字符串转换为数字 334
  • 17.8.1 将字符串转换为int 335
  • 17.8.2 将字符串转换为long值 335
  • 17.8.3 将字符串转换为long long值...
  • 17.8.4 将字符串转换为浮点数 335
  • 17.9 字符检测函数 336
  • 17.9.1 ansi对大小写转换的支持 339
  • 17.10 总结 340
  • 17.11 问与答 340
  • 17.12 作业 341
  • 17.12.1 小测验 341
  • 17.12.2 练习 341
  • 第18天课程 有关函数的高级主题 343
  • 18.1 将指针传递给函数 343
  • 18.2 void类型的指针 346
  • 18.3 接受可变数目参数的函数 348
  • 18.4 返回指针的函数 350
  • 18.5 总结 352
  • 18.6 问与答 352
  • 18.7 作业 352
  • 18.7.1 小测验 352
  • 18.7.2 练习 353
  • 第19天课程 函数库 354
  • 19.1 数学函数 354
  • 19.1.1 三角函数 354
  • 19.1.2 指数函数和对数函数 354
  • 19.1.3 双曲线函数 355
  • 19.1.4 其他数学函数 355
  • 19.1.5 演示数学函数 355
  • 19.2 处理时间 356
  • 19.2.1 时间的表示 356
  • 19.2.2 时间函数 356
  • 19.2.3 使用时间函数 359
  • 19.3 处理错误 360
  • 19.3.1 assert( )宏 361
  • 19.3.2 头文件errno.h 362
  • 19.3.3 perror( )函数 362
  • 19.4 查找和排序 364
  • 19.4.1 使用bsearch( )进行查找 364
  • 19.4.2 使用qsort( )进行排序 365
  • 19.4.3 演示查找和排序 365
  • 19.5 总结 370
  • 19.6 问与答 370
  • 19.7 作业 370
  • 19.7.1 小测验 370
  • 19.7.2 练习 371
  • type&run6 计算抵押贷款的偿还金额...
  • 第20天课程 管理内存 374
  • 20.1 类型转换 374
  • 20.1.1 自动类型转换 374
  • 20.1.2 显式转换 376
  • 20.2 分配内存的存储空间 377
  • 20.2.1 使用malloc( )函数分配内存...
  • 20.2.2 使用calloc( )函数分配内存...
  • 20.2.3 使用realloc( )函数分配更...
  • 20.2.4 使用free( )函数释放内存 381
  • 20.3 操纵内存块 383
  • 20.3.1 使用memset( )函数初始化内...
  • 20.3.2 使用memcpy( )复制内存中的...
  • 20.3.3 使用memmove( )函数移动内...
  • 20.4 位的用法 385
  • 20.4.1 移位运算符 385
  • 20.4.2 按位逻辑运算符 386
  • 20.4.3 求补运算符 387
  • 20.4.4 结构中的位字段 387
  • 20.5 总结 389
  • 20.6 问与答 389
  • 20.7 作业 390
  • 20.7.1 小测验 390
  • 20.7.2 练习 390
  • 第21天课程 编译器的高级用法 392
  • 21.1 使用多个源代码文件的编程 392
  • 21.1.1 模块化编程的优点 392
  • 21.1.2 模块化编程技术 392
  • 21.1.3 模块的组成部分 394
  • 21.1.4 外部变量和模块化编程 395
  • 21.1.5 使用.obj文件 395
  • 21.1.6 使用生成工具 396
  • 21.2 c语言的预处理器 396
  • 21.2.1 #define预处理器编译指令 397
  • 21.2.2 使用编译指令#include 400
  • 21.2.3 使用#if、#elif、#else和#e...
  • 21.2.4 使用#if…#endif来帮助调试...
  • 21.2.5 避免将头文件包含多次 401
  • 21.2.6 #undef编译指令 402
  • 21.3 预定义的宏 402
  • 21.4 使用命令行参数 403
  • 21.5 总结 405
  • 21.6 问与答 405
  • 21.7 作业 405
  • 21.7.1 小测验 405
  • 21.7.2 练习 406
  • 第三周复习 407
  • 附加课程(具体内容见光盘) 413
  • 附录a ascii字符集 414
  • 附录b c/c++中的保留字 418
  • 附录c 使用二进制和十六进制数 420
  • c.1 十进制 420
  • c.2 二进制 420
  • c.3 十六进制 420
  • 附录d 移植性问题 422
  • d.1 ansi标准 422
  • d.2 ansi关键字 422
  • d.3 区分大小写 422
  • d.4 可移植的字符 424
  • d.5 确保ansi兼容性 424
  • d.6 绕开ansi标准 424
  • d.7 使用可移植的数值变量 425
  • d.7.1 最大值和最小值 426
  • d.7.2 确定数字的类型 430
  • d.7.3 转换字符的大小写:一个可移...
  • d.8 可移植的结构和共用体 434
  • d.8.1 字对齐 434
  • d.8.2 读写结构 435
  • d.8.3 在可移植的程序中使用非-ans...
  • d.8.4 ansi标准头文件 437
  • d.9 总 结 438
  • d.10 问与答 438
  • d.11 作 业 438
  • d.11.1 小测验 438
  • d.11.2 练习 439
  • 附录e 常用的c语言函数 440
  • 附录f 作业答案 444
  • 第1天课程的答案 444
  • 小测验 444
  • 练习 444
  • 第2天课程的答案 445
  • 小测验 445
  • 练习 445
  • 第3天课程的答案 446
  • 小测验 446
  • 练习 446
  • 第4天课程的答案 447
  • 小测验 447
  • 练习 447
  • 第5天课程的答案 449
  • 小测验 449
  • 练习 449
  • 第6天课程的答案 452
  • 小测验 452
  • 练习 452
  • 第7天课程的答案 453
  • 小测验 453
  • 练习 453
  • 第8天课程的答案 457
  • 小测验 457
  • 练习 457
  • 第9天课程的答案 461
  • 小测验 461
  • 练习 461
  • 第10天课程的答案 463
  • 小测验 463
  • 练习 463
  • 第11天课程的答案 465
  • 小测验 465
  • 练习 466
  • 第12天课程的答案 467
  • 小测验 467
  • 练习 467
  • 第13天课程的答案 470
  • 小测验 470
  • 练习 471
  • 第14天课程的答案 471
  • 小测验 471
  • 练习 472
  • 第15天课程的答案 472
  • 小测验 472
  • 练习 473
  • 第16天课程的答案 473
  • 小测验 473
  • 练习 474
  • 第17天课程的答案 474
  • 小测验 474
  • 练习 474
  • 第18天课程的答案 475
  • 小测验 475
  • 练习 475
  • 第19天课程的答案 475
  • 小测验 475
  • 练习 476
  • 第20天课程的答案 476
  • 小测验 476
  • 练习 477
  • 第21天课程的答案 477
  • 小测验 477
  • 附加课程1的答案 478
  • 小测验 478
  • 附加课程2的答案 478
  • 小测验 478
  • 附加课程3的答案 478
  • 小测验 478
  • 附加课程4的答案 479
  • 小测验 479
  • 附加课程5的答案 479
  • 小测验 479
  • 附加课程6的答案 480
  • 小测验 480
  • 附加课程7的答案 480
  • 小测验 480
  • 练习 480
  • 附录g dev-c++编译器 482
  • g.1 dev-c++简介 482
  • g.2 在microsoft windows上安装dev...
  • g.3 dev-c++中的程序 484
  • g.4 使用dev-c++ 484
  • g.4.1 针对c语言编程定制dev-c++ 485
  • g.4.2 在dev-c++中输入并编译程序 486
  • g.4.3 编译dev-c++程序 488
  • g.4.4 运行dev-c++程序 488
  • g.5 总 结 489