简介
C语言是计算机专业的基础课和核心课程。本手册内容全面,结构清晰
,语言通俗,重难点突出,所有程序都能够直接运行。本手册内容包括C语
言概述、常用的程序开发环境、基本数据类型、表达式、顺序结构程序设
计、选择结构程序设计、循环结构程序设计、数组、函数、预处理命令、
指针、结构图与联合体、位运算、文件、链表。
本手册可作为大中专院校的计算机及相关专业的C语言教材,也可作为
计算机软件开发、等级考试和软考人员的参考书。
本光盘为15个多小时的视频教学、PPT电子课件、实例源代码与习题答
案。
目录
《c语言入门与提高(1dvd)cx-95897》
第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.1 turbo c 2.0开发环境介绍 14
2.1.1 运行turbo c 2.0 14
.2.1.2 turbo c 2.0环境设置 15
2.1.3 turbo 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篇 基础篇
第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篇 进阶篇
第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.5 引用结构体变量 330
12.1.4 结构体变量的初始化 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篇 提高篇
第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 常用字符与对应的
ascii码对照表 427
附录3 运算符的优先级与结合性 428
附录4 常用函数 429
第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.1 turbo c 2.0开发环境介绍 14
2.1.1 运行turbo c 2.0 14
.2.1.2 turbo c 2.0环境设置 15
2.1.3 turbo 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篇 基础篇
第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篇 进阶篇
第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.5 引用结构体变量 330
12.1.4 结构体变量的初始化 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篇 提高篇
第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 常用字符与对应的
ascii码对照表 427
附录3 运算符的优先级与结合性 428
附录4 常用函数 429
C语言入门与提高
- 名称
- 类型
- 大小
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×
亲爱的云图用户,
光盘内的文件都可以直接点击浏览哦
无需下载,在线查阅资料!
