《C语言从入门到精通》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:陈锐等编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2010
  • ISBN:9787121118692
  • 页数:474 页
图书介绍:本书从最基本的概念入手,由浅入深,综合典型的实例,引导初学者由浅入深地掌握C语言。本书共21章。其中,第1~2章是起步篇,包括程序设计基础知识和开发工具。第3~12章是基础篇,包括基本数据类型、运算符与表达式、语句、C语句与数据的输入输出、结构化程序设计、数组、函数、指针、结构体和联合体、位运算与预处理。第13~20章是提高篇,包括链表、文件、图形界面设计、键盘与鼠标操作、网络编程、常用算法、队列和栈、排序算法。

第1篇 起步篇 1

第1章C语言基础 1

1.1为什么要选择C语言 1

1.1.1选择C语言的好处 1

1.1.2 C语言的特点 2

1.1.3如何学好C语言 2

1.2程序设计语言基础——进制转换 3

1.2.1二进制与位权 4

1.2.2二进制数与十进制数的相互转换 5

1.2.3十六进制数与十进制数的相互转换 6

1.2.4十进制数与八进制的转换 8

1.2.5各种计算机进制数的转换 9

1.3计算机中数的表示 10

1.3.1计算机中的正数与负数表示 10

1.3.2原码、补码 11

1.3.3浮点数 13

1.4小结 15

第2章C语言常用开发环境的介绍 16

2.1 Turbo C 3.0开发环境的介绍 16

2.1.1 Turbo C 3.0的开发环境 16

2.1.2使用Turbo C 3.0运行C语言程序 18

2.1.3 C程序的开发步骤 19

2.2 Visual C++ 6.0开发环境的介绍 20

2.2.1使用Visual C++ 6.0新建项目 20

2.2.2在Visual C++ 6.0的项目中新建程序文件 21

2.2.3 Visual C++ 6.0的开发环境 23

2.2.4使用Visual C++ 6.0运行C语言程序 24

2.3小结 26

第2篇 基础篇 27

第3章 基本数据类型 27

3.1数据类型的定义及分类 27

3.2变量与常量 29

3.2.1变量 29

3.2.2常量 30

3.3整型变量 31

3.3.1整型变量的定义 32

3.3.2整型变量占用的字节数与表示范围 32

3.3.3整型变量的存储形式 33

3.3.4整型变量的赋值 34

3.3.5一个简单的C程序——输出整型变量的值 34

3.4实型变量 35

3.4.1实型变量的定义与赋值 35

3.4.2实型变量的表示范围 36

3.4.3一个简单的C程序——输出实型变量的值 36

3.5字符型变量 36

3.5.1字符型变量的定义与赋值 37

3.5.2字符型数据的存储形式 37

3.5.3字符数据与字符串数据的区别 39

3.6小结 39

第4章 运算符与表达式 40

4.1运算符与表达式的基础 40

4.1.1运算符的分类 40

4.1.2运算符的优先级与结合性 41

4.1.3多种类型数据的混合运算——自动类型转换 41

4.2算术运算符与算术表达式 43

4.2.1+,-,*,/,%——双目运算符 43

4.2.2算术表达式 43

4.2.3强制类型转换 44

4.2.4++++与—、+与——单目运算符 45

4.3赋值运算符与赋值表达式 47

4.3.1直接赋值运算符与直接赋值表达式 47

4.3.2赋值表达式中的类型转换 48

4.3.3复合算术赋值运算符与表达式 53

4.4关系运算符与关系表达式 54

4.4.1关系运算符 54

4.4.2关系表达式 55

4.5逻辑运算符与逻辑表达式 56

4.5.1逻辑运算符 56

4.5.2逻辑表达式 56

4.6逗号运算符与逗号表达式 58

4.6.1逗号运算符 58

4.6.2逗号表达式 59

4.6.3逗号运算符应用举例 59

4.7小结 60

第5章C语句与数据的输入/输出 61

5.1语句 61

5.1.1语句的分类 61

5.1.2赋值语句 63

5.1.3变量赋初值 64

5.2字符数据的输入与输出 64

5.2.1 putchar函数——字符数据输出函数 65

5.2.2 getchar函数——字符数据输入函数 65

5.2.3 getch函数——另一个字符数据输入函数 66

5.3格式化数据的输入与输出 67

5.3.1 printf函数——格式化数据的输出 67

5.3.2 scanf函数——格式化数据的输入 74

5.4小结 77

第6章 结构化程序的设计 79

6.1顺序结构程序的设计 79

6.1.1顺序结构 79

6.1.2顺序结构程序设计应用举例 79

6.2选择结构程序的设计 81

6.2.1 if选择结构 82

6.2.2 switch选择结构 90

6.2.3条件运算符与条件表达式 95

6.2.4选择结构程序设计应用举例 96

6.3循环结构程序设计 100

6.3.1 while循环语句 101

6.3.2 do-while循环语句 102

6.3.3 for循环语句 104

6.3.4 break语句 109

6.3.5 continue语句 110

6.3.6 goto语句 112

6.3.7循环结构的嵌套 113

6.3.8循环结构程序设计应用举例 116

6.4小结 120

第7章 数组 121

7.1一维数组 121

7.1.1定义一维数组 121

7.1.2引用一维数组 122

7.1.3初始化一维数组 123

7.1.4一维数组应用举例 123

7.2二维数组 127

7.2.1定义二维数组 127

7.2.2引用二维数组 128

7.2.3初始化二维数组 129

7.2.4二维数组应用举例 130

7.3字符数组与字符串 135

7.3.1定义字符数组与初始化 135

7.3.2引用字符数组 136

7.3.3字符数组与字符串 136

7.3.4字符数组的输入与输出 137

7.3.5字符串的相关函数 138

7.3.6字符串应用举例 143

7.4小结 147

第8章 函数 149

8.1函数初识与函数的分类 149

8.1.1函数初识 149

8.1.2函数的分类 150

8.2函数的定义 150

8.2.1无参函数的定义 150

8.2.2有参函数的定义 151

8.2.3有参函数传统的定义方式 152

8.3函数的参数与函数返回值 152

8.3.1实际参数与形式参数 152

8.3.2函数返回值 154

8.4函数的调用 156

8.4.1函数的一般调用 156

8.4.2函数原型 159

8.4.3函数的嵌套调用 162

8.5函数的递归调用 165

8.5.1递归调用的定义 165

8.5.2递归调用应用举例 166

8.6数组作为函数的参数 169

8.6.1数组元素作为函数参数 169

8.6.2数组名作为函数参数 171

8.6.3多维数组名作为函数参数 174

8.7变量的作用域 176

8.7.1局部变量 176

8.7.2全局变量 177

8.8变量的存储类别 181

8.8.1自动变量 181

8.8.2静态变量 182

8.8.3寄存器变量 183

8.8.4外部变量 184

8.9内部函数与外部函数 187

8.9.1内部函数 187

8.9.2外部函数 187

8.10小结 189

第9章 指针 190

9.1地址和指针 190

9.1.1什么是地址 190

9.1.2什么是指针——间接存取 191

9.2指针与变量 192

9.2.1定义指针变量 192

9.2.2引用指针变量 192

9.2.3指针变量作为函数的参数 195

9.3指针与数组 198

9.3.1指向数组元素的指针与指向数组的指针 198

9.3.2指向多维数组的指针变量 201

9.3.3数组名(指针)作为函数参数 205

9.3.4指针数组 214

9.3.5二级指针 215

9.4指针与字符串 217

9.4.1字符串指针 217

9.4.2字符串指针作为函数参数 218

9.4.3字符指针数组 220

9.4.4指针数组作为mam的参数 222

9.5指针与函数 223

9.5.1函数指针——指向函数的指针 224

9.5.2函数指针作为函数的参数 225

9.5.3指针函数——返回指针值的函数 228

9.5.4 void指针 230

9.6指针与const 230

9.6.1常量指针——指向常量的指针 230

9.6.2指针常量——指针不可以改变 231

9.6.3常量指针常量——指向常量的指针常量 232

9.7小结 233

第10章 结构体与联合体 234

10.1结构体 234

10.1.1定义结构体类型 234

10.1.2定义结构体变量 235

10.1.3引用结构体变量 237

10.1.4初始化结构体变量 238

10.1.5结构体应用举例 240

10.2结构体数组 241

10.2.1定义结构体数组 241

10.2.2初始化结构体数组 242

10.2.3结构体数组应用举例 243

10.3指针与结构体 246

10.3.1指向结构体变量的指针 246

10.3.2指向结构体数组的指针 248

10.3.3结构体变量作为函数的参数 249

10.3.4指向结构体变量的指针作为函数的参数 251

10.4用typedef定义类型 252

10.4.1使用typedef定义类型 252

10.4.2 typedef应用举例 254

10.5联合体 255

10.5.1定义联合体类型及变量 255

10.5.2引用联合体 256

10.5.3使用联合体应注意的问题 257

10.5.4联合体的应用举例 258

10.6枚举类型 261

10.6.1定义枚举类型及变量 261

10.6.2使用枚举类型的一些说明 261

10.6.3枚举类型应用举例 262

10.7小结 265

第11章 位运算 266

11.1位运算符与位运算 266

11.1.1位与运算 266

11.1.2位或运算 268

11.1.3异或运算 268

11.1.4取反运算 270

11.1.5左移运算 270

11.1.6右移运算 273

11.1.7位复合赋值运算符 275

11.2位段 275

11.2.1定义位段 275

11.2.2引用位段成员 276

11.3小结 277

第12章 预处理命令 278

12.1宏定义#define 278

12.1.1不带参数的宏定义 278

12.1.2带参数的宏定义 280

12.1.3条件编译命令中的运算符#和 282

12.2文件包含命令#include 283

12.2.1文件包含命令的两种方式 283

12.2.2文件包含命令应用举例 284

12.3条件编译命令 285

12.3.1条件编译命令——#ifdef 285

12.3.2条件编译命令——#ifndef 287

12.3.3条件编译命令——#if 287

12.4小结 288

第3篇 提高篇 291

第13章 链表 291

13.1什么是链表 291

13.1.1链表的基本概念 291

13.1.2动态内存分配 292

13.2链表的操作 293

13.2.1创建链表 293

13.2.2输出链表 296

13.2.3链表的查找操作 297

13.2.4链表的插入操作 298

13.2.5链表的删除操作 299

13.3链表应用举例 303

13.3.1直接插入排序——使用链表实现 303

13.3.2一元多项式的相加 309

13.4小结 312

第14章 文件 314

14.1文件与文件类型指针 314

14.1.1文件的分类 314

14.1.2文件类型指针 315

14.2打开文件与关闭文件 315

14.2.1打开文件 315

14.2.2关闭文件 316

14.3文件的读写 317

14.3.1 fgetc函数与fputc函数 317

14.3.2 fread函数与fwrite函数 319

14.3.3 fscanf函数与fprintf函数——格式化读写函数 323

14.3.4 fgets函数与fputs函数——字符串读写函数 325

14.4文件的定位 325

14.4.1 rewind函数——重置文件指针 326

14.4.2 fseek函数——定位文件指针 327

14.4.3 ftell函数——得到文件指针位置 329

14.5出错检测 329

14.5.1 ferror函数 330

14.5.2 clearerr函数 330

14.6小结 330

第15章 图形界面设计 331

15.1相关概念 331

15.1.1图形显示与适配器 331

15.1.2显示器的工作原理 332

15.2文本屏幕操作 333

15.2.1屏幕操作函数 333

15.2.2字符属性函数 336

15.2.3文本操作函数 338

15.2.4屏幕状态函数 341

15.3图形系统的初始化与关闭 343

15.3.1图形系统的初始化 343

15.3.2图形系统的关闭 346

15.4图形屏幕管理及属性 346

15.4.1图形屏幕管理 346

15.4.2设置图形属性 347

15.5基本绘图函数 349

15.5.1画点类函数 349

15.5.2画线类函数 350

15.5.3圆弧类函数 351

15.5.4多边形函数 352

15.5.5填充函数 354

15.6图形模式下的文本输出 356

15.6.1文本输出函数 356

15.6.2文本属性函数 357

15.6.3汉字的输出 359

15.7小结 362

第16章 键盘与鼠标操作 363

16.1键盘操作 363

16.1.1键盘编码 363

16.1.2键盘操作函数 364

16.2鼠标操作 366

16.2.1鼠标的工作原理 366

16.2.2鼠标综合应用举例 371

16.3小结 374

第17章 网络编程基础 375

17.1网络基础知识 375

17.1.1什么是计算机网络 375

17.1.2网络协议 375

17.1.3协议分层 376

17.1.4网络参考模型 377

17.1.5端口 379

17.2 Winsocket基础 379

17.2.1套接字(socket) 379

17.2.2基于TCP的socket编程 380

17.2.3基于UDP的socket编程 381

17.3 Winsocket的相关函数 381

17.3.1 WSAStartup函数——启动套接字库 381

17.3.2 socket函数——建立套接字 382

17.3.3 bind函数——绑定本地IP地址和端口 383

17.3.4 listen 函数——侦听客户端请求 384

17.3.5 accept函数——等待客户端的请求 384

17.3.6 send函数——发送数据 384

17.3.7 recv函数——接收数据 385

17.3.8 connect函数——建立连接 385

17.3.9 recvfrom函数——接收数据 385

17.3.10 sendto函数——发送数据 385

17.4基于TCP的简单网络程序 386

17.4.1服务器端应用程序的实现 386

17.4.2客户端应用程序的实现 389

17.5基于UDP的简单网络聊天程序 391

17.5.1服务器端应用程序的实现 391

17.5.2客户端应用程序的实现 393

17.6小结 395

第18章 常用算法设计 396

18.1算法基础 396

18.1.1什么是算法及算法的描述语言 396

18.1.2算法的特性 397

18.1.3算法设计的目标 398

18.1.4算法的时间复杂度和空间复杂度 398

18.2迭代算法 399

18.2.1算法思想 399

18.2.2求一个数的平方根 399

18.2.3谷角猜想 400

18.3递推算法 401

18.3.1认识递推 402

18.3.2斐波那契数列 402

18.3.3分西瓜 404

18.3.4该存多少钱 404

18.4穷举算法 405

18.4.1算法思想 405

18.4.2完全数 406

18.4.3背包问题 407

18.5递归算法 409

18.5.1算法思想 409

18.5.2数制转换 409

18.5.3组合问题 411

18.6分治算法 412

18.6.1算法思想 412

18.6.2求n个数的最大值和最小值 413

18.6.3赛程安排问题 415

18.7贪心算法 418

18.7.1算法思想 418

18.7.2加油站问题 419

18.7.3找零钱问题 420

18.8小结 422

第19章 简单数据结构——队列和栈 424

19.1队列 424

19.1.1队列的定义 424

19.1.2队列的表示与实现 425

19.1.3顺序循环队列 426

19.1.4顺序循环队列的实现 427

19.1.5链式队列的表示与实现 429

19.1.6队列的应用——商品货架模拟 432

19.2栈 436

19.2.1栈的定义 436

19.2.2顺序栈的存储结构与实现 436

19.2.3链式栈的存储结构与实现 439

19.2.4栈的应用举例——算术表达式求值 441

19.3小结 445

第20章 常用技术——排序 446

20.1排序的基础知识 446

20.1.1排序的相关概念 446

20.1.2排序算法的分类 447

20.2插入类排序 447

20.2.1直接插入排序 447

20.2.2折半插入排序 449

20.2.3希尔排序 450

20.3选择类排序 451

20.3.1简单选择排序 451

20.3.2堆排序 453

20.4交换类排序 460

20.4.1冒泡排序 460

20.4.2快速排序 462

20.5归并类排序 465

20.5.1二路归并排序的算法思想 465

20.5.2二路归并排序算法的实现 465

20.6分配类排序 468

20.6.1基数排序的算法思想 468

20.6.2基数排序算法的实现 470

20.7各种排序方法的比较 473

20.8小结 474