《C语言入门与提高》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:陈锐主编
  • 出 版 社:北京希望电子出版社
  • 出版年份:2011
  • ISBN:9787894991409
  • 页数:432 页
图书介绍:C语言是计算机专业的基础课和核心课程。本手册内容全面,结构清晰,语言通俗,重难点突出,所有程序都能够直接运行。

第1篇 起步篇 1

第1章 C语言概述 1

1.1为什么要学习C语言 1

1.1.1学习C语言的好处 1

1.1.2如何学好C语言 3

1.2 C语言的特点 3

1.3程序设计基础 4

1.3.1十进制数的表示 4

1.3.2二进制数的表示 4

1.3.3二进制数、十六进制数和八进制数转换为十进制数 5

1.3.4十进制数转换为二进制数 6

1.3.5十进制数转换为十六进制数 8

1.3.6十进制数转换为八进制数 9

1.3.7二进制数与十六进制数、八进制数的转换 10

1.3.8计算机中的加减运算 11

1.4小结 13

第2章 C语言的开发环境 14

2.1TurboC 2.0开发环境介绍 14

2.1.1运行Turbo C 2.0 14

2.1.2Turbo C 2.0环境设置 15

2.1.3Turbo C 2.0的使用 16

2.2 Win-TC开发环境介绍 18

2.2.1 Win-TC开发环境介绍 19

2.2.2 Win-TC的使用 20

2.3 LCC开发环境介绍 21

2.3.1使用LCC开发环境创建项目 21

2.3.2 LCC开发环境的介绍 23

2.3.3 LCC的使用 24

2.4 Visual C++ 6.0开发环境介绍 24

2.4.1使用Visual C++ 6.0新建项目 25

2.4.2使用Visual C++ 6.0新建源程序文件 26

2.4.3使用Visual C++ 6.0开发环境 27

2.5小结 28

第2篇 基础篇 29

第3章 变量和常量 29

3.1变量 29

3.1.1为什么要使用变量 29

3.1.2变量究竟是什么——变量在计算机中的表示 30

3.1.3如何定义变量 30

3.1.4为什么要有数据类型 30

3.1.5 C语言有哪些数据类型 31

3.1.6什么符号可以作为变量名——用户定义的标识符 33

3.1.7关键字——已经被占用的标识符 33

3.1.8初识变量赋值 34

3.2整型变量 34

3.2.1为什么要使用整型变量 35

3.2.2基本整型变量 35

3.2.3基本整型变量的输入——使用scanf函数 36

3.2.4基本整型变量的输出——使用printf函数 37

3.2.5长整型变量——解决大整数问题 38

3.2.6短整型变量——节省内存空间 40

3.2.7无符号整型变量——只包括非负的整数 41

3.2.8整型变量的应用举例 42

3.3实型变量 44

3.3.1为什么使用实型变量 45

3.3.2单精度浮点型变量 45

3.3.3双精度浮点型变量 47

3.3.4长双精度浮点型变量 49

3.3.5实型变量的应用 49

3.4字符型数据类型 51

3.4.1为什么要使用字符型变量 51

3.4.2字符型变量 51

3.4.3字符型数据的输入与输出——使用%c和%s 52

3.4.4字符型变量的应用 53

3.5常量 55

3.5.1为什么使用常量 55

3.5.2整型常量 56

3.5.3实型常量 56

3.5.4字符型常量与字符串型常量 56

3.5.5常量与常数 57

3.6小结 57

习题 57

第4章 运算符与表达式 59

4.1表达式 59

4.1.1运算符有哪些 59

4.1.2什么是表达式 60

4.1.3运算符的优先级与结合性 60

4.1.4数据类型转换 61

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

4.2.1基本算术表达式 62

4.2.2自增表达式——++a和a++ 64

4.2.3自减表达式——--a和a-- 66

4.2.4算术运算符的混合运算——算术运算符的优先级与结合性 68

4.2.5算术表达式的应用 69

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

4.3.1赋值运算符与赋值表达式 71

4.3.2类型转换 74

4.3.3赋值表达式的应用 76

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

4.4.1关系运算符与关系表达式 77

4.4.2关系表达式的应用 79

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

4.5.1逻辑运算符与逻辑表达式 80

4.5.2逻辑表达式的应用 81

4.6逗号表达式 83

4.6.1逗号运算符与逗号表达式 83

4.6.2逗号表达式中应注意的问题 83

4.6.3逗号表达式的应用 84

4.7小结 84

习题 84

第5章 顺序结构程序设计 86

5.1语句和程序 86

5.1.1什么是简单语句 86

5.1.2为什么使用复合语句 87

5.1.3什么是复合语句 88

5.1.4使用复合语句应注意的问题 89

5.1.5为什么要有程序 90

5.1.6 C语言程序的框架结构 90

5.2顺序结构程序设计 91

5.2.1顺序结构程序设计的特点——自上而下执行每条语句 91

5.2.2顺序结构程序设计(一)——求圆的面积 92

5.2.3顺序结构程序(二)——求一元二次方程ax2+bx+c=0的根 94

5.2.4顺序结构程序设计(三)——将小写字母转换为大写字母 95

5.3小结 97

习题 97

第6章 选择结构程序设计 98

6.1条件运算符 98

6.1.1为什么要有条件运算符 98

6.1.2条件运算符与条件表达式 99

6.2 if选择语句 102

6.2.1为什么要有if选择语句——理解容易 102

6.2.2 if选择语句——单分支的选择结构 102

6.2.3 if-else选择语句——双分支的选择结构 106

6.2.4 if-else if-…-else选择语句——多分支选择结构 108

6.2.5 if选择语句的嵌套 112

6.2.6设置标志变量 116

6.2.7 if选择语句与选择运算符——相互转换 117

6.3 switch选择语句 118

6.3.1 switch选择语句 118

6.3.2 switch选择语句的应用 119

6.4选择结构程序设计的应用 125

6.5小结 133

习题 133

第7章 循环结构程序设计 134

7.1为什么要有循环结构 134

7.1.1如何重复输出多个hello world——使用循环可以少输入代码 134

7.1.2如何求连续的n个自然数的和——循环代码可以重复使用 135

7.2 while循环语句 136

7.2.1 while循环语句——当型循环 136

7.2.2 while循环语句的应用 138

7.3 do-while循环语句 139

7.3.1为什么要有do-while 139

7.3.2 do-while循环语句——直到型循环 139

7.3.3比较while循环结构和do-while循环结构 141

7.4 for循环语句 144

7.4.1 for循环语句 144

7.4.2 for循环语句的灵活性 147

7.4.3几种循环语句的比较 152

7.5 goto循环语句 153

7.5.1 goto语句——无条件转移语句 153

7.5.2 goto语句构成的循环语句——向前跳转 153

7.5.3 goto语句是一种不常用的结构——与while语句、for语句的比较 154

7.6 break语句 156

7.6.1循环中的“提前开溜” 156

7.6.2 break语句 156

7.7 continue语句 157

7.7.1为什么要有continue语句 157

7.7.2 continue语句 158

7.7.3 continue语句与break语句的区别 159

7.7.4 continue语句的应用 160

7.8多重循环程序设计 161

7.8.1为什么要有循环的嵌套——一层循环是不能解决所有问题的 161

7.8.2循环的嵌套——循环结构中还可以有循环结构 162

7.8.3多重循环的应用——输出乘法口诀表 163

7.9循环结构程序应用举例 166

7.9.1循环结构程序(一)——求π的近似值 166

7.9.2循环结构程序(二)——求100~200之间的所有质数 169

7.9.3 循环结构程序(三)——求100~200之间的所有质数的改进 171

7.9.4循环结构程序(四)——百鸡问题 172

7.10小结 174

习题 174

第3篇 进阶篇 175

第8章 数组 175

8.1为什么要有数组 175

8.1.1多变量的解决之路——数组的引入 175

8.1.2初识数组 176

8.1.3数组的数组——维度的出现 177

8.2一维数组 179

8.2.1一维数组的定义 179

8.2.2一维数组的引用——其实很简单 181

8.2.3一维数组的初始化——方法有许多 182

8.2.4一维数组的应用举例——求数组各元素的平均值 183

8.2.5一维数组的应用——数组元素的倒排 185

8.2.6一维数组的应用——冒泡排序 187

8.3二维数组 190

8.3.1二维数组的定义 190

8.3.2二维数组的引用——其实并不难 191

8.3.3二维数组的初始化——多样的初始化 192

8.3.4二维数组的应用——计算各科成绩的平均分 195

8.3.5二维数组的应用——矩阵的转置 196

8.3.6二维数组的应用——有趣的魔方阵 198

8.4字符数组 201

8.4.1字符数组的定义 201

8.4.2字符数组的初始化 202

8.4.3字符数组的连续输出——格式符%s 205

8.4.4字符数组的连续输入——格式符%s 205

8.4.5常用的字符串处理函数 206

8.4.6字符数组的应用 210

8.5小结 213

习题 214

第9章 函数 215

9.1函数及分类 215

9.1.1为什么要有函数 215

9.1.2函数有哪些——库函数与用户函数 216

9.2函数的定义形式 217

9.2.1不带参数函数的定义 217

9.2.2带参数函数的定义——有参数列表 218

9.2.3带参数函数的定义——形参定义的传统方式 218

9.3局部变量与全局变量 219

9.3.1局部变量 219

9.3.2全局变量 221

9.4函数的参数与函数的值 223

9.4.1形式参数与实际参数 223

9.4.2函数的返回值 225

9.5函数的调用 228

9.5.1函数调用的一般形式 228

9.5.2函数调用的方式 230

9.5.3对被调用函数的声明 230

9.6函数的嵌套调用 233

9.6.1函数的嵌套调用过程 233

9.6.2函数的嵌套应用——求1~n自然数的k次方之和 234

9.7函数的递归调用 235

9.7.1什么是递归——自己调用自己 235

9.7.2递归函数的应用——求n! 236

9.7.3递归函数调用的应用——Fibonacci数列 238

9.8数组作为函数的参数 239

9.8.1数组元素作为函数的参数——只能传递一个数组元素 239

9.8.2数组名作为函数的参数——可以传递整个数组 241

9.8.3数组名作为参数传递——传递的是数组的首地址 244

9.8.4多维数组名作为函数的参数——传递整个数组 247

9.9变量的存储 250

9.9.1什么是动态存储与静态存储——生存期不同 250

9.9.2 auto变量——自动类型变量 250

9.9.3 static变量——静态变量 250

9.9.4 register变量——使运行速度更快的变量 253

9.9.5 extern变量——声明外部变量 254

9.10内部函数与外部函数 256

9.10.1内部函数——使用static 256

9.10.2外部函数——使用extern 257

9.11函数应用举例 258

9.11.1函数应用——递归求解n个数的最大值 258

9.11.2函数应用——递归求解a与b的最大公约数 260

9.11.3函数应用——字符数组元素逆序存放 261

9.12小结 262

习题 262

第10章 预处理命令 263

10.1宏定义 263

10.1.1为什么要有宏定义 263

10.1.2不带参数的宏定义 264

10.1.3宏定义与常量定义的区别 265

10.1.4带参数的宏定义 265

10.1.5宏定义中参数与函数参数的区别 266

10.2文件包含命令 268

10.2.1为什么要有文件包含命令 268

10.2.2文件包含命令——#include 268

10.3条件编译 270

10.3.1第一种条件编译命令——#ifdef 270

10.3.2第二种条件编译命令——#ifdef…#elif…#endif 272

10.3.3第三种条件编译命令——#ifndef 273

10.3.4第四种条件编译命令——#if 274

10.4小结 274

习题 275

第11章 指针 276

11.1指针的相关概念 276

11.1.1为什么要有指针和指针变量 276

11.1.2什么是地址 276

11.1.3什么是指针变量——存放地址的变量 277

11.2指针变量 278

11.2.1定义指针变量 278

11.2.2使用指针变量 280

11.2.3指针变量作为函数参数 283

11.3数组与指针 287

11.3.1指向数组元素的指针 287

11.3.2通过指针引用数组元素 288

11.3.3指针变量的自增运算和自减运算 292

11.3.4数组指针作为函数的参数 292

11.3.5指向多维数组的指针变量 298

11.4字符串与指针 304

11.4.1指向字符串的指针变量 304

11.4.2字符串指针作为函数的参数 310

11.4.3字符数组与字符指针变量的比较 313

11.5指针数组与指向指针的指针 314

11.5.1指针数组 314

11.5.2指向指针的指针 317

11.5.3指针数组作为main函数的参数 319

11.6函数与指针 320

11.6.1函数指针调用函数 320

11.6.2指向函数的指针作为函数参数 321

11.7返回指针值的函数 323

11.7.1为什么函数要返回指针值——可以返回多个值 323

11.7.2返回指针类型的函数 324

11.8小结 325

习题 326

第12章 结构体与联合体 327

12.1结构体 327

12.1.1为什么要有结构体 327

12.1.2结构体类型的定义 328

12.1.3定义结构体变量 328

12.1.4引用结构体变量 330

12.1.5结构体变量的初始化 332

12.2结构体数组 334

12.2.1为什么要有结构体数组 334

12.2.2定义结构体数组 334

12.2.3结构体数组的初始化 335

12.2.4结构体数组的应用 336

12.3指针与结构体 339

12.3.1指向结构体变量的指针 339

12.3.2指向结构体数组的指针 341

12.3.3结构体变量和指向结构体的指针作为函数的参数 342

12.4 typedef类型定义 346

12.4.1 typedef——为数据类型重新起个名字 346

12.4.2使用typedef应注意的问题 347

12.4.3 typedef的应用 348

12.5联合体 351

12.5.1为什么要有联合体——节省内存,多选一 351

12.5.2定义联合体 352

12.5.3引用联合体变量 353

12.5.4使用联合体应该注意的问题 353

12.5.5联合体的应用 354

12.6枚举类型 357

12.6.1为什么要有枚举类型——变量的值只有有限的几种 357

12.6.2定义枚举类型及变量 358

12.6.3使用枚举类型应注意的问题 358

12.6.4枚举类型的应用 359

12.7小结 360

习题 360

第13章 位运算 361

13.1为什么要有位运算与位运算符 361

13.1.1为什么要有位运算——高效率的运行 361

13.1.2位运算符 361

13.1.3位运算符的优先级与结合性 362

13.2位运算符与位运算 362

13.2.1按位与运算符和按位与运算 362

13.2.2按位或运算符和按位或运算 363

13.2.3按位异或运算符和按位异或运算 364

13.2.4按位取反运算符和按位取反运算 365

13.2.5左移运算符和左移运算 366

13.2.6右移运算符和右移运算 366

13.2.7与位运算符相结合的赋值运算符 367

13.3位运算应用 367

13.3.1以二进制形式输出一个数——按位与运算并输出1或者0 367

13.3.2取一个整数的中间几位——设置一个对应位为1的数并进行按位与运算 369

13.4位段 370

13.4.1定义位段 370

13.4.2引用位段成员 371

13.4.3使用位段需要说明的问题 372

13.5小结 373

习题 373

第14章 文件 374

14.1文件的相关概念 374

14.1.1为什么要有文件 374

14.1.2文件的分类——二进制文件和文本文件 374

14.1.3缓冲文件系统 375

14.2打开与关闭文件 375

14.2.1文件类型指针——FILE 375

14.2.2打开文件——使用fopen函数 376

14.2.3关闭文件——使用函数fclose 377

14.3读取文件与写入文件 377

14.3.1使用fputc函数写文件和使用fgetc函数读取文件 378

14.3.2使用fputs函数写文件和使用fgets函数读取 382

14.3.3使用fwrite函数写文件和使用fread函数读取文件 383

14.3.4使用fprintf函数写文件和使用fscanf函数读取文件 386

14.4文件的定位 388

14.4.1 rewind函数——移动位置指针到文件的开始位置 388

14.4.2 fseek函数——移动位置指针到任意位置 389

14.4.3 ftell函数——得到位置指针的当前位置 391

14.5文件状态检测 391

14.5.1 feof函数——检测位置指针是否到了文件末尾 392

14.5.2 ferror函数——检测是否操作文件错误 392

14.5.3 clearerr函数——清除错误标志 393

14.6文件的输入与输出函数总结 393

14.7小结 394

习题 394

第4篇 提高篇 395

第15章 链表 395

15.1链表的相关概念 395

15.1.1为什么要有链表——节省内存单元,不用事先定义空间大小 395

15.1.2什么是链表 396

15.1.3简单链表——静态链表 397

15.1.4动态存储分配 401

15.2链表的操作 402

15.2.1创建链表 402

15.2.2链表的输出操作 405

15.2.3链表的插入操作 407

15.2.4链表的删除操作 410

15.2.5链表的综合操作 413

15.3链表操作的应用 414

15.3.1链表操作的应用——逆置链表 415

15.3.2链表操作的应用——约瑟夫问题 420

15.4小结 423

习题 423

附录 424

附录1程序流程图 424

附录2常用字符与对应的ASCLL码对照表 427

附录3运算符的优先级与结合性 428

附录4常用函数 429