《21天学通C语言》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)Bradley L. Jones,(美)Peter Aitken著;信达工作室译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2003
  • ISBN:7115111448
  • 页数:489 页
图书介绍:本书是初学者学习C语言的经典之作,按最新的标准以循序渐进的方式介绍了C语言编程方面的知识,并提供了丰富的实例和大量的练习,通过学习实例,并将所学知识用于完成练习,读者将逐步了解、熟悉并精通C语言。

1.1 C语言简史 2

1.2 为何要使用C语言 2

第一周课程 2

第1天课程 C语言初步 2

1.3 编程前的准备工作 3

1.4.2 编译源代码 4

1.4.1 创建源代码 4

1.4 程序开发周期 4

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

1.4.4 结束开发周期 6

1.5.1 输入并编译hello.c 7

1.5 第一个C语言程序 7

1.7 问与答 9

1.6 总结 9

1.8.2 练习 10

1.8.1 小测验 10

1.8 作业 10

第一个TYPE RUN 12

TYPE RUN1 打印程序清单 12

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

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

2.2.3 变量定义(第4行) 15

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

2.2 程序的组成部分 15

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

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

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

2.2.4 函数原型(第6行) 16

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

2.2.9 运行程序 17

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

2.3 重温程序的组成部分 18

2.2.10 有关精度的说明 18

2.6.1 小测验 20

2.6 作业 20

2.4 总结 20

2.5 问与答 20

2.6.2 练习 21

3.1 计算机内存 23

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

3.2.1 变量名 24

3.2 使用变量存储信息 24

3.3 数值变量的类型 25

3.3.2 typedef关键字 27

3.3.1 变量声明 27

3.4.1 字面常量 28

3.4 常量 28

3.3.3 初始化变量 28

3.4.2 符号常量 29

3.5 总结 31

3.7.2 练习 32

3.7.1 小测验 32

3.6 问与答 32

3.7 作业 32

4.1.1 空白对语句的影响 34

4.1 语句 34

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

4.2.1 简单表达式 35

4.2 表达式 35

4.1.2 创建空语句 35

4.1.3 使用复合语句 35

4.3.1 赋值运算符 36

4.3 运算符 36

4.2.2 复杂表达式 36

4.3.2 数学运算符 37

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

4.3.5 关系运算符 41

4.3.4 子表达式的计算顺序 41

4.4 if语句 42

4.4.1 else子句 44

4.5 判断关系表达式 46

4.5.1 关系运算符的优先级 47

4.7 再谈true/false值 48

4.6 逻辑运算符 48

4.7.1 运算符的优先级 49

4.7.3 条件运算符 50

4.7.2 复合赋值运算符 50

4.8 再谈运算符优先级 51

4.7.4 逗号运算符 51

4.10 问与答 52

4.9 总结 52

4.11.2 练习 53

4.11.1 小测验 53

4.11 作业 53

TYPE RUN2 猜数游戏 55

5.1.2 函数的用法 57

5.1.1 函数的定义 57

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

5.1 函数是什么 57

5.2 函数的工作原理 59

5.3.2 规划结构化程序 60

5.3.1 结构化编程的优点 60

5.3 函数和结构化编程 60

5.4 编写函数 61

5.3.3 从顶向下的方法 61

5.4.4 参数列表 62

5.4.3 函数名 62

5.4.1 函数头 62

5.4.2 函数的返回类型 62

5.4.5 函数体 64

5.5 将参数传递给函数 67

5.4.6 函数原型 67

5.6 调用函数 68

5.6.1 递归 69

5.8 内联函数 70

5.7 函数的位置 70

5.10 问与答 71

5.9 总结 71

5.11.2 练习 72

5.11.1 小测验 72

5.11 作业 72

6.1 数组的基本知识 74

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

6.2.1 for语句 75

6.2 控制程序的执行 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.6 作业 88

6.5 问与答 88

6.4 总结 88

6.6.2 练习 89

6.6.1 小测验 89

7.1.2 格式化字符串 90

7.1.1 printf()函数 90

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

7.1 在屏幕上显示信息 90

7.1.3 转义序列 91

7.1.4 使用puts()显示消息 96

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

7.3 三字符序列 100

7.5 问与答 101

7.4 总结 101

7.6.2 练习 102

7.6.1 小测验 102

7.6 作业 102

第一周复习 104

8.1.1 一维数组 110

8.1 数组是什么 110

第二周课程 110

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

8.1.2 多维数组 113

8.2 命名和声明数组 114

8.2.1 初始化数组 115

8.2.2 初始化多维数组 116

8.2.3 数组的最大长度 119

8.5.1 小测验 121

8.5 作业 121

8.3 总结 121

8.4 问与答 121

8.5.2 练习 122

9.1.2 创建指针 123

9.1.1 计算机内存 123

第9天课程 指针 123

9.1 指针是什么 123

9.2.2 初始化指针 124

9.2.1 声明指针 124

9.2 指针和简单变量 124

9.2.3 使用指针 125

9.3 指针和变量类型 126

9.4 指针和数组 127

9.4.2 数组元素的存储 128

9.4.1 作为指针的数组名 128

9.4.3 指针算术 130

9.7 将数组传递给函数 133

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

9.5 有关指针的注意事项 133

9.9 问与答 137

9.8 总结 137

9.10.2 练习 138

9.10.1 小测验 138

9.10 作业 138

TYPE RUN3 让程序暂停 139

10.2 使用字符变量 141

10.1 char数据类型 141

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

10.4 字符串和指针 144

10.3.2 初始化字符数组 144

10.3 使用字符串 144

10.3.1 字符数组 144

10.5.2 malloc()函数 145

10.5.1 编译时分配字符空间 145

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

10.5.3 使用malloc()函数 146

10.6 显示字符串和字符 148

10.6.2 printf()函数 149

10.6.1 puts()函数 149

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

10.7 从键盘读取字符串 150

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

10.9 问与答 154

10.8 总结 154

10.10.1 小测验 155

10.10 作业 155

10.10.2 练习 156

11.1.1 定义和声明结构 157

11.1 简单结构 157

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

11.1.2 存取结构的成员 158

11.2.1 包含其他结构的结构 160

11.2 复杂结构 160

11.2.2 包含数组的结构 162

11.3 结构数组 164

11.4 初始化结构 167

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

11.5 结构和指针 168

11.5.2 创建指向结构的指针 170

11.5.3 使用指针和结构数组 171

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

11.6 共用体 174

11.6.2 存取共用体的成员 175

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

11.9 问与答 179

11.8 总结 179

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

11.10.2 练习 180

11.10.1 小测验 180

11.10 作业 180

12.1.1 演示作用域 182

12.1 作用域是什么 182

第12天课程 变量作用域 182

12.2.3 extern关键字 184

12.2.2 何时使用外部变量 184

12.1.2 作用域为何重要 184

12.2 外部变量 184

12.2.1 外部变量的作用域 184

12.3 局部变量 185

12.3.1 静态变量和动态变量 186

12.3.2 函数参数的作用域 187

12.3.4 寄存器变量 188

12.3.3 外部静态变量 188

12.6 局部变量和代码块 189

12.5 应使用哪种存储类型 189

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

12.7 总结 190

12.9.2 练习 191

12.9.1 小测验 191

12.8 问与答 191

12.9 作业 191

TYPE RUN4 机密消息 194

13.1.1 break语句 197

13.1 提早结束循环 197

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

13.1.2 continue语句 199

13.2 goto语句 200

13.3 死循环 202

13.4 switch语句 205

13.5.1 exit()函数 212

13.5 退出程序 212

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

13.7 总结 214

13.9.2 练习 215

13.9.1 小测验 215

13.8 问与答 215

13.9 作业 215

14.1.2 什么是流 217

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

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

14.1 流和C语言 217

14.1.4 预定义的流 218

14.1.3 文本流和二进制流 218

14.2.1 例子 219

14.2 使用C语言的流函数 219

14.3.1 字符输入 220

14.3 读取键盘输入 220

14.3.2 格式化输入 225

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

14.4 控制屏幕输出 231

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

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

14.5 重定向输入/输出 238

14.6 何时使用fprintf() 239

14.5.1 重定向输入 239

14.6.1 使用stderr 240

14.8 问与答 241

14.7 总结 241

14.9.2 练习 242

14.9.1 小测验 242

14.9 作业 242

第二周复习 244

15.1 声明指向指针的指针 252

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

第三周课程 252

15.2 指针和多维数组 253

15.3.1 复习字符串和指针 259

15.3.2 声明char类型指针数组 259

15.3 指针数组 259

15.3.3 范例 261

15.4.1 声明函数指针 265

15.4 函数指针 265

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

15.5.1 有关链表的基本知识 273

15.5 链表 273

15.5.2 使用链表 274

15.5.3 演示简单链表 278

15.5.4 实现链表 280

15.8 作业 286

15.7 问与答 286

15.6 总结 286

15.8.2 练习 287

15.8.1 小测验 287

16.2 磁盘文件的类型 289

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

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

16.4 打开文件 290

16.3 文件名 290

16.5 读写文件数据 292

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

16.5.2 字符输入/输出 296

16.5.3 直接文件输入/输出 297

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

16.7.1 ftell()和rewind()函数 301

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

16.7.2 fseek()函数 303

16.8 检测文件尾 305

16.9.1 删除文件 307

16.9 文件管理函数 307

16.9.2 给文件重命名 308

16.9.3 复制文件 309

16.10 使用临时文件 311

16.12 问与答 312

16.11 总结 312

16.13.2 练习 313

16.13.1 小测验 313

16.13 作业 313

TYPE RUN5 计算字符数 314

17.1 确定字符串的长度 318

第17天课程 操纵字符串 318

17.2.1 strcpy()函数 319

17.2 复制字符串 319

17.2.2 strncpy()函数 320

17.2.3 strdup()函数 321

17.3.1 strcat()函数 322

17.3 拼接字符串 322

17.3.2 strncat()函数 324

17.4.1 比较两个完整字符串 325

17.4 比较字符串 325

17.4.2 比较字符串的一部分 326

17.5.1 strchr()函数 328

17.5 查找字符串 328

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

17.5.3 strcspn()函数 329

17.5.2 strrchr()函数 329

17.5.4 strspn()函数 330

17.5.6 strstr()函数 331

17.5.5 strpbrk()函数 331

17.6 字符串转换 332

17.7.1 strrev()函数 333

17.7 其他字符串函数 333

17.8 将字符串转换为数字 334

17.7.2 strset()和strnset()函数 334

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

17.8.3 将字符串转换为longlong值 335

17.8.1 将字符串转换为int 335

17.8.2 将字符串转换为long值 335

17.9 字符检测函数 336

17.9.1 ANSI对大小写转换的支持 339

17.11 问与答 340

17.10 总结 340

17.12.2 练习 341

17.12.1 小测验 341

17.12 作业 341

18.1 将指针传递给函数 343

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

18.2 void类型的指针 346

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

18.4 返回指针的函数 350

18.7.1 小测验 352

18.7 作业 352

18.5 总结 352

18.6 问与答 352

18.7.2 练习 353

19.1.2 指数函数和对数函数 354

19.1.1 三角函数 354

第19天课程 函数库 354

19.1 数学函数 354

19.1.5 演示数学函数 355

19.1.4 其他数学函数 355

19.1.3 双曲线函数 355

19.2.2 时间函数 356

19.2.1 时间的表示 356

19.2 处理时间 356

19.2.3 使用时间函数 359

19.3 处理错误 360

19.3.1 assert()宏 361

19.3.3 perror()函数 362

19.3.2 头文件errno.h 362

19.4.1 使用bsearch()进行查找 364

19.4 查找和排序 364

19.4.3 演示查找和排序 365

19.4.2 使用qsort()进行排序 365

19.7.1 小测验 370

19.7 作业 370

19.5 总结 370

19.6 问与答 370

19.7.2 练习 371

TYPE RUN6 计算抵押贷款的偿还金额 372

20.1.1 自动类型转换 374

20.1 类型转换 374

第20天课程 管理内存 374

20.1.2 显式转换 376

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

20.2 分配内存的存储空间 377

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

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

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

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

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

20.3 操纵内存块 383

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

20.4.1 移位运算符 385

20.4 位的用法 385

20.4.2 按位逻辑运算符 386

20.4.4 结构中的位字段 387

20.4.3 求补运算符 387

20.6 问与答 389

20.5 总结 389

20.7.2 练习 390

20.7.1 小测验 390

20.7 作业 390

21.1.2 模块化编程技术 392

21.1.1 模块化编程的优点 392

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

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

21.1.3 模块的组成部分 394

21.1.5 使用.obj文件 395

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

21.2 C语言的预处理器 396

21.1.6 使用生成工具 396

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

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

21.2.2 使用编译指令#include 400

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

21.2.4 使用#if...#endif来帮助调试 401

21.3 预定义的宏 402

21.2.6 #undef编译指令 402

21.4 使用命令行参数 403

21.7.1 小测验 405

21.7 作业 405

21.5 总结 405

21.6 问与答 405

21.7.2 练习 406

第三周复习 407

附加课程(具体内容见光盘) 413

附录A ASCII字符集 414

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

C.3 十六进制 420

C.2 二进制 420

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

C.1 十进制 420

D.3 区分大小写 422

D.2 ANSI关键字 422

附录D 移植性问题 422

D.1 ANSI标准 422

D.6 绕开ANSI标准 424

D.5 确保ANSI兼容性 424

D.4 可移植的字符 424

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

D.7.1 最大值和最小值 426

D.7.2 确定数字的类型 430

D.8.1 字对齐 434

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

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

D.8.2 读写结构 435

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

D.8.4 ANSI标准头文件 437

D.11.1 小测验 438

D.11 作业 438

D.9 总结 438

D.10 问与答 438

D.11.2 练习 439

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

练习 444

小测验 444

附录F 作业答案 444

第1天课程的答案 444

练习 445

小测验 445

第2天课程的答案 445

练习 446

小测验 446

第3天课程的答案 446

练习 447

小测验 447

第4天课程的答案 447

练习 449

小测验 449

第5天课程的答案 449

练习 452

小测验 452

第6天课程的答案 452

练习 453

小测验 453

第7天课程的答案 453

练习 457

小测验 457

第8天课程的答案 457

练习 461

小测验 461

第9天课程的答案 461

练习 463

小测验 463

第10天课程的答案 463

小测验 465

第11天课程的答案 465

练习 466

练习 467

小测验 467

第12天课程的答案 467

小测验 470

第13天课程的答案 470

小测验 471

第14天课程的答案 471

练习 471

小测验 472

第15天课程的答案 472

练习 472

小测验 473

第16天课程的答案 473

练习 473

练习 474

小测验 474

练习 474

第17天课程的答案 474

小测验 475

第19天课程的答案 475

第18天课程的答案 475

小测验 475

练习 475

小测验 476

第20天课程的答案 476

练习 476

小测验 477

第21天课程的答案 477

练习 477

小测验 478

附加课程3的答案 478

附加课程1的答案 478

小测验 478

附加课程2的答案 478

小测验 478

小测验 479

附加课程5的答案 479

附加课程4的答案 479

小测验 479

练习 480

小测验 480

附加课程6的答案 480

小测验 480

附加课程7的答案 480

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

G.1 Dev-C++简介 482

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

G.4 使用Dev-C++ 484

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

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

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

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

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

G.5 总结 489