《从零开始学C语言》是2010年12月出版的图书,作者是戴晟辉、祝明慧。本书系统地介绍了程式设计的基本理论与编程技术。
基本介绍
- 书名:从零开始学C语言
- 作者:戴晟辉 祝明慧 等编着
- ISBN:978-7-121-12252-1
- 定价:39.80元(含DVD光碟1张)
- 出版时间:2010年12月
内容简介
为了使初学者都更好地掌握这门高级语言——C语言,本书每一个知识点都作为一个独立的章节进行详细的讲解,目的在于让读者在学习C语言的过程中,能循序渐进、由浅入深。
本书共4篇分为18章,内容包括C语言入门基础、C语言程式、常量、变数与标识符、数据类型、运算符及其表达式、输入与输出、顺序结构与选择结构、循环结构程式设计、结构语句的转移、数组、函式、指针、结构体、共用体和档案等内容。最后的实例篇,运用C语言建立一个学生成绩管理系统,通过对该系统的界面设计、功能分析、模组描述,使读者对C语言程式设计有一个更加系统、深刻的理解。
本书配DVD光碟1张,内容为本书的实例档案和作者专门为本书录製的全程多媒体语音教学视频。
近年来,C语言是套用最为广泛的一种高级程式设计语言,它不仅是计算机专业学生的必修课,也是许多非计算机专业学生所青睐的技术学科。C语言程式设计是全国和各省计算机等级考试的重要考试内容。C语言功能丰富,表达能力强,使用灵活方便,程式效率高,是结构化程式设计语言。C语言具有很强的实用性,既可用来编写套用软体,也适合于编写系统软体。
本书内容全面,论述翔实,适合C语言的初学者,也可作为大、中专院校师生的培训教材,对于C语言爱好者,本书也有很大的参考价值。
前 言
近年来,C语言是套用最为广泛的一种高级程式设计语言,它不仅是计算机专业学生的必修课,也是许多非计算机专业学生所青睐的技术学科。C语言程式设计是全国和各省计算机等级考试的重要考试内容。C语言功能丰富,表达能力强,使用灵活方便,程式效率高,是结构化程式设计语言。C语言具有很强的实用性,既可用来编写套用软体,也适合于编写系统软体。
本书的特点
C语言是学习其他语言的基础,读者只要掌握C语言,学其他语言就会很快入门。本书为了使读者能够从C语言的初学者成为编程高手,专门对C语言知识进行研究分析。本书的主要特点如下:
结构清晰明了。本书共18章,每章都分为若干个节,每节一个小知识点。结构层次清晰可见。
内容全面详细。本书涵盖了C语言中的所有知识,并将C语言各个知识点作为单独章节进行讲解,并举出大量实例。
讲解由浅入深。向读者介绍C语言的基本理论知识、数据结构和基本的编程规则,让读者对C语言的基本知识及结构化程式设计思想有一个初步的认识;接着对C语言一些複杂的数结构类型如数组、函式、指针操作、结构体与共用体、档案等进行详细的讲解。
实例丰富多样。本书所讲的每一个知识点都运用充分的实例进行讲解说明,便于读者掌握。
本书的主要内容
第1章主要带领读者了解了计算机语言的演变和C语言的发展简史,介绍程式设计算法及数制、数制转换与存储,为以后的学习打下基础。
第2章运用一个C语言程式设计实例讲解C语言的结构特徵和书写风格。以前的C语言参考书大部分使用的是Turbo C开发环境,本书运用Visual C++ 6.0集成开发环境,详细介绍了Visual C++ 6.0环境的程式开发过程。
第3章讲解常量、变数与标识符,第4章讲解了数据结构,第5章讲解了运算符及其表达式,第6章讲解了输入与输出,这4章所讲解的内容均为C语言入门的基础知识,是学习后面几章的前提,本书对这几章的内容做了详细的讲解。
第7章讲解了顺序结构和选择结构,第8章讲解了循环结构,这两章介绍了C语言程式设计的三种结构,它们构成了C语言程式设计的框架。这两章还运用大量的实例讲解了如何使用if-else、switch-case、while等语句来解决问题。
第9章在第7章、第8章的基础上讲解了几种跳转语句,如break、continue,使程式设计语句更加灵活,有利于解决更加複杂的问题。
第10章讲解了数组,用于处理数据类型相同的一批数据。讲解了一维数组、二维数组及它们的定义、初始化及引用,并给出了大量的实例,帮助读者理解。
第11章讲解了字元串数组,在第10章的基础上讲解了用于处理多个字元的数组。本章讲解了字元数组的定义、初始化、引用、字元数组与字元串的关係及字元数组的输入与输出,最后讲解了字元串处理函式,并举出实例说明。
第12、13章主要介绍函式,这两章讲解了函式的定义、参数值传递问题、函式调用、变数的作用域,以及调用系统函式时的预编译操作等。
第14章讲解的指针操作是C语言的核心,也是难点。本章分别从指针与地址、指针和指针变数、指针和数组、指针和函式这四个方面进行介绍,并给出大量实例,帮助读者理解。
第15章讲解了结构体,第16章讲解了共用体,分别介绍了几种複杂的数据结构、它们的定义与引用,以及与其他数据结构的不同之处。
第17章讲解了档案,档案也是一种数据类型,是存储在外部存储设备上的数据集合。本章讲解了如何对外部数据进行各种操作。
第18章运用C语言来设计一个学生成绩管理系统,整个系统综合运用前几章所学习的C语言的知识,如结构化程式设计、数组、函式、结构体等,在複习巩固C语言的基础知识的基础上,进一步加深对C语言编程的理解和掌握。
适合阅读本书的读者
C语言的初、中级读者。
了解C语言,但所学不全面的人员。
高等院校理科学校C语言课程的学生。
使用C语言进行毕业设计的学生。
熟悉其他语言,以此作为参考书的开发人员。
本书作者
本书主要由戴晟晖和祝明慧编写。其他参与本书编写的人员有昊燃、曾光、张双、朱照华、黄永湛、孟祥嵩、张贺军、李勇、关涛、王岩、李晓白、魏星、刘蕾。在此一併表示感谢!
目 录
第1篇 C语言入门
第1章 C语言入门基础 14
1.1 计算机语言的演变 14
1.1.1 机器语言 14
1.1.2 彙编语言 14
1.1.3 高级语言 14
1.1.4 面向对象或面向问题的高级语言 15
1.2 数制、数制转换与存储 15
1.2.1 数制 15
1.2.2 数制的转换 16
1.2.3 计算机中数据的存储 17
1.3 程式设计思想——算法 18
1.3.1 算法的概念 18
1.3.2 算法的特点 18
1.3.3 算法的表示方法 19
1.3.4 算法分析 21
1.4 C语言的发展简史和特点 21
1.4.1 C语言的诞生与发展 22
1.4.2 C语言的特点 23
1.5 本章小结 24
1.6 习题 24
第2章 认识C语言程式 25
2.1 C语言程式的结构特徵 25
2.2 C语言程式的书写风格 27
2.3 C语言程式的开发过程 28
2.4 Visual C++集成开发环境 29
2.4.1 熟悉Visual C++ 6.0集成开发环境 30
2.4.2 C语言在Visual C++ 6.0的开发过程 31
2.5 用Visual C++运行一个C程式 32
2.6 本章小结 33
2.7 习题 33
第2篇 C语言基础
第3章 常量、变数与标识符 34
3.1 标识符 34
3.1.1 标识的命名 34
3.1.2 保留字 34
3.2 常量 35
3.2.1 直接常量 35
3.2.2 符号常量 35
3.3 变数 36
3.3.1 变数的定义 36
3.3.2 变数的初始化 36
3.4 变数的初始化 37
3.5 本章小结 37
3.6 习题 37
第4章 数据类型 38
4.1 C语言中的数据类型 38
4.1.1 基本数据类型 38
4.1.2 构造数据类型 39
4.1.3 指针数据类型 39
4.1.4 空类型 39
4.2 整型数据 39
4.2.1 整型常量 40
4.2.2 整型变数 40
4.3 实数型数据 41
4.3.1 实数型常量 42
4.3.2 实数型变数 42
4.4 字元型数据 43
4.4.1 字元型常量 43
4.4.2 字元型变数 44
4.5 数值型数据间的混合运算 46
4.5.1 自动类型转换 46
4.5.2 强制类型转换 47
4.6 本章小结 49
4.7 习题 49
第5章 运算符及其表达式 50
5.1 算术运算符及算术表达式 50
5.1.1 算术运算符 50
5.1.2 算术表达式 52
5.2 赋值运算符及赋值表达式 52
5.2.1 赋值运算符 53
5.2.2 赋值表达式 54
5.3 关係运算符及关係表达式 55
5.3.1 关係运算符 55
5.3.2 关係表达式 56
5.4 逻辑运算符及逻辑表达式 57
5.4.1 逻辑运算符 57
5.4.2 逻辑运算规则 58
5.4.3 逻辑表达式 59
5.5 条件运算符及条件表达式 61
5.5.1 条件运算符 61
5.5.2 条件表达式 62
5.6 逗号运算符及逗号表达式 65
5.6.1 逗号运算符 65
5.6.2 逗号表达式 66
5.7 位运算符 67
5.7.1 位逻辑运算符 67
5.7.2 移位运算符 69
5.7.3 位自反赋值运算符 70
5.8 位运算符 71
5.9 本章小结 72
5.10 习题 72
第6章 输入与输出 73
6.1 C语句概述 73
6.1.1 流程控制语句 73
6.1.2 函式调用语句 77
6.1.3 表达式语句 77
6.1.4 空语句 77
6.1.5 複合语句 77
6.2 输入与输出函式 78
6.2.1 格式输出函式 78
6.2.2 格式输入函式 81
6.2.3 字元输入与字元输出函式 85
6.3 整型数据的输入与输出 87
6.3.1 整型数据的输出 87
6.3.2 整型数据的输入 89
6.4 浮点型数据的输入与输出 89
6.5 本章小结 90
6.6 习题 90
第7章 顺序结构与选择结构 91
7.1 顺序结构程式设计 91
7.2 选择结构程式设计 93
7.2.1 if语句 93
7.2.2 switch语句 98
7.3 套用举例 101
7.4 本章小结 104
7.5 习题 104
第8章 循环结构程式设计 105
8.1 while语句 105
8.2 do…while语句 107
8.3 for语句 110
8.3.1 for循环结构 110
8.3.2 for循环语句的嵌套 113
8.4 总结套用 115
8.4.1 几种循环的比较 115
8.4.2 循环语句的嵌套 116
8.4.3 套用举例 118
8.5 本章小结 121
8.6 习题 121
第9章 结构语句的转移 122
9.1 break语句 122
9.1.1 跳出switch结构 122
9.2 跳出循环结构 124
9.2.1 问题1 124
9.2.2 问题2 125
9.3 continue语句 126
9.4 goto语句 127
9.5 本章小结 128
9.6 习题 128
第3篇 C语言进阶
第10章 数组 129
10.1 数组的概述 129
10.2 一维数组 130
10.2.1 一维数组的定义 130
10.2.2 一维数组的初始化 131
10.2.3 一维数组的引用 132
10.2.4 一维数组的程式举例 133
10.3 二维数组 139
10.3.1 二维数组的定义 139
10.3.2 二维数组的初始化 140
10.3.3 二维数组的引用 142
10.3.4 数组的程式举例 144
10.4 本章小结 146
10.5 习题 146
第11章 字元数组 147
11.1 字元数组的定义 147
11.2 字元数组的初始化 147
11.3 字元数组的引用 148
11.4 字元数组与字元串的关係 148
11.5 字元数组的输入与输出 149
11.6 字元串处理函式 150
11.6.1 输入字元串函式gets 151
11.6.2 输出字元串函式puts 151
11.6.3 字元串测长度函式strlen 151
11.6.4 字元串比较函式strcmp 151
11.6.5 字元串複製函式strcpy和strncpy 152
11.6.6 字元串连线函式strcat 152
11.7 套用举例 153
11.8 本章小结 158
11.9 习题 158
第12章 函式 159
12.1 函式的初步认识 159
12.2 函式定义 161
12.2.1 无参函式定义 161
12.2.2 有参函式定义 162
12.2.3 空函式定义 162
12.3 函式参数及返回值 163
12.3.1 函式的参数 163
12.3.2 函式的返回值 165
12.4 函式的参数传递 166
12.4.1 函式参数的数值传递 166
12.4.2 函式参数的地址传递 167
12.5 套用举例 168
12.6 本章小结 170
12.7 习题 170
第13章 函式的调用 171
13.1 函式调用的一般形式 171
13.2 函式调用的形式 172
13.3 被调用函式的声明与函式原型 173
13.4 函式的嵌套调用和递归调用 176
13.4.1 函式的嵌套调用 176
13.4.2 函式的递归调用 177
13.5 变数作用域 178
13.5.1 变数作用域和生存期 178
13.5.2 局部变数和全局变数 178
13.5.3 变数存储类别 181
13.6 编译预处理 185
13.6.1 宏定义 186
13.6.2 档案包含处理 189
13.6.3 条件编译 190
13.7 本章小结 191
13.8 习题 191
第14章 指针操作 192
14.1 指针与地址 192
14.2 指针和指针变数 192
14.2.1 指针变数的定义 193
14.2.2 指针变数的引用 194
14.2.3 指针的运算 196
14.3 指针和数组 199
14.3.1 数组的指针和指向数组的指针变数 200
14.3.2 指针数组和指向指针的指针 203
14.3.3 指向字元串的指针 206
14.3.4 数组名作为函式参数 207
14.4 指针和函式 211
14.4.1 函式的指针和指向函式的指针变数 211
14.4.2 用指向函式的指针作为函式参数 212
14.4.3 指针数组作为函式参数 218
14.4.4 返回指针值的函式 219
14.4.5 字元串指针作为函式参数 220
14.5 本章小结 221
14.6 习题 221
第15章 结构体 222
15.1 结构体类型定义 222
15.1.1 结构体类型的说明 222
15.1.2 结构体类型的定义 222
15.2 结构体变数的定义与引用 224
15.2.1 结构体变数的定义与初始化 224
15.2.2 结构体变数的引用 226
15.3 结构数组 229
15.3.1 结构数组的定义 229
15.3.2 结构数组的引用 230
15.4 结构体指针 232
15.4.1 结构体指针变数的定义 232
15.4.2 结构体指针变数的引用 233
15.5 鍊表 236
15.5.1 鍊表概述 236
15.5.2 单鍊表建立 238
15.5.3 单鍊表简单操作 242
15.6 本章小结 251
15.7 习题 251
第16章 共用体 252
16.1 共用体类型定义 252
16.1.1 定义共用体 252
16.1.2 共用体的存储 253
16.2 共用体类型变数、数组和指针变数的定义 254
16.2.1 先定义共用体,再定义共用体变数、数组及指针变数 254
16.2.2 定义共用体的同时定义共用体变数、数组及指针变数 254
16.2.3 定义共用体变数、数组及指针变数时省略共用体名 255
16.3 共用体类型变数、数组和指针变数的引用 255
16.4 共用体套用举例 257
16.5 枚举类型 259
16.5.1 枚举类型的定义 259
16.5.2 枚举类型变数的赋值和引用 260
16.6 用typedef定义数据类型 262
16.7 本章小结 266
16.8 习题 266
第17章 档案 267
17.1 档案概述 267
17.1.1 档案名称 267
17.1.2 档案的类型 268
17.2 档案类型指针 268
17.3 档案的打开与关闭 270
17.3.1 档案打开函式fopen() 270
17.3.2 档案关闭函式fclose() 272
17.4 档案的读写操作 272
17.4.1 字元读写函式 272
17.4.2 字元串读写函式 275
17.4.3 数据块读写函式 278
17.4.4 格式数据读写函式 281
17.5 档案的定位 282
17.5.1 档案头定位函式rewind() 282
17.5.2 档案随机定位函式fseek() 283
17.5.3 测试当前位置函式ftell() 284
17.6 档案的检测 285
17.6.1 档案末尾检测函式feof() 285
17.6.2 档案读写出错检测函式ferror() 286
17.6.3 清除档案末尾和出错标誌函式clearerr() 287
17.7 本章小结 287
17.8 习题 287
第4篇 案例实战
第18章 学生成绩管理系统设计 288
18.1 学生成绩管理系统功能 288
18.2 功能模组的描述 288
18.2.1 数据结构 288
18.2.2 main()主函式 289
18.2.3 score *creatlink()创建动态鍊表 289
18.2.4 void print(score *head)显示学生信息 290
18.2.5 score *add(score *head,score *stu)向鍊表中添加学生数据 290
18.2.6 score *search(score *head)查询学生成绩 290
18.2.7 score *dele(score *head)删除数据 291
18.2.8 score *sortdata(score *head)对数据进行排序 291
18.2.9 save(score *p1)保存数据 291
18.2.10 score *load(score *head)从档案中读取数据 291
18.2.11 score *statistics(score *head)成绩统计 292
18.2.12 int menu(int k)选单 292
18.2.13 用到的头档案和全局变数 292
18.3 程式代码 292
18.3.1 主函式main()代码 292
18.3.2 创建鍊表函式creatlink() 293
18.3.3 显示学生信息函式print() 296
18.3.4 向鍊表中添加学生数据函式add() 296
18.3.5 查询学生成绩函式search 298
18.3.6 删除数据函式dele 299
18.3.7 对数据进行排序函式sortdata() 300
18.3.8 保存数据函式save() 303
18.3.9 从档案中读取数据函式loadfile() 303
18.3.10 成绩统计函式statistics() 304
18.4 程式运行 306
18.4.1 编辑学生成绩 306
18.4.2 显示学生成绩 306
18.4.3 保存学生成绩信息 307
18.4.4 查询学生的成绩 307
18.4.5 添加学生的成绩 307
18.4.6 删除学生的成绩 307
18.4.7 学生成绩排序 308
18.4.8 从档案中读取学生的成绩 308
18.4.9 统计学生的成绩 308
18.5 本章小结 308
附录A ASCII字元集 309
附录B 运算符的优先权与结合性 311
附录C C语言常用库函式 314