第1章 什么是C语言 1
1.1概述 1
1.1.1 C语言的历史 1
1.1.2面向对象的程序设计语言——C++ 1
1.1.3为何不直接学习C++ 1
1.2如何学习C语言 1
第2章 创建C程序——照猫画虎入门C语言 3
2.1编程步骤 3
2.2在Visual Studio 2010环境下建立C程序 3
2.2.1打开Visual Studio 2010平台 4
2.2.2建立一个新项目 5
2.2.3在项目中建立一个C程序 7
2.3跟我学C例题2-1——C程序框架 9
2.3.1在屏幕上输出一段文字的C程序 9
2.3.2编辑运行C程序 10
2.3.3开始执行——非调试模式 11
2.3.4解决编译错误的“傻瓜”办法 13
2.3.5初学者的常见错误 13
2.4跟我学C例题2-2——变量和输入/输出语句 13
2.5读解C程序 16
2.5.1主函数main和C程序结构 16
2.5.2书写程序时应遵循的“潜规则” 17
2.5.3 C语句的构成 17
2.5.4 C语句词汇 17
2.5.5什么是变量? 18
2.6跟我学C例题2-3——C语言变量类型 19
2.6.1如何打开一个已存在的程序 19
2.6.2变量类型能影响程序执行结果 21
2.6.3可以输入小数的变量类型 21
2.7跟我学C练习题一 22
第3章 C语言的输入/输出格式——跟我学I/O 23
3.1格式输入/输出函数scanf()、gets()和printf() 23
3.1.1跟我学C例题3-1——求任意一个数的正弦值 23
3.1.2函数scanf()的一般形式 24
3.1.3函数scanf()是否可以从键盘输入一段文字 26
3.1.4字符串输入函数gets() 30
3.1.5使用scanf函数的注意事项 32
3.1.6格式输出函数printf() 33
3.2 cin函数和cout函数 36
3.2.1 cin和cout格式 36
3.2.2 cin能否读入字符串中的空格 37
3.3多学一点也无妨——缓冲区的概念 38
3.3.1输入缓冲区 38
3.3.2输出缓冲区——printf函数与cout函数的不同 39
3.4本章要点 41
3.4.1基本概念 41
3.4.2输入/输出函数一览 42
3.5跟我学C练习题二 43
第4章 说文解字拆分C程序——程序结构Ⅰ 45
4.1条件分支语句if-else 45
4.1.1跟我学C例题4-1——条件分支 45
4.1.2 if-else语句 46
4.1.3 if-else嵌套 47
4.2逻辑关系表达式 48
4.2.1跟我学C例题4-3——逻辑或 48
4.2.2跟我学C例题4-4——逻辑与 49
4.2.3跟我学C例题4-5——逻辑非 50
4.2.4运算符一览 51
4.3跟我学C例题4-6——教学评估(多路分支语句) 52
4.3.1教学评估问题 52
4.3.2图解switch语句 55
4.4本章要点 56
4.4.1控制语句一览 56
4.4.2基本概念和编程要求 56
4.5跟我学C练习题三 57
第5章 说文解字拆分C程序——程序结构Ⅱ 59
5.1跟我学C例题5-1——for语句 59
5.1.1月供问题 59
5.1.2循环语句for 60
5.1.3循环条件的多样性 61
5.1.4跟我学C例题5-2——for语句形态的多样性 62
5.2 while()——仅判断循环条件 63
5.2.1清晰的主题 64
5.2.2 while语句的循环方式 64
5.2.3 do-while()——至少循环一次 65
5.3跟我学C例题5-3——循环与数组 65
5.3.1跟我学计数 65
5.3.2程序=循环+数组 66
5.3.3初识数组 67
5.4数组变量 68
5.4.1基本概念 68
5.4.2数组变量是同类型元素的线性集合 68
5.4.3数组地址 69
5.4.4声明一个数组变量 69
5.5数组操作 70
5.5.1字符串操作 70
5.5.2数值型数组操作 71
5.6 break与continue的异同 72
5.7本章要点 73
5.8跟我学C练习题四 73
第6章 说文解字拆分C程序——程序结构Ⅲ 75
6.1跟我学C例题6-1——应用函数 75
6.2变量的存储方式——变量三代表 77
6.3初识函数 79
6.3.1函数概念 79
6.3.2函数定义 79
6.4参数传递与函数返回值 80
6.4.1跟我学C例题6-2——照猫画虎学函数 80
6.4.2函数返回单个变量——retum语句 81
6.5函数返回多个变量——变量地址 82
6.5.1跟我学C例题6-3——形参表中的数据变量 82
6.5.2函数之间的虫洞——变量的地址 84
6.5.3归纳 86
6.6变量作用域 86
6.6.1作用域的基本概念 86
6.6.2函数内部声明的变量=局部变量 87
6.6.3函数外部声明的变量=全局变量 87
6.6.4函数私密性——尽量避免使用全局变量 88
6.6.5变量存储类型一览 88
6.7文章大纲化——程序函数化 88
6.8跟我学C例题6-4——无知者无畏(学C还是用C) 89
6.9本章要点 93
6.10跟我学C练习题五 94
第7章 说文解字拆分C程序——变量的内涵Ⅰ 97
7.1再说变量——常识 97
7.1.1常量与变量 97
7.1.2类型自动转换 97
7.1.3类型强制转换 98
7.2变量的本质——存储它的地址 98
7.2.1字节、字与变量的地址 98
7.2.2操作变量的方式 99
7.3互联网域名——IP地址 100
7.4海量的内存——无限的网络 101
7.5如何获取变量的地址 101
7.6再看函数——形参与实参 102
7.6.1实参是地址 102
7.6.2实参是数组 103
7.7指针的概念 104
7.7.1为什么指针也是变量 105
7.7.2指针是一个存储地址的变量 106
7.7.3指针指向一个变量 106
7.7.4指针指向数组 108
7.7.5指针的数据类型 108
7.7.6跟我学C例题7-1 110
7.8本章要点 112
7.9跟我学C练习题六 112
第8章 说文解字拆分C程序——变量的内涵Ⅱ 117
8.1糊涂师数糊涂——如何存储表格 117
8.2物类聚集——数组 118
8.2.1数组的基本概念 118
8.2.2一维数组声明形式 119
8.3二维数组 119
8.3.1二维数组声明形式及初始化 119
8.3.2函数形参是二维数组 121
8.3.3交换指针的值(二级指针) 125
8.4指向指针的指针 128
8.5二维数组的本质——矢量的数组 129
8.5.1指针类型一览 129
8.5.2二维数组——矢量数组 130
8.5.3矢量指针——指向二维数组 130
8.5.4形参是矢量指针 131
8.5.5问题集锦 133
8.5.6字符串数组 136
8.5.7二维数组的形参简写形式 138
8.6再说糊涂表——破家值万贯 138
8.6.1简单变量的局限性——客观对象有多种属性 138
8.6.2打开你的胸襟——构建大千世界的结构 138
8.6.3结构体的嵌套 140
8.7结构——变量的组合 142
8.7.1基本数据类型与构造数据类型 142
8.7.2数据是客观事物属性的描述 142
8.7.3结构变量——打包数据 143
8.7.4结构体的概念——打包的方法 143
8.7.5数据封装的概念 144
8.7.6结构数组——线性表 144
8.8索引未来——指针数组 146
8.8.1索引举例1——糊涂掌门 146
8.8.2索引举例2——傻瓜买车 147
8.8.3指针与索引 147
8.9本章要点 151
8.10跟我学C练习题七 152
8.11跟我学C练习题八 154
第9章 说文解字拆分C程序——指针与函数 157
9.1指针概念一览 157
9.2指针与函数 157
9.2.1函数是变量 157
9.2.2函数的存储方式——函数三代表 157
9.2.3指针型函数——返回的是指针 158
9.2.4函数型指针——指向函数的指针 159
9.2.5跟我学C例题9-1——方法与变量分离 160
9.2.6类型说明符typedef——变量的Facebook 162
9.3按需申请内存空间——动态内存分配 164
9.3.1标准C语言的动态内存申请函数——malloc() 165
9.3.2动态内存申请的存储空间生存期 166
9.3.3释放内存空间函数free() 167
9.3.4动态内存申请——结构变量的长度 167
9.4魅力指针——链表 168
9.4.1指针与数据结构 168
9.4.2美丽的链——指针实战 169
9.5指针与引用 177
9.5.1递归倒序单链表——二级指针 177
9.5.2结构嵌套中的变量表达形式 179
9.5.3引用的定义 179
9.5.4引用的特色——伊人红妆 180
9.5.5递归倒序中的引用——引用指针 181
9.5.6结构变量访问表达式 183
9.6本章要点 184
9.7跟我学C练习题九 184
第10章 算法初识——时间的概念 187
10.1什么是算法 187
10.2简单的排序算法 188
10.2.1简单排序算法的概念 188
10.2.2直接插入排序算法 189
10.2.3冒泡排序算法 190
10.3递归函数与分治算法 191
10.3.1递归的概念 191
10.3.2分治法的基本思想 194
10.3.3对半检索(binary search) 194
10.3.4汉诺塔算法 196
10.4本章要点 198
10.5跟我学C练习题十 199
第11章 数据收藏——跟我学文件 201
11.1文件的概念 201
11.1.1保存文件 201
11.1.2保存数据——聪明的糊涂 202
11.1.3数据似水流 204
11.1.4硬盘的概念 205
11.1.5文件在硬盘的存放形式 206
11.2文件操作方式 206
11.2.1文件操作——览 206
11.2.2文件内部的当前操作位置偏移 207
11.2.3文件操作表 207
11.3建立文件的步骤 208
11.3.1文件打开函数fopen() 208
11.3.2跟我学C例题11-1——建立一个文件 208
11.3.3跟我学C例题11-2——从键盘输入文件名 209
11.4文件的读写 210
11.4.1格式化读写函数fscanf()和fprintf() 210
11.4.2数据块读写函数fread()和fwrite() 212
11.4.3定位函数rewind()和fseek() 214
11.5保存链表——动态数据文件的存取 216
11.6本章要点 221
11.7跟我学C练习题十一 221
附录 223
附录A 运算符的优先级 223
附录A.1优先级规则 223
附录A.2作者的心声 223
附录B 制作头文件的方法 228
附录B.1头文件的宏格式 228
附录B.2在Visual Studio 2010平台上建立头文件 229
附录C ASCII码表 232
附录D 变量命名 233
附录D.1变量命名的共性规则 233
附录D.2简单的Windows应用程序命名规则 234
附录E DEBUG入门 236
附录E.1调试程序的步骤 236
附录E.2调试程序工具 236
附录E.3 DEBUG工具栏 238
附录E.4 DEBUG快捷键的使用说明 238
附录E.5调试心得 239
附录F 编程进阶 240