欢迎光临
免费的PDF电子书下载网站

C语言零起点精进攻略——C/C++入门·提高·精通 PDF下载

编辑推荐

1、本书是一本一线程序员教授零起点读者掌握C语言的经验性图书。

2、从计算机原理和数据内存控制原理角度讲解C语言的指令、变量和语句等内容,帮助读者真正理解C语言。

3、C语言的应用陷阱特别多,本书总结整理了这些使用中的陷阱,分布在相关章节,供读者提升内力之用。

4、本书讲解了Linux、Windows系统和手机上操作系统的区别,分析了CPU、硬盘和内存是什么关系,逐步提升读者对程序和系统的理解,这有助于编写更好的程序。

5、跨关思想。书中设定了三个大关,每章设定了一些小的关卡,读者学完一章,想一想,测一测,看自己在哪些知识和技能方面已经过关,就会发现距离自己成为专业程序员更近一步,给读者以学习的动力。

内容简介

C语言是学习其他程序设计语言的基础,也是编写硬件相关的嵌入式系统等系统级程序的优秀工具。本书从贴近CPU和内存原理的角度,给读者提供了一个学习—实践—应用C语言的逐步掌握C语言并成为C程序员的技能提升方案。

全书分5篇17章。前3篇分别讲述C语言的起步知识、控制程序流程的基础、编写基本C代码的组织工具;第4篇包含了编写系统级程序所需要的C指针、结构体、编译预处理等关键知识;第5篇提供了应用C开发程序所需要的技能和初步实践方法。

本书可作为高校学生学习C语言的教材和辅助读物,也可作为中学生参加NOIP竞赛的参考书,还能作为初级嵌入式程序员理解C语言的工具书。

作者简介

暂无

C语言零起点精进攻略——C/C++入门·提高·精通 PDF下载

目录

第1篇 起步知识

第1章 CPU运行原理和C语言003

1.1 CPU是如何工作的 / 003

1.1.1 指令节拍和流水线 / 004

1.1.2 摩尔定律让CPU越来越快 / 004

1.1.3 从CPU指令到程序设计语言 / 006

1.2 理解计算机程序设计 / 006

1.2.1 程序是什么 / 006

1.2.2 程序设计与程序设计语言 / 007

1.2.3 不断细化问题的结构化程序设计思想 / 007

1.3 C语言的初步知识 / 008

1.3.1 C语言的历史 / 008

1.3.2 C语言程序的特点 / 009

1.3.3 C语言程序的开发过程 / 010

1.4 程序生成的工具 / 010

1.4.1 编译器的概念 / 011

1.4.2 连接器的概念 / 011

1.4.3 项目和Building / 011

1.5 一个简单的C语言程序 / 012

1.5.1 学习写第一个C语言程序 / 012

1.5.2 分析C语言程序的组成部分 / 012

1.5.3 运行这个程序 / 013

1.5.4 牛刀小试 / 013

1.5.5 C程序的构成 / 014

本章小结 / 014



第2章 C语言基本功015

2.1 了解电脑内存的运行方式 / 015

2.1.1 数据和代码都存储在内存中 / 015

2.1.2 任何数据都需要标识符才能读取 / 016

2.2 认识和使用标识符 / 017

2.2.1 标识符的命名规则 / 017

2.2.2 C语言中标识符的分类 / 018

2.3 什么是变量 / 019

2.3.1 了解变量 / 019

2.3.2 声明变量 / 019

2.3.3 初始化变量 / 020

2.4 什么是常量 / 020

2.4.1 认识常量 / 020

2.4.2 整型常量 / 021

2.4.3 浮点型常量 / 021

2.4.4 字符型常量 / 022

2.4.5 字符串常量 / 023

2.4.6 符号常量 / 023

2.5 C语言程序中数据存储的基本类型 / 024

2.5.1 存储整型数据 / 024

2.5.2 存储实型数据 / 027

2.5.3 存储字符型数据 / 028

2.6 基于数学程序运算符和表达式 / 030

2.6.1 在C语句中使用算术运算符 / 031

2.6.2 赋值运算符 / 032

2.6.3 用自增、自减运算符来进行运算 / 034

2.6.4 逗号运算符 / 035

2.6.5 使用sizeof运算符求变量占用的空间大小 / 035

2.6.6 使用关系运算符完成条件的选择 / 037

2.6.7 注意运算符的优先级和括号 / 038

2.7 数据类型的转换 / 040

2.7.1 隐式自动转换 / 040

2.7.2 显式强制转换 / 043

本章小结 / 044



第2篇 代码基础

第3章 使用顺序结构编写程序047

3.1 语句与表达式 / 047

3.1.1 CPU指令是如何变身汇编语言的 / 047

3.1.2 表达式语句与空语句 / 048

3.1.3 复合语句 / 049

3.2 控制屏幕打印 / 049

3.2.1 使用putchar( )输出字符 / 049

3.2.2 格式化输出函数printf( ) / 050

3.2.3 标准错误流 / 052

3.3 读取键盘输入 / 052

3.3.1 用getchar( ) 函数输入字符 / 052

3.3.2 用getch( ) 和getche( ) 函数输入 / 053

3.3.3 格式化输入函数scanf( ) / 054

3.4 输入输出综合示例 / 057

3.5 操作系统和应用程序 / 057

3.5.1 应用程序在Windows中是如何被执行的 / 058

3.5.2 Windows API 和C 运行时库 / 058

本章小结 / 059



第4章 使用选择结构编写程序061

4.1 用逻辑运算符实现选择结构 / 061

4.1.1 逻辑运算符的使用 / 062

4.1.2 逻辑运算符的优先级与结合性 / 063

4.1.3 使用逻辑运算符的程序举例 / 063

4.2 用if语句实现选择结构 / 064

4.2.1 if语句的使用方法 / 064

4.2.2 使用if语句的程序举例 / 064

4.2.3 使用if…else 结构实现多项选择 / 065

4.2.4 使用if…else结构的程序举例 / 066

4.2.5 if语句的嵌套使用 / 067

4.2.6 使用if语句嵌套的程序举例 / 069

4.3 用条件运算符实现简单的选择结构 / 072

4.3.1 CPU只有JUMP指令 / 072

4.3.2 专业程序员都会错:悬挂else引发的问题 / 073

4.3.3 这是语言特性,不是数学公式 / 074

4.3.4 少用,但可以了解的语言特性 / 074

4.4 多分支条件选择语句:switch / 076

4.4.1 switch语句的结构介绍 / 076

4.4.2 大多数人理解的switch语句都是错的 / 077

4.4.3 多个执行结果共用一个条件 / 079

4.4.4 使用switch语句的程序综合举例 / 080

本章小结 / 081



第5章 使用循环结构编写程序083

5.1 用while实现带条件的循环语句 / 083

5.1.1 while循环语句的结构和功能 / 083

5.1.2 while循环语句的程序实例 / 084

5.2 另一种带条件的循环语句:do…while / 086

5.2.1 比较do…while与while的差异 / 086

5.2.2 用do…while循环的程序实例 / 086

5.3 用for 语句实现循环 / 087

5.3.1 for 循环的结构与功能介绍 / 087

5.3.2 使用for循环的程序实例 / 088

5.3.3 for 循环的几种不同的格式 / 089

5.3.4 在for 语句中添加逗号运算符 / 091

5.4 高级流程控制语句 / 092

5.4.1 用goto 语句在程序中任意跳转 / 092

5.4.2 用break 语句中断循环 / 093

5.4.3 用continue 语句跳出当前循环 / 094

5.5 各种循环语句的嵌套使用 / 096

本章小结 / 098



第3篇能力提高

第6章 用函数把程序分块101

6.1 函数的概念 / 101

6.1.1 明白什么是函数 / 101

6.1.2 使用函数的好处 / 102

6.1.3 main()函数的概念及用途 / 102

6.2 函数的定义 / 102

6.2.1 自己定义一个函数 / 102

6.2.2 定义一个有参函数 / 104

6.2.3 函数的参数 / 105

6.2.4 函数的返回值 / 106

6.2.5 空函数 / 108

6.3 函数的调用原理与声明 / 108

6.3.1 函数的声明 / 108

6.3.2 函数调用表达式 / 109

6.3.3 函数调用的方式 / 109

6.3.4 不加()的函数调用会出现什么 / 111

6.3.5 嵌套调用 / 111

6.3.6 函数在结构化程序设计中的意义 / 112

6.4 递归函数 / 113

6.5 变量的作用域和存储类别 / 116

6.5.1 什么是变量的作用域 / 116

6.5.2 块结构 / 117

6.5.3 局部变量和局部变量的作用域 / 117

6.5.4 全局变量和全局变量的作用域 / 118

6.5.5 变量的存储类别 / 119

6.5.6 静态变量存储 / 119

6.5.7 自动变量存储 / 121

6.6 内部函数与外部函数 / 122

6.6.1 内部函数 / 122

6.6.2 外部函数 / 124

本章小结 / 125



第7章 数组127

7.1 数组的概念及内存占用 / 127

7.1.1 数组的概念 / 127

7.1.2 数组在内存中的存储 / 128

7.1.3 数组的溢出 / 129

7.2 一维数组 / 129

7.2.1 一维数组的定义 / 130

7.2.2 一维数组的初始化 / 130

7.2.3 一维数组元素的引用 / 131

7.2.4 一维数组的应用实例 / 132

7.3 二维数组 / 132

7.3.1 二维数组的定义 / 133

7.3.2 二维数组的初始化 / 134

7.3.3 二维数组元素的引用 / 134

7.3.4 二维数组的应用实例 / 135

7.4 字符数组 / 136

7.4.1 字符数组的定义 / 136

7.4.2 字符串与字符数组 / 136

7.4.3 字符数组的初始化 / 137

7.4.4 字符数组的输入和输出 / 137

7.4.5 使用scanf( ) 函数接收字符串 / 138

7.4.6 字符数组的应用 / 139

7.5 字符数组元素作为函数参数 / 140

7.6 数组在程序中的实际应用举例 / 141

7.7 数组的专业用法 / 143

本章小结 / 146



第8章 控制字符串147

8.1 字符串的长度 / 147

8.2 使用字符串拷贝函数 / 148

8.2.1 strcpy( )函数的使用 / 148

8.2.2 strncpy( ) 函数的使用 / 149

8.3 字符串连接函数 / 150

8.3.1 用strcat( ) 连接字符串 / 150

8.3.2 用strncat( ) 连接字符串 / 151

8.4 使用字符串比较函数 / 151

8.4.1 两个完整的字符串之间的比较 / 152

8.4.2 两个字符串的一部分进行比较 / 153

8.4.3 忽略大小写的字符串比较 / 154

8.5 字符串查找函数 / 155

8.5.1 用strchr( )函数查找字符串 / 155

8.5.2 用strrchr( )函数查找字符串 / 156

8.5.3 用strcspn( )函数查找字符串 / 156

8.5.4 用strspn( )函数查找字符串 / 156

8.5.5 用strpbrk( )函数查找字符串 / 157

8.5.6 用strstr( )函数查找字符串 / 158

8.6 其他的字符串处理函数 / 159

8.6.1 strrev( ) 函数的使用 / 159

8.6.2 strset( )和strnset函数的使用 / 160

8.7 字符检查函数 / 161

8.7.1 数字检查函数isdigit( ) / 161

8.7.2 字母检查函数isalpha( ) / 161

8.7.3 检查函数的使用 / 161

8.8 将字符串转换成数字 / 162

本章小结 / 163



第4篇 C之精华

第9章 指针167

9.1 指针与地址 / 167

9.1.1 变量的地址与指针 / 167

9.1.2 了解指针 / 168

9.2 存放地址的指针变量 / 169

9.2.1 定义指针变量 / 169

9.2.2 用变量的地址初始化指针 / 170

9.2.3 置“空”指针变量 / 171

9.2.4 指针变量的引用 / 171

9.3 指针变量进行算数运算 / 172

9.3.1 指针变量的加减运算 / 172

9.3.2 指针变量的关系运算 / 174

9.4 指针与函数的关系 / 175

9.4.1 指针作为参数 / 175

9.4.2 指针作为返回值 / 177

9.4.3 函数指针 / 179

9.5 数组与指针 / 180

9.5.1 指针数组的定义和引用 / 181

9.5.2 一维数组中元素的指针表示法 / 181

9.5.3 二维数组的指针表示法 / 182

9.5.4 指针与字符串结合使用 / 183

9.5.5 命令行参数 / 185

9.6 指向指针变量的指针 / 186

本章小结 / 187



第10章 结构体、共同体与引用189

10.1 结构体的定义与引用 / 189

10.1.1 结构体类型的定义 / 190

10.1.2 结构体类型变量的定义 / 191

10.1.3 结构体类型变量的初始化 / 192

10.1.4 结构体类型变量的引用 / 193

10.1.5 结构体类型的指针 / 194

10.1.6 结构体数组 / 196

10.1.7 在结构中包含其他结构 / 199

10.1.8 结构与函数的关系 / 201

10.2 共用体的定义与引用 / 203

10.2.1 共用体类型的定义 / 203

10.2.2 共用体类型变量的定义 / 204

10.2.3 共用体类型变量的引用 / 205

10.2.4 共用体类型数据的特点 / 206

10.3 用typedef定义一个引用变量 / 207

10.4 枚举型数据类型 / 208

10.4.1 枚举型的定义 / 208

10.4.2 枚举变量的定义与赋值 / 209

10.5 在程序中实际应用结构体 / 210

本章小结 / 212



第11章 预处理命令213

11.1 认识预处理命令 / 213

11.2 包含其他文件的命令 / 214

11.3 宏定义 / 216

11.3.1 不带参数的宏 / 216

11.3.2 带参数的宏 / 217

11.3.3 宏的取消 / 219

11.3.4 使用宏定义的优缺点 / 219

11.4 条件编译 / 221

11.5 头文件的编写 / 223

本章小结 / 225



第5篇 开发实践

第12章 编程规范和项目开发初步229

12.1 为什么需要建立编程规范 / 229

12.2 基本的编码规范 / 230

12.2.1 命名规范 / 230

12.2.2 格式规范 / 232

12.2.3 函数规范 / 233

12.2.4 其他规范 / 235

12.3 小组开发规范 / 235

12.3.1 系统设计 / 236

12.3.2 软件架构设计 / 236

12.3.3 项目进程与人员配置 / 237

12.4 C 带来的C提升 / 238

本章小结 / 239



第13章 管理计算机内存241

13.1 分配内存的存储空间 / 241

13.1.1 使用malloc( ) 函数分配 / 242

13.1.2 使用calloc( ) 函数分配 / 243

13.1.3 realloc( ) 函数的使用 / 245

13.1.4 malloc( ) 和calloc( ) 函数的区别 / 246

13.1.5 调用free( ) 函数释放内存 / 246

13.2 将数据按位运算 / 247

13.2.1 位运算符 / 248

13.2.2 将数据进行移位运算 / 248

13.2.3 将数据进行按位逻辑运算 / 250

本章小结 / 257



第14章 文件操作259

14.1 打开、关闭和检测文件 / 259

14.1.1 打开文件 / 260

14.1.2 文件检查函数 / 264

14.1.3 读写文件数据 / 264

14.1.4 关闭文件 / 274

14.2 文件定位函数 / 274

14.2.1 fseek( ) 函数 / 275

14.2.2 ftell( ) 函数 / 277

14.2.3 rewind( ) 函数 / 278

14.3 文件管理函数的应用 / 280

14.3.1 删除文件 / 280

14.3.2 重命名文件 / 281

14.4 使用临时文件 / 282

14.5 非缓冲文件系统 / 283

14.5.1 open( ) 函数 / 283

14.5.2 close( ) 函数 / 284

14.5.3 create( ) 函数 / 284

14.5.4 read( ) 函数 / 284

14.5.5 write( ) 函数 / 284

14.5.6 lseek( ) 函数 / 285

本章小结 / 285



第15章 C语言中的库函数287

15.1 处理数学问题 / 287

15.1.1 使用三角函数 / 288

15.1.2 使用指数函数和对数函数 / 290

15.1.3 使用双曲线函数 / 291

15.1.4 使用其他数学函数 / 292

15.2 处理时间的函数 / 293

15.2.1 C语言程序中时间的表示 / 294

15.2.2 使用时间函数 / 294

15.3 查找和排序函数 / 302

15.3.1 用bsearch( ) 查找 / 303

15.3.2 用qsort( ) 排序 / 303

15.3.3 排序和查找的程序实例 / 303

15.4 随机数生成函数 / 307

15.4.1 随机数产生的过程 / 307

15.4.2 随机数相关的函数 / 307

本章小结 / 310



第16章 应用数据结构311

16.1 单链表 / 311

16.1.1 单链表的概念 / 311

16.1.2 单链表的创建 / 312

16.1.3 单链表的使用 / 315

16.2 栈 / 320

16.2.1 栈的概念 / 320

16.2.2 栈的基本运算 / 321

16.2.3 链栈 / 321

16.3 队列 / 323

16.3.1 队列的概念 / 323

16.3.2 队列的基本运算 / 323

16.3.3 链队列 / 324

16.4 快速排序函数 / 326

本章小结 / 329



第17章 学生管理系统的开发331

17.1 学生管理系统需求分析 / 331

17.2 学生管理系统界面设计 / 332

17.3 学生管理系统功能设计 / 334

17.3.1 学生管理系统概要设计 / 334

17.3.2 用户登录管理模块的设计 / 335

17.3.3 文件读写模块的设计 / 337

17.3.4 学生信息显示模块设计 / 340

17.3.5 学生人员增加模块的设计 / 340

17.3.6 学生人员删除模块的设计 / 341

17.3.7 学生信息修改模块的设计 / 342

17.3.8 学生信息查询模块的设计 / 344

17.3.9 主菜单模块的设计 / 345

17.3.10 主函数及错误处理模块的设计 / 347

17.3.11 结构体及宏定义 / 348

17.4 学生管理系统测试用例编写 / 349

17.5 学生管理系统整合测试 / 353

17.5.1 主菜单和界面显示功能测试演示 / 353

17.5.2 用户登录功能测试的演示 / 353

17.5.3 用户改密码功能测试的演示 / 354

17.5.4 学生人员增加功能测试的演示 / 355

17.5.5 学生人员信息删除功能测试的演示 / 355

17.5.6 学生人员信息查询功能测试的演示 / 356

17.5.7 学生人员信息修改功能测试的演示 / 356

17.5.8 文件读写功能测试的演示 / 356

本章小结 / 357



附录  Visual C 开发调试环境359

一、 Visual C 开发环境的安装和使用 / 359

二、 VC6开发控制台程序 / 360

三、 Win32控制台程序的创建、编译和运行 / 361

四、 程序出错及错误处理原则 / 365

五、 调试方法 / 372

 

C语言零起点精进攻略——C/C++入门·提高·精通 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:C语言零起点精进攻略——C/C++入门·提高·精通