第一篇 基础篇 2
第1章 初识C语言 2
1.1 C语言的诞生 2
1.1.1 机器语言 2
1.1.2 汇编语言 2
1.1.3 高级语言 3
1.1.4 C语言 3
1.1.5 面向对象程序语言 4
1.1.6 下一代程序设计语言 4
1.2 C语言的特点 5
1.2.1 优点 5
1.2.2 缺点 5
1.3 C语言开发环境的搭建 6
1.3.1 编译软件Visual C++6.0的安装 6
1.3.2 Visual C++ 6.0的使用 7
1.4 简单的C语言程序 7
1.5 C语言程序的基本结构 8
1.5.1 基本程序结构 8
1.5.2 C语言的关键字 10
1.6 算法及流程图 10
习题 12
第2章 变量、运算符及输入输出 13
2.1 数据类型 13
2.2 常量与变量 14
2.2.1 常量 14
2.2.2 变量 15
2.2.3 变量名命名规则 15
2.3 整型数据(整数) 16
2.3.1 整型数据 16
2.3.2 整型变量 16
2.4 实型数据(实数) 16
2.4.1 实型数据 16
2.4.2 实型变量 16
2.5 字符型数据 17
2.5.1 字符常量 17
2.5.2 转义字符 18
2.5.3 字符变量 18
2.6 算术运算符 19
2.6.1 算术运算符 19
2.6.2 算术运算符的优先级 20
2.6.3 强制类型转换 20
2.7 输入输出函数的使用及格式输出 21
2.7.1 scanf()函数及输入格式控制 21
2.7.2 printf()函数及输出格式控制 24
2.8 常用的数学函数 26
习题 27
第3章 程序流程控制 28
3.1 循环控制语句(for语句) 28
3.2 关系和逻辑运算符 31
3.3 条件控制语句(if语句) 32
3.3.1 if语句 33
3.3.2 if...else if语句 36
习题 38
第4章 调试程序 40
习题 43
第5章 实战练习—穷举法 44
5.1 穷举法—计算类问题 44
5.2 穷举法—排列组合类问题 47
5.3 穷举法—图形类问题 49
5.4 穷举法—逻辑推理类问题 53
第二篇 提高篇 58
第6章 选择结构和循环结构的其他形式 58
6.1 用switch语句实现多分支选择结构 58
6.2 循环的其他形式和循环控制语句 60
6.2.1 while语句 60
6.2.2 do...while语句 63
6.3 break和continue语句 64
6.3.1 break语句 65
6.3.2 continue语句 65
习题 66
第7章 一维数组 67
7.1 一维整型数组 67
7.1.1 一维数组的定义 67
7.1.2 一维数组元素的引用 68
7.1.3 一维数组的初始化 69
7.1.4 程序举例 70
7.1.5 查找算法 71
7.1.6 插入算法 72
7.1.7 删除算法 72
7.1.8 排序算法(选择法与冒泡法) 73
7.2 一维字符型数组 76
7.2.1 字符数组的定义 76
7.2.2 数组的初始化 76
7.2.3 数组的引用 76
7.2.4 字符串形式的字符数组 77
7.2.5 字符串的输入输出 77
7.2.6 字符串处理函数 78
7.2.7 字符数组在加解密算法中的应用 80
习题 83
第8章 函数 84
8.1 函数的概念及定义 84
8.1.1 函数的基本概念 84
8.1.2 函数定义的一般形式 86
8.2 函数的调用 86
8.2.1 函数的参数 86
8.2.2 函数的返回值 87
8.2.3 函数调用 88
8.2.4 函数声明 89
8.3 局部变量与全局变量 90
8.3.1 局部变量 90
8.3.2 全局变量 91
8.4 不同参数类型的程序举例 92
8.4.1 基本类型数据作函数的参数 92
8.4.2 数组元素作函数的参数 93
8.4.3 数组名作函数的参数 94
8.5 文件包含 98
8.6 C++中的函数重载 100
习题 101
第9章 指针 103
9.1 指针变量 103
9.1.1 指针变量的定义与初始化 103
9.1.2 指针赋值 104
9.1.3 指针变量的引用 105
9.2 指针与数组 106
9.2.1 指向数组元素的指针 106
9.2.2 通过指针引用数组元素 107
9.3 指向字符串的指针变量 109
9.3.1 字符串的表示形式 109
9.3.2 使用字符串指针变量与字符数组的区别 111
9.4 指针与函数 112
9.4.1 指向基本类型的指针变量作函数参数 112
9.4.2 指向数组的指针变量作函数参数 113
9.4.3 字符串指针作函数的参数 115
习题 116
第三篇 高级篇 118
第10章 二维数组定义与应用 118
10.1 二维数组的定义 118
10.2 二维数组元素的引用 119
10.3 二维数组的初始化 120
10.4 二维数组程序举例 121
习题 123
第11章 结构体与链表 125
11.1 为什么需要结构体 125
11.2 结构体的创建 126
11.3 结构体类型变量的说明 127
11.4 结构体变量成员的表示方法 129
11.5 结构体变量的赋值 129
11.6 结构体变量的初始化 129
11.7 结构体数组的定义 130
11.8 结构体指针变量的说明和使用 132
11.8.1 指向结构体变量的指针 132
11.8.2 指向结构体数组的指针 134
11.8.3 结构体指针变量作函数参数 135
11.9 动态存储分配 136
11.10 链表的概念 137
习题 140
第12章 函数的递归调用 141
第13章 文件 143
13.1 C文件概述 143
13.2 文件指针 144
13.3 文件的打开与关闭 144
13.3.1 文件的打开(fopen函数) 144
13.3.2 文件关闭函数(fclose函数) 146
13.4 文件的读写 146
13.4.1 字符读写函数fgetc和fputc 146
13.4.2 字符串读写函数fgets和fputs 149
13.4.3 数据块读写函数fread和fwtrite 151
13.4.4 格式化读写函数fscanf和fprintf 152
13.5 文件的随机读写 153
13.5.1 文件定位 153
13.5.2 文件的随机读写 154
13.6 文件检测函数 154
13.6.1 文件结束检测函数feof函数 154
13.6.2 读写文件出错检测函数 155
13.6.3 文件出错标志和文件结束标志置0函数 155
习题 155
附录1 ASCII代码对照表 156
附录2 运算符和结合性 157
附录3 C库函数 159
附录4 全国计算机等级考试二级C语言笔试真题 166
参考答案 176
参考文献 177