21天学通C语言(第6版•修订版)

978-7-115-28723-6
作者: 【美】Bradley L. JonesPeter Aitken
译者: 信达工作室
编辑: 傅道坤

图书目录:

目 录

第 一周课程

第 1天课程 C语言概览 2

1.1 C语言简史 2

1.2 为何要使用C语言 2

1.3 编程前的准备工作 3

1.4 程序开发周期 4

1.4.1 创建源代码 4

1.4.2 编译源代码 5

1.4.3 链接以创建可执行文件 5

1.4.4 结束开发周期 6

1.5 第 一个C语言程序 7

1.6 总结 9

1.7 问与答 10

1.8 作业 10

1.8.1 小测验 10

1.8.2 练习 11

TYPE & RUN 1 打印程序清单 13

第 一个TYPE & RUN 13

第 2天课程 C语言程序的组成部分 15

2.1 一个简短的C语言程序 15

2.2 程序的组成部分 16

2.2.1 main()函数(第8~23行) 16

2.2.2 #include编译指令(第 2行) 16

2.2.3 变量定义(第4行) 17

2.2.4 函数原型(第6行) 17

2.2.5 程序语句(第 11、12、15、16、19、20、22和28行) 17

2.2.6 函数定义(第 26~29行) 17

2.2.7 程序注释(第 1、10、14、18和25行) 18

2.2.8 使用花括号(第9、23、27和29行) 18

2.2.9 运行程序 18

2.2.10 有关精度的说明 19

2.3 重温程序的组成部分 19

2.4 总结 21

2.5 问与答 21

2.6 作业 22

2.6.1 小测验 22

2.6.2 练习 22

第3天课程 存储信息:变量和常量 24

3.1 计算机内存 24

3.2 使用变量存储信息 25

3.3 数值变量的类型 26

3.3.1 变量声明 28

3.3.2 typedef关键字 29

3.3.3 初始化变量 29

3.4 常量 30

3.4.1 字面常量 30

3.4.2 符号常量 30

3.5 总结 33

3.6 问与答 33

3.7 作业 34

3.7.1 小测验 34

3.7.2 练习 34

第4天课程 语句、表达式和运算符 36

4.1 语句 36

4.1.1 空白对语句的影响 36

4.1.2 创建空语句 37

4.1.3 使用复合语句 37

4.2 表达式 37

4.2.1 简单表达式 37

4.2.2 复杂表达式 38

4.3 运算符 38

4.3.1 赋值运算符 39

4.3.2 数学运算符 39

4.3.3 运算符优先级和圆括号 42

4.3.4 子表达式的计算顺序 43

4.3.5 关系运算符 43

4.4 if语句 44

4.4.1 else子句 46

4.5 判断关系表达式 48

4.5.1 关系运算符的优先级 49

4.6 逻辑运算符 50

4.7 再谈true/false值 51

4.7.1 运算符的优先级 51

4.7.2 复合赋值运算符 52

4.7.3 条件运算符 53

4.7.4 逗号运算符 53

4.8 再谈运算符优先级 54

4.9 总结 54

4.10 问与答 55

4.11 作业 55

4.11.1 小测验 55

4.11.2 练习 56

TYPE & RUN 2 猜数游戏 58

第5天课程 使用函数封装代码 60

5.1 函数是什么 60

5.1.1 函数的定义 60

5.1.2 函数的用法 60

5.2 函数的工作原理 62

5.3 函数和结构化编程 63

5.3.1 结构化编程的优点 63

5.3.2 规划结构化程序 63

5.3.3 从顶向下的方法 64

5.4 编写函数 65

5.4.1 函数头 65

5.4.2 函数的返回类型 65

5.4.3 函数名 65

5.4.4 参数列表 65

5.4.5 函数体 67

5.4.6 函数原型 70

5.5 将参数传递给函数 71

5.6 调用函数 71

5.7 函数的位置 74

5.8 内联函数 74

5.9 总结 74

5.10 问与答 75

5.11 作业 75

5.11.1 小测验 75

5.11.2 练习 76

第6天课程 基本的程序流程控制 77

6.1 数组的基本知识 77

6.2 控制程序的执行 78

6.2.1 for语句 78

6.2.2 嵌套for语句 82

6.2.3 while语句 83

6.2.4 嵌套while语句 86

6.2.5 do…while循环 87

6.3 嵌套循环 90

6.4 总结 91

6.5 问与答 91

6.6 作业 92

6.6.1 小测验 92

6.6.2 练习 92

第7天课程 信息读写基础 94

7.1 在屏幕上显示信息 94

7.1.1 printf()函数 94

7.1.2 格式化字符串 94

7.1.3 转义序列 95

7.1.4 使用puts()显示消息 100

7.2 使用scanf()函数输入数值数据 101

7.3 三字符序列 104

7.4 总结 105

7.5 问与答 105

7.6 作业 106

7.6.1 小测验 106

7.6.2 练习 106

第 一周复习 108

第 二周课程

第8天课程 使用数值数组 114

8.1 数组是什么 114

8.1.1 一维数组 114

8.1.2 多维数组 117

8.2 命名和声明数组 118

8.2.1 初始化数组 120

8.2.2 初始化多维数组 120

8.2.3 数组的**大长度 123

8.3 总结 125

8.4 问与答 125

8.5 作业 126

8.5.1 小测验 126

8.5.2 练习 126

第9天课程 指针 128

9.1 指针是什么 128

9.1.1 计算机内存 128

9.1.2 创建指针 129

9.2 指针和简单变量 129

9.2.1 声明指针 129

9.2.2 初始化指针 130

9.2.3 使用指针 130

9.3 指针和变量类型 132

9.4 指针和数组 133

9.4.1 作为指针的数组名 133

9.4.2 数组元素的存储 133

9.4.3 指针算术 135

9.5 有关指针的注意事项 138

9.6 数组下标表示法和指针 138

9.7 将数组传递给函数 139

9.8 总结 143

9.9 问与答 143

9.10 作业 143

9.10.1 小测验 143

9.10.2 练习 144

TYPE & RUN 3 让程序暂停 145

第 10天课程 字符和字符串 147

10.1 char数据类型 147

10.2 使用字符变量 147

10.3 使用字符串 150

10.3.1 字符数组 150

10.3.2 初始化字符数组 150

10.4 字符串和指针 151

10.5 不存储在数组中的字符串 151

10.5.1 编译时分配字符空间 151

10.5.2 malloc()函数 152

10.5.3 使用malloc()函数 153

10.6 显示字符串和字符 155

10.6.1 puts()函数 155

10.6.2 printf()函数 156

10.7 从键盘读取字符串 156

10.7.1 使用gets()函数输入字符串 156

10.7.2 使用scanf()函数输入字符串 159

10.8 总结 161

10.9 问与答 161

10.10 作业 162

10.10.1 小测验 162

10.10.2 练习 163

第 11天课程 结构、共用体和TypeDef 164

11.1 简单结构 164

11.1.1 定义和声明结构 164

11.1.2 存取结构的成员 165

11.2 复杂结构 167

11.2.1 包含其他结构的结构 167

11.2.2 包含数组的结构 170

11.3 结构数组 171

11.4 初始化结构 174

11.5 结构和指针 176

11.5.1 将指针作为结构的成员 176

11.5.2 创建指向结构的指针 178

11.5.3 使用指针和结构数组 179

11.5.4 将结构作为参数传递给函数 181

11.6 共用体 182

11.6.1 定义、声明和初始化共用体 182

11.6.2 存取共用体的成员 183

11.7 使用typedef给结构创建别名 187

11.8 总结 187

11.9 问与答 187

11.10 作业 188

11.10.1 小测验 188

11.10.2 练习 188

第 12天课程 变量作用域 190

12.1 作用域是什么 190

12.1.1 演示作用域 190

12.1.2 作用域为何重要 192

12.2 外部变量 192

12.2.1 外部变量的作用域 192

12.2.2 何时使用外部变量 192

12.2.3 extern关键字 192

12.3 局部变量 193

12.3.1 静态变量和动态变量 194

12.3.2 函数参数的作用域 196

12.3.3 外部静态变量 196

12.3.4 寄存器变量 196

12.4 局部变量和main()函数 197

12.5 应使用哪种存储类型 197

12.6 局部变量和代码块 198

12.7 总结 199

12.8 问与答 199

12.9 作业 200

12.9.1 小测验 200

12.9.2 练习 200

TYPE & RUN 4 机密消息 203

第 13天课程 高级程序流程控制 206

13.1 提早结束循环 206

13.1.1 break语句 206

13.1.2 continue语句 208

13.2 goto语句 209

13.3 死循环 211

13.4 switch语句 214

13.5 退出程序 221

13.6 在程序中执行操作系统命令 222

13.7 总结 224

13.8 问与答 224

13.9 作业 225

13.9.1 小测验 225

13.9.2 练习 225

第 14天课程 操纵屏幕、打印机和键盘 227

14.1 流和C语言 227

14.1.1 何为程序的输入/输出 227

14.1.2 什么是流 228

14.1.3 文本流和二进制流 228

14.1.4 预定义的流 228

14.2 使用C语言的流函数 229

14.3 读取键盘输入 230

14.3.1 字符输入 230

14.3.2 格式化输入 236

14.4 控制屏幕输出 242

14.4.1 使用putchar()、putc()和fputc()输出字符 242

14.4.2 使用puts()和fputs()输出字符串 244

14.4.3 使用printf()和fprintf()格式化输出 244

14.5 重定向输入/输出 249

14.6 何时使用fprintf() 251

14.7 总结 252

14.8 问与答 253

14.9 作业 253

14.9.1 小测验 253

14.9.2 练习 254

第 二周复习 255

第三周课程

第 15天课程 有关指针的高级主题 262

15.1 声明指向指针的指针 262

15.2 指针和多维数组 263

15.3 指针数组 269

15.3.1 复习字符串和指针 269

15.3.2 声明char类型指针数组 269

15.3.3 范例 271

15.4 函数指针 275

15.4.1 声明函数指针 276

15.4.2 初始化并使用函数指针 276

15.5 链表 283

15.5.1 有关链表的基本知识 283

15.5.2 使用链表 284

15.5.3 演示简单链表 288

15.5.4 实现链表 290

15.6 总结 297

15.7 问与答 297

15.8 作业 297

15.8.1 小测验 297

15.8.2 练习 298

第 16天课程 使用磁盘文件 300

16.1 将流与磁盘文件关联起来 300

16.2 磁盘文件的类型 300

16.3 文件名 301

16.4 打开文件 301

16.5 读写文件数据 304

16.5.1 格式化文件输入/输出 304

16.5.2 字符输入/输出 307

16.5.3 直接文件输入/输出 309

16.6 文件缓冲技术:关闭和刷新文件 311

16.7 顺序文件存取和随机文件存取 312

16.7.1 ftell()和rewind()函数 313

16.7.2 fseek()函数 315

16.8 检测文件尾 317

16.9 文件管理函数 319

16.9.1 删除文件 319

16.9.2 给文件重命名 320

16.9.3 复制文件 321

16.10 使用临时文件 323

16.11 总结 324

16.12 问与答 324

16.13 作业 325

16.13.1 小测验 325

16.13.2 练习 325

TYPE & RUN 5 计算字符数 327

第 17天课程 操纵字符串 331

17.1 确定字符串的长度 331

17.2 复制字符串 332

17.2.1 strcpy()函数 332

17.2.2 strncpy()函数 333

17.2.3 strdup()函数 334

17.3 拼接字符串 335

17.3.1 strcat()函数 335

17.3.2 strncat()函数 337

17.4 比较字符串 338

17.4.1 比较两个完整字符串 338

17.4.2 比较字符串的一部分 340

17.4.3 比较字符串时忽略大小写 341

17.5 查找字符串 341

17.5.1 strchr()函数 341

17.5.2 strrchr()函数 342

17.5.3 strcspn()函数 342

17.5.4 strspn()函数 343

17.5.5 strpbrk()函数 344

17.5.6 strstr()函数 345

17.6 字符串转换 346

17.7 其他字符串函数 347

17.7.1 strrev()函数 347

17.7.2 strset()和strnset()函数 347

17.8 将字符串转换为数字 348

17.8.1 将字符串转换为int 348

17.8.2 将字符串转换为long值 349

17.8.3 将字符串转换为long long值 349

17.8.4 将字符串转换为浮点数 349

17.9 字符检测函数 350

17.10 总结 354

17.11 问与答 354

17.12 作业 355

17.12.1 小测验 355

17.12.2 练习 355

第 18天课程 有关函数的高级主题 357

18.1 将指针传递给函数 357

18.2 void类型的指针 360

18.3 接受可变数目参数的函数 362

18.4 返回指针的函数 364

18.5 总结 366

18.6 问与答 366

18.7 作业 367

18.7.1 小测验 367

18.7.2 练习 367

第 19天课程 函数库 369

19.1 数学函数 369

19.1.1 三角函数 369

19.1.2 指数函数和对数函数 369

19.1.3 双曲线函数 370

19.1.4 其他数学函数 370

19.1.5 演示数学函数 370

19.2 处理时间 371

19.2.1 时间的表示 371

19.2.2 时间函数 372

19.2.3 使用时间函数 374

19.3 处理错误 376

19.3.1 assert()宏 376

19.3.2 头文件errno.h 378

19.3.3 perror()函数 378

19.4 查找和排序 380

19.4.1 使用bsearch()进行查找 380

19.4.2 使用qsort()进行排序 381

19.4.3 演示查找和排序 381

19.5 总结 386

19.6 问与答 386

19.7 作业 387

19.7.1 小测验 387

19.7.2 练习 387

TYPE & RUN 6 计算抵押贷款的偿还金额 389

第 20天课程 管理内存 391

20.1 类型转换 391

20.1.1 自动类型转换 391

20.1.2 显式转换 393

20.2 分配内存的存储空间 394

20.2.1 使用malloc()函数分配内存 394

20.2.2 使用calloc()函数分配内存 396

20.2.3 使用realloc()函数分配更多的内存 397

20.2.4 使用free()函数释放内存 399

20.3 操纵内存块 400

20.3.1 使用memset()函数初始化内存 401

20.3.2 使用memcpy()复制内存中的数据 401

20.3.3 使用memmove()函数移动内存中的数据 401

20.4 位的用法 402

20.4.1 移位运算符 403

20.4.2 按位逻辑运算符 404

20.4.3 求补运算符 405

20.4.4 结构中的位字段 405

20.5 总结 406

20.6 问与答 407

20.7 作业 407

20.7.1 小测验 407

20.7.2 练习 408

第 21天课程 编译器的高级用法 410

21.1 使用多个源代码文件的编程 410

21.1.1 模块化编程的优点 410

21.1.2 模块化编程技术 410

21.1.3 模块的组成部分 412

21.1.4 外部变量和模块化编程 413

21.1.5 使用.obj文件 413

21.1.6 使用生成工具 414

21.2 C语言的预处理器 414

21.2.1 #define预处理器编译指令 415

21.2.2 使用编译指令#include 418

21.2.3 使用#if、#elif、#else和#endif 418

21.2.4 使用#if…#endif来帮助调试 419

21.2.5 避免将头文件包含多次 420

21.2.6 #undef编译指令 420

21.3 预定义的宏 421

21.4 使用命令行参数 421

21.5 总结 423

21.6 问与答 423

21.7 作业 424

21.7.1 小测验 424

21.7.2 练习 424

第三周复习 426

附加课程

第 22天课程 附加课程1 面向对象编程语言 434

22.1 过程性语言和面向对象语言 434

22.2 面向对象的特征 435

22.2.1 多态 435

22.2.2 封装 437

22.2.3 继承 438

22.2.4 使用OOP 438

22.2.5 C++与C语言的关系 441

22.2.6 C++程序 442

22.3 Java编程语言 442

22.3.1 Java与C和C++的关系 442

22.3.2 Java的平台独立性 443

22.3.3 包 443

22.3.4 Java小程序(applet)和应用程序 443

22.3.5 Java的类库 443

22.3.6 使用Java编写一个显示Hello, World的程序 444

22.4 C#编程语言 444

22.5 总结 445

22.6 问与答 445

22.7 作业 446

22.7.1 小测验 446

22.7.2 练习 446

第 23天课程 附加课程2 C++编程语言 447

23.1 第 一个C++程序 447

23.2 C++的关键字 449

23.3 C++的数据类型 449

23.4 声明变量 450

23.5 运算 451

23.6 函数 451

23.6.1 重载函数 451

23.6.2 为参数设置默认值 451

23.6.3 内联函数 453

23.7 总结 456

23.8 问与答 456

23.9 作业 456

23.9.1 小测验 456

23.9.2 练习 457

第 24天课程 附加课程3 C++类和对象 458

24.1 C++中的复杂数据类型 458

24.2 类的用法 464

24.2.1 控制对类中数据的访问 465

24.2.2 设置类数据的访问类型 466

24.3 创建存取成员函数 469

24.4 结构与类 471

24.5 类的内务管理 472

24.5.1 构造函数 472

24.5.2 析构函数 472

24.5.3 使用构造函数和析构函数 472

24.6 再谈函数重载 474

24.7 再谈C++的OOP特征 474

24.8 将类用作数据成员 474

24.9 继承 475

24.9.1 创建用于继承的基类 476

24.9.2 数据存取限定符protected 478

24.9.3 继承基类 478

24.9.4 再谈构造函数和析构函数 481

24.10 本书介绍的C++知识小结 482

24.11 详细介绍C++的图书 483

24.12 总结 483

24.13 问与答 483

24.14 作业 484

24.14.1 小测验 484

24.14.2 练习 484

第 25天课程 附加课程4 Java语言基础 485

25.1 Java程序的结构 485

25.2 Java程序的基本组成部分 485

25.2.1 导入语句 486

25.2.2 方法 486

25.2.3 注释 486

25.3 Java中的关键字 487

25.4 Java标识符 488

25.5 数据类型 489

25.5.1 基本数据类型 489

25.5.2 常量 490

25.5.3 声明和初始化变量 490

25.5.4 变量的作用域 490

25.5.5 存储字符串数据 491

25.6 输入和输出 492

25.7 数组 494

25.8 运算符 494

25.9 流程控制 495

25.9.1 if…else 495

25.9.2 while和do…while 495

25.9.3 switch 496

25.9.4 for 496

25.10 总结 497

25.11 问与答 497

25.12 作业 497

25.12.1 小测验 497

25.12.2 练习 498

第 26天课程 附加课程5 Java类和方法 499

26.1 定义类 499

26.1.1 指定类所属的包 500

26.1.2 创建类的属性 500

26.1.3 创建并使用一个简单的类 500

26.2 类的方法 501

26.2.1 方法演示 502

26.2.2 重载方法 504

26.2.3 类的构造函数 505

26.3 使用继承 508

26.4 总结 511

26.5 问与答 511

26.6 作业 511

第 27天课程 附加课程6 其他Java技术 512

27.1 异常 512

27.2 读写文件 513

27.2.1 读文本文件 513

27.2.2 写文本文件 514

27.3 图形和Windows编程 516

27.3.1 创建Windows应用程序 516

27.3.2 绘制几何形状和直线 517

27.3.3 使用按钮和弹出式窗口 519

27.4 编写Java小程序 522

27.4.1 小程序和应用程序之间的区别 522

27.4.2 小程序的结构 523

27.4.3 将小程序加入到Web页中 523

27.4.4 使用小程序 524

27.5 总结 525

27.6 问与答 526

27.7 作业 526

第 28天课程 附加课程7 C#编程语言 527

28.1 C#是什么 527

28.2 为何使用C# 527

28.2.1 C#是简单的 528

28.2.2 C#是现代的 528

28.2.3 C#是面向对象的 528

28.2.4 C#强大、灵活 528

28.2.5 C#包含的单词为数不多 528

28.2.6 C#是模块化的 529

28.2.7 C#是流行的 529

28.3 C#和其他编程语言的比较 529

28.4 C#程序的类型 530

28.5 创建C#程序 530

28.5.1 给源代码文件命名 530

28.5.2 执行C#程序 531

28.5.3 编译C#源代码 531

28.5.4 C#编译器和.NET运行环境 532

28.6 第 一个C#程序 532

28.7 显示基本信息 532

28.8 C#和Web 534

28.9 总结 535

28.10 问与答 535

28.11 作业 535

28.11.1 小测验 535

28.11.2 练习 536

附加课程复习 537

附录A ASCII字符集 538

附录B C/C++中的保留字 542

附录C 使用二进制和十六进制数 544

C.1 十进制 544

C.2 二进制 544

C.3 十六进制 544

附录D 移植性问题 546

D.1 ANSI标准 546

D.2 ANSI关键字 546

D.3 区分大小写 546

D.4 可移植的字符 548

D.5 确保ANSI兼容性 548

D.6 绕开ANSI标准 549

D.7 使用可移植的数值变量 549

D.7.1 **大值和**小值 550

D.7.2 确定数字的类型 555

D.7.3 转换字符的大小写:一个可移植性范例 558

D.8 可移植的结构和共用体 559

D.8.1 字对齐 559

D.8.2 读写结构 560

D.8.3 在可移植的程序中使用非-ANSI特性 560

D.8.4 ANSI标准头文件 562

D.9 总结 562

D.10 问与答 562

D.11 作业 563

D.11.1 小测验 563

D.11.2 练习 563

附录E 常用的C语言函数 565

附录F 作业答案 569

第 1天课程的答案 569

第 2天课程的答案 570

第3天课程的答案 571

第4天课程的答案 572

第5天课程的答案 574

第6天课程的答案 577

第7天课程的答案 578

第8天课程的答案 582

第9天课程的答案 586

第 10天课程的答案 588

第 11天课程的答案 590

第 12天课程的答案 592

第 13天课程的答案 595

第 14天课程的答案 596

第 15天课程的答案 597

第 16天课程的答案 599

第 17天课程的答案 599

第 18天课程的答案 600

第 19天课程的答案 601

第 20天课程的答案 601

第 21天课程的答案 603

附加课程1的答案 603

附加课程2的答案 604

附加课程3的答案 604

附加课程4的答案 605

附加课程5的答案 605

附加课程6的答案 605

附加课程7的答案 606

附录G Dev-C++编译器 607

G.1 Dev-C++简介 607

G.2 在Microsoft Windows上安装Dev-C++ 607

G.3 Dev-C++中的程序 609

G.4 使用Dev-C++ 609

G.4.1 针对C语言编程定制Dev-C++ 610

G.4.2 在Dev-C++中输入并编译程序 611

G.4.3 编译Dev-C++程序 613

G.4.4 运行Dev-C++程序 613

G.5 总结 614

详情

本书是初学者学习C语言的经典之作,以循序渐进的方式介绍了C语言编程方面的知识,并提供了丰富的实例和大量的练习。通过学习实例,并将所学知识用于完成练习,读者将逐步了解、熟悉并精通C语言。

图书摘要

相关图书

DirectX 12 3D 游戏开发实战
DirectX 12 3D 游戏开发实战
Python和NLTK自然语言处理
Python和NLTK自然语言处理
scikit-learn机器学习(第2版)
scikit-learn机器学习(第2版)
C++编程自学宝典
C++编程自学宝典
数据科学实战手册(第2版)
数据科学实战手册(第2版)
Scala实用指南
Scala实用指南

相关文章

相关课程