《轻松学通C语言》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:左飞,李召恒著
  • 出 版 社:北京:中国铁道出版社
  • 出版年份:2013
  • ISBN:9787113170202
  • 页数:416 页
图书介绍:为了让所有读者都能够在最初接触一门语言时就做到准确深刻地理解每一个概念,而不至于留下什么“后遗症”,本书不但配有大量插图来帮助读者理解,还为绝大部分关键概念设计了形象的比喻或日常生活参照,以便帮助读者从身边生活实际理解这些关键概念,强调编程实践的先导性。纸上得来终觉浅,深知此事需躬行。学习编程绝对不能纸上谈兵,丰富的编程实践不仅能够帮助读者提升实战能力,更可以帮助读者深化对于相关知识点的理解和掌握。本书在编程实例的设计上经过反复推敲,选定了比较恰当的实例。与其他C语言书籍不同的是,这些实例一方面是一些实际工程问题的缩影,一方面缘自一些经典算法问题具有较强的实际意义和参考价值,且实例背景生动丰富,便于引导读者进入情景,产生阅读快感。强调先进思想的重要性。本书在撰写时无论是实例的设置,还是概念的描述,都力求帮助读者树立正确的、先进的编程思想。这主要包括结构化的程序设计思想、良好的编码风格与正确的程序书写规范,同时还包括一些结构化数据类型的组织及算法设计思想。这些思想的树立能够全方位的帮助读者提高编程水平,达到量变转质变的效果。

第1章 程序设计与C语言概述 1

1.1计算机程序 2

1.1.1什么是程序 2

1.1.2什么是计算机程序 3

1.1.3程序设计 4

1.2计算机语言 4

1.2.1语言 4

1.2.2什么是计算机语言 4

1.2.3计算机语言简史 4

1.2.4高级语言的执行方式 6

1.3C语言概述 7

1.3.1为什么叫“C语言” 7

1.3.2C语言的版本 7

1.3.3C语言的特点 7

1.3.4C语言的应用 9

1.4第一个C程序 9

1.4.1为什么选“Hello,World” 9

1.4.2“Hello,World”程序 10

1.4.3“Hello,World”程序解析 10

1.4.4C程序结构特点解析 10

1.4.5C程序是如何执行的 12

1.5Microsoft Visual C++6.0集成开发环境简介 13

1.5.1集成开发环境(IDE) 13

1.5.2集成开发环境的功能 13

1.5.3为什么选择Microsoft Visual C++6.0 14

1.5.4Microsoft Visual C++6.0的版本 15

1.5.5Microsoft Visual C++6.0的安装 15

1.5.6项目和工作区 18

1.5.7Visual C++6.0界面简介 19

1.5.8常用菜单项 21

1.5.9常用工具栏 22

1.5.10视图窗格简介 23

1.5.11代码颜色 26

1.5.12使用Visual C++6.0编写和运行“Hello,World”程序 26

第2章 数据及数据类型 30

2.1数据在计算机中的表示 31

2.1.1数据 31

2.1.2字符集和标识符 31

2.1.3数据在计算机中的表示 33

2.2数据类型 34

2.2.1数据类型的解释 35

2.2.2C语言中的数据类型 35

2.3常量 36

2.3.1整型常量 36

2.3.2实型常量 38

2.3.3字符常量 39

2.3.4字符串常量 40

2.3.5符号常量 41

2.4变量 42

2.4.1给变量命名 42

2.4.2变量定义 42

2.4.3变量名与变量的值 43

2.4.4变量初始化 44

2.4.5赋值 44

2.4.6整型变量 45

2.4.7实型变量 48

2.4.8字符变量 50

2.5数据的输入/输出 50

2.5.1什么是输入/输出 51

2.5.2C语言中输入/输出的实现 51

2.5.3格式化输出——printf()函数 51

2.5.4格式化输入——scanf()函数 56

2.5.5字符的输出——putchar()函数 60

2.5.6字符的输入——getchar()函数 61

2.5.7输出字符串——puts()函数 61

2.5.8读取字符串——gets()函数 62

第3章 运算符、表达式和语句 64

3.1运算符和表达式概述 65

3.1.1运算符 65

3.1.2表达式 65

3.1.3运算符的优先级和结合性 66

3.2算术运算符与算术表达式 67

3.2.1算术运算符 67

3.2.2算术表达式 68

3.2.3算术表达式的求值 68

3.3赋值运算符与赋值表达式 69

3.3.1简单赋值 69

3.3.2左值和右值 70

3.3.3复合赋值 71

3.3.4赋值运算符的副作用 71

3.3.5子表达式的求值顺序 72

3.4类型转换 72

3.4.1类型转换简述 72

3.4.2自动类型转换 73

3.4.3强制类型转换 76

3.5自增和自减运算符 78

3.5.1简化特殊的运算符 78

3.5.2使用自增和自减运算符注意事项 79

3.6逗号运算符与逗号表达式 79

3.6.1逗号表达式 80

3.6.2使用逗号表达式注意事项 80

3.7关系运算符与关系表达式 81

3.7.1关系运算符 81

3.7.2关系表达式的值 81

3.7.3使用关系运算符注意事项 81

3.8逻辑运算符与逻辑表达式 82

3.8.1逻辑运算符 82

3.8.2逻辑表达式 82

3.8.3“短路”计算 83

3.9位运算符 83

3.9.1C语言的位运算符 83

3.9.2按位与运算符 84

3.9.3按位或运算符 85

3.9.4按位异或运算符 85

3.9.5按位取反运算符 86

3.9.6左移运算符 87

3.9.7右移运算符 88

3.9.8位运算中的整数提升 88

3.9.9位运算赋值运算符 89

3.10sizeof运算符 89

3.10.1使用sizeof 89

3.10.2sizeof的结果 90

3.10.3sizeof的优先级 91

3.10.4各种类型数据长度的计算 91

3.11语句 91

3.11.1什么是语句 92

3.11.2语句类型 92

3.11.3赋值语句 93

第4章 流程控制 95

4.1流程的表示方法 96

4.1.1自然语言表示法 96

4.1.2流程图表示法 96

4.2顺序结构 97

4.2.1什么是顺序结构 97

4.2.2顺序结构程序设计方法 98

4.3分支结构 100

4.3.1什么是分支结构 100

4.3.2if语句的解释 101

4.3.3if语句的3种形式 101

4.3.4嵌套的if语句 105

4.3.5应用if语句注意事项 106

4.3.6条件运算符的解释 109

4.3.7应用条件运算符注意事项 110

4.3.8switch语句的解释 111

4.3.9应用switch语句注意事项 113

4.3.10分支结构程序设计方法 113

4.4循环结构 116

4.4.1什么是循环结构 116

4.4.2关于while语句的解释 116

4.4.3应用while语句注意事项 117

4.4.4关于do…while语句的解释 118

4.4.5应用do…while语句时防止死循环 119

4.4.6不确定循环和计数循环 119

4.4.7关于for语句的解释 120

4.4.8使用for语句注意事项 121

4.4.9选择哪种循环实现方式 123

4.4.10循环中的循环 124

4.4.11循环结构程序设计方法 125

4.5跳转结构 128

4.5.1什么是跳转结构 128

4.5.2break语句 129

4.5.3continue语句 131

4.5.4goto语句 132

4.5.5C语言中保留goto语句的原因 133

第5章 函数 136

5.1函数与结构化程序设计 137

5.1.1函数是“黑盒子” 137

5.1.2数学函数与C语言函数 138

5.1.3C语言函数中的库函数 139

5.1.4结构化的程序设计 139

5.2函数的使用 140

5.2.1函数的定义 140

5.2.2函数的类型 141

5.2.3函数的返回值 142

5.2.4函数的参数 145

5.2.5函数的调用 148

5.2.6函数的嵌套——蒙特卡罗法求圆周率π 151

5.3递归 153

5.3.1递归的定义 154

5.3.2使用递归的原则 155

5.3.3分治法与汉诺塔 162

5.3.4回溯法与八皇后问题 164

5.4变量的作用域 168

5.4.1局部变量 168

5.4.2局部变量的作用域 168

5.4.3全局变量 169

5.5变量的存储类型 171

5.5.1auto变量 172

5.5.2static局部变量 173

5.5.3register变量 174

5.5.4extern变量 176

5.5.5static外部变量 178

5.6执行多文件程序 179

5.6.1内部函数 179

5.6.2外部函数 179

5.6.3多文件程序实例 181

第6章 数组与字符串 183

6.1一维数组的使用 184

6.1.1数组概念的引入——中国古代军队编制 184

6.1.2数组元素的使用 185

6.1.3数组的初始化 185

6.1.4小心访问越界 187

6.1.5数组应用举例 187

6.2数组类型的参数 190

6.2.1以数组作为参数 190

6.2.2避免数组被修改 191

6.2.3函数返回数组的两种方法 192

6.3多维数组的使用 195

6.3.1从一维到二维 195

6.3.2初始化及使用二维数组 195

6.3.3多维数组应用举例 197

6.4字符数组 201

6.4.1定义与初始化 201

6.4.2字符串的使用 201

6.4.3字符串的处理——大小写转换函数 203

6.4.4字符串的处理——字符串比较函数 203

6.4.5字符串的处理——字符串长度的获得 204

6.4.6字符串的处理——字符串连接函数 204

6.4.7字符串的处理——字符串复制函数 205

6.4.8字符串应用举例 207

第7章 指针 210

7.1指针与地址 211

7.1.1内存和地址的概念 211

7.1.2定义指针变量 213

7.1.3使用指针变量 214

7.2指针与数组 217

7.2.1用指针访问数组元素 217

7.2.2直接插入排序 219

7.2.3用指针操作多维数组 220

7.2.4Z字形编排过程 223

7.2.5复杂指针运算的解析 225

7.3使用字符串指针变量 226

7.3.1指向字符串的指针 226

7.3.2与字符数组的比较 230

7.3.3如何输出其自身的程序 233

7.4指针与函数 234

7.4.1将指针用作函数参数 234

7.4.2指向函数的指针 236

7.4.3指针对于指令的访问是受限制的 238

7.4.4使用指向函数指针的语法来实现编程 238

7.4.5返回值为指针的函数 240

7.5复合多维指针的使用 244

7.5.1指针数组的使用 244

7.5.2指向指针的指针 247

7.5.3main()函数的参数 249

7.5.4main()函数参数应用实例 249

第8章 预处理 252

8.1预处理器概述 253

8.1.1预处理器的工作方式 253

8.1.2使用Microsoft Visual C++6.0生成预编译程序 254

8.1.3预处理指示分类 256

8.1.4预处理指示规则 256

8.2宏定义 257

8.2.1无参宏定义 257

8.2.2带参宏定义 258

8.2.3带参宏定义与函数 259

8.2.4使用宏时注意事项 261

8.2.5至关重要的圆括号 262

8.2.6预定义宏 263

8.3条件编译 264

8.3.1条件编译的形式 264

8.3.2条件编译的作用 267

8.4文件包含 268

8.4.1头文件 268

8.4.2文件包含的形式 269

8.4.3使用文件包含时注意事项 270

8.5其他指示 271

8.5.1#error指示 271

8.5.2#line指示 271

8.5.3#pragma指示 272

8.6“#”和“##”运算符 272

8.6.1“#”运算符 272

8.6.2“##”运算符 273

8.7预处理实例 273

8.7.1简单计算器程序 273

8.7.2程序分析 276

8.7.3程序中的预处理 277

第9章 结构体与共用体 279

9.1结构体 280

9.1.1什么是结构体 280

9.1.2结构体实例——《水浒传》中的一百单八将 280

9.1.3结构体类型与结构体变量 281

9.1.4结构体变量的定义 282

9.1.5定义结构体变量注意事项 283

9.1.6结构体变量的初始化 283

9.1.7结构体变量的引用 284

9.1.8引用结构体变量注意事项 285

9.1.9结构体数组 286

9.1.10指向结构体的指针 289

9.1.11结构体与函数 291

9.1.12位域 298

9.2共用体 301

9.2.1什么是共用体 301

9.2.2共用体与结构体 302

9.2.3共用体变量的初始化 303

9.2.4使用共用体注意事项 304

9.2.5结构体和共用体综合实例——“梁山好汉的比武大会” 305

9.3枚举 308

9.3.1什么是枚举 308

9.3.2枚举变量的定义与取值 309

9.3.3“表里不一”的类型 310

9.3.4枚举应用举例——“向你问好的程序” 311

9.4用户自定义类型——typedef 312

9.4.1什么是typedef 312

9.4.2创建typedef简单方法 313

9.4.3typedef和#define 313

9.4.4typedef的两个重要作用 314

第10章 文件 316

10.1理解文件的基本概念 317

10.1.1什么是文件 317

10.1.2什么是流 318

10.1.3处理文件的方法 319

10.1.4缓存 320

10.1.5文本文件和二进制文件 321

10.2文件的打开与关闭 321

10.2.1文件类型指针 321

10.2.2文件的打开 323

10.2.3文件操作类型及应用 323

11.2.4文件的关闭 325

10.3文件的基本操作 327

10.3.1文件中的字符读/写 327

10.3.2按字符进行读/写文件——文件复制的功能 329

10.3.3文件中字符串读/写 330

10.3.4其他文件读/写函数 334

10.3.5文件位置定位 334

10.3.6数据块的读/写 336

10.4处理二进制文件 338

10.5文件缓冲区处理 341

10.5.1文件缓冲区的清除 341

10.5.2文件缓冲区的设置 343

10.6文件操作的检测 345

第11章 动态数据结构 347

11.1动态内存管理 348

11.1.1为什么使用动态内存分配 348

11.1.2如何实现动态内存管理 348

11.1.3关于动态内存分配的说明 351

11.2链表概述 352

11.2.1单向链表与数组 353

11.2.2单向链表——老鹰捉小鸡 353

11.2.3链表存储方式优缺点 354

11.2.4不同单向链表间的合并 354

11.3链表的操作及实现 355

11.3.1链表的建立 355

11.3.2链表的遍历 358

11.3.3链表结点的删除 359

11.3.4链表结点的增加 361

11.3.5结点删除函数中的free()函数 363

11.3.6链表的应用实例 363

11.4栈 364

11.4.1栈定义——散乱的盘子 364

11.4.2栈的特点 365

11.4.3栈工作原理 365

11.4.4栈与链表 366

11.4.5栈的应用举例——括号匹配问题 368

11.5队列 369

11.5.1队列的特点 369

11.5.2队列定义——排队等待买票的人 370

11.5.3队列应用 370

11.5.4队列与栈的不同 370

11.5.5队列创建 370

11.5.6基于链表实现的队列——链式队列 371

11.5.7队列的实现 372

附录Ⅰ C语言运算符及其优先级汇总表 376

附录Ⅱ 标准ASCII码字符集 378

附录Ⅲ 编程能力的培养与提高 380

附录Ⅳ 程序人生 395

参考文献 415