内容简介
本书从初学者的角度出发,以通俗易懂的语言,丰富多彩的实例,详细介绍了使用C语言进行程序开发应该掌握的各方面知识。全书共分17章,包括C语言概述,算法,数据类型,运算符与表达式,常用的数据输入、输出函数,选择结构程序设计,循环控制,数组,函数,指针,结构体和共用体,位运算,预处理,文件,存储管理,网络套接字编程和学生成绩管理系统等。所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的注释,可以使读者轻松领会C语言程序开发的精髓,快速提高开发技能。
本书列举了大量的小型实例、综合实例和部分项目案例;所附DVD光盘内容有同步视频讲解、实例源程序、“实践与练习”答案等;本书的服务网站提供了模块库、案例库、题库、素材库、答疑服务。
本书内容详尽,实例丰富,非常适合作为编程初学者的学习用书,也适合作为开发人员的查阅、参考资料。
图书目录
第1篇 基础知识 |
第1章 C语言概述 3 | 视频讲解:29分钟 | 1.1 C语言发展史 4 | 1.1.1 程序语言简述 4 | 1.1.2 C 语言历史 4 | 1.2 C语言的特点 5 | 1.3 一个简单的C程序 6 |
1.4 一个完整的C程序 8 | 1.5 C语言程序的格式 12 | 1.6 开发环境 13 | 1.6.1 Turbo C 2.0 13 | 1.6.2 Visual C++ 6.0 18 | 1.7 小结 24 |
第2章 算法 25 | 视频讲解:22分钟 | 2.1 算法的基本概念 26 | 2.1.1 算法的特性 26 | 2.1.2 算法的优劣 27 | 2.2 算法的描述 27 | 2.2.1 自然语言 28 |
| 2.2.2 流程图 28 | 2.2.3 N-S流程图 32 | 2.3 小结 36 | ———— | ———— | ———— |
第3章 数据类型 37 | 视频讲解:39分钟 | 3.1 编程规范 38 | 3.2 关键字 39 | 3.3 标识符 39 | 3.4 数据类型 41 | 3.4 数据类型 41 |
3.5.1 整型常量 42 | 3.5.2 实型常量 45 | 3.5.3 字符型常量 46 | 3.5.4 转义字符 49 | 3.5.5 符号常量 49 | 3.6 变量 50 |
3.6.1 整型变量 50 | 3.6.2 实型变量 53 | 3.6.3 字符型变量 55 | 3.7 变量的存储类别 57 | 3.7.1 动态存储与静态存储 57 | 3.7.2 auto变量 57 |
3.7.3 static 变量 58 | 3.7.4 register变量 59 | 3.7.5 extern变量 60 | 3.8 混 | 3.9 小结 62 | 3.10 实践与练习 62 |
第4章 运算符与表达式 63 | 视频讲解:29分钟 | 4.1 表达式 64 | 4.2 赋值运算符与赋值表达式 66 | 4.2.1 变量赋初值 66 | 4.2.2 自动类型转换 6 | 4.2.3 强制类型转 |
4.3 算术运算符与表达式 69 | 4.3.1 算术运算符 70 | 4.3.2 算术表达式 70 | 4.3.3 优先级与结合性 71 | 4.3.4 自增自减运算符 73 | 4.4 关系运算符与表达式 75 |
4.4.1 关系运算符 75 | 4.4.2 关系表达式 76 | 4.4.3 优先级与结合性 77 | 4.5 逻辑运算符与表达式 78 | 4.5.1 逻辑运算符 79 | 4.5.2 逻辑表达式 79 |
4.5.3 优先级与结合性 79 | 4.6 位逻辑运算符与表达式 81 | 4.6.1 位逻辑运算符 81 | 4.6.2 位逻辑表达式 81 | 4.7 逗号运算符与表达式 82 | 4.8 复合赋值运算符 83 |
4.9 小结 84 | 4.10 实践与练习 85 | ———— | ———— | ———— | ———— |
第5章 常用的数据输入、输出函数 87 | 视频讲解:40分钟 | 5.1 语句 88 | 5.2 字符数据输入输出 88 | 5.2.1 字符数据输出 88 | 5.2.2 字符数据输入 89 | 5.3 字符 |
5.3.1 字符串输出函数 91 | 5.3.2 字符串输入函数 93 | 5.4 格式输出函数 94 | 5.5 格式输入函数 97 | 5.6 顺序程序设计应用 100 | 5.7 小结 102 |
5.8 实践与练习 103 | ———— | ———— | ———— | ———— | ———— |
第6章 选择结构程序设计 105 | 视频讲解:44分钟 | 6.1 if语句 106 | 6.2 if语句的基本形式 106 | 6.2.1 if语句形式 106 | 6.2.2 if…else语句形式 109 | 6.2.3 else if语句形式 113 |
6.3 if的嵌套形式 117 | 6.4 条件运算符 119 | 6.5 switch 语句 121 | 6.5.1 switch语句的基本形式 121 | 6.5.2 多路开关模式的switch语句 125 | 6.6 if else 语句和switch语句的区别 127 |
6.7 选择结构程序应用 129 | 6.8 小结 131 | 6.9 实践与练习 131 | ———— | ———— | ———— |
第 7章 循环控制 133 | 视频讲解:41分钟 | 7.1 循环语句 134 | 7.2 while语句 134 | 7.3 do- while语句 137 | 7.4 for语句 139 | 7.4.1 for语句使用 139 |
7.4.2 for循环的变体 143 | 7.4.3 for语句中的逗号应用 145 | 7.5 3种循环语句的比较 146 | 7.6 循环嵌套 147 | 7.6.1 循环嵌套的结构 147 | 7.6.2 循环嵌套实例 148 |
7.7 转移语句 150 | 7.7.1 goto语句 150 | 7.7.2 break 语句 151 | 7.7.3 continue语句 153 | 7.8 小结 154 | 7.9 实践与练习 154 |
第2篇 核心技术 |
第8章 数组 157 | 视频讲解:1小时7分钟 | 8.1 一维数组 158 | 8.1.1 一维数组的定义和引用 158 | 8.1.2 一维数组初始化 160 | 8.1.3 一维数组应用 162 | 8.2 二维数组 163 |
8.2.1 二维数组的定义和引用 163 | 8.2.2 二维数组初始化 165 | 8.2.3 二维数组应用 168 | 8.3 字符数组 169 | 8.3.1 字符数组定义和引用 169 | 8.3.2 字符数组初始化 170 |
8.3.3 字符数组的结束标志 172 | 8.3.4 字符数组的输入和输出 172 | 8.3.5 字符数组应用 174 | 8.4 多维数组 175 | 8.5 数组的排序算法 175 | 8.5.1 选择法排序 175 |
8.5.2 冒泡法排序 177 | 8.5.3 交换法排序 179 | 8.5.4 插入法排序 181 | 8.5.5 折半法排序 184 | 8.5.6 排序算法的比较 186 | 8.6 字符串处理函数 187 |
8.6.1 字符串复制 187 | 8.6.2 字符串连接 188 | 8.6.3 字符串比较 190 | 8.6.4 字符串大小写转换 19 | 8.6.5 获得字符串长度 193 | 8.7 数组应用 194 |
8.7.1 反转输出字符串 194 | 8.7.2 输出系统日期和时间 196 | 8.7.3 字符串的加密和解密 198 | 8.8 小结 199 | 8.9 实践与练习 200 | ———— |
第9章 函数 201 | 视频讲解:55分钟 | 9.1 函数概述 202 | 9.2 函数 | 9.2.1 函数定义的形式 205 | 9.2.2 定义与声明 | 9.3 返回语句 208 |
9.3.1 从函数返回 208 | 9.3.2 返回值 209 | 9.4 函数参数 211 | 9.4.1 形式参数与实际参数 211 | 9.4.2 数组作函数参数 213 | 9.4.3 main 的参数 |
9.5 函数的调用 220 | 9.5.1 函数调用方式 221 | 9.5.2 嵌套调用 223 | 9.5.3 递归调用 226 | 9.6 内部函数和外部函数 22 | 9.6.1 内部函数 228 |
9.6.2 外部函数 230 | 9.7 局部变量和全局变量 231 | 9.7.1 局部变量 231 | 9.7.2 全局变量 234 | 9.8 函数应用 236 | 9.9 小结 242 |
9.10 实践与练习 243 | ———— | ———— | ———— | ———— | ———— |
第10章 指针 245 | 视频讲解:1小时2分钟 | 10.1 指针相关概念 246 | 10.1.1 地址与指针 246 | 10.1.2 变量与指针 247 | 10.1.3 指针变量 247 | 10.1.4 指针自加自减运算 251 |
10.2 数组与指针 253 | 10.2.1 一维数组与指针 253 | 10.2.2 二维数组与指针 257 | 10.2.3 字符串与指针 261 | 10.2.4 字符串数组 263 | 10.3 指向指针的指针 264 |
10.4 指针变量做函数参数 268 | 10.5 返回指针值的函数 277 | 10.6 指针数组做main函数的参数 279 | 10.7 小结 280 | 10.8 实践与练习 281 | ———— |
第3篇 高级应用 |
第11章 结构体和共用体 285 | 视频讲解:40分钟 | 11.1 结构体 286 | 11.1.1 结构体类型的概念 286 | 11.1.2 结构体变量的定义 287 | 11.1.3 结构体变量的引用 289 | 11.1.4 结构体类型的初始化 292 |
11.2 结构体数组 293 | 11.2.1 定义 | 11.2.2 初始化结构体数组 295 | 11.3 结构体指针 297 | 11.3.1 指向结构体变量的指针 297 | 11.3.2 指向结构体数组的指针 300 |
11.3.3 结构体作为函数参数 302 | 11.4 包含结构的结构 305 | 11.5 链表 307 | 11.5.1 链表概述 307 | 11.5.2 创建动态链表 308 | 11.5.3 输出链表 310 |
11.6 链表相关操作 3 | 11.6.1 链表的插入操作 313 | 11.6.2 链表的删除操作 315 | 11.7 共用体 319 | 11.7.1 共用体的概念 319 | 11.7.2 共用体变量的引用 320 |
11.7.3 共用体变量的初始化 321 | 11.7.4 共用体类型的数据特点 322 | 11.8 枚举类型 322 | 11.9 小结 324 | 11.10 实践与练习 324 | ———— |
第12章 位运算 325 | 视频讲解:35分钟 | 12.1 位与字节 326 | 12.2 位运算操作符 326 | 12.2.1 “与”运算符 326 | 12.2.2 “或”运算符 328 | 12.2.3 “取反”运算符 329 |
12.2.4 “异或”运算符 330 | 12.2.5 “左移”运算符 332 | 12.2.6 “右移”运算符 334 | 12.3 循环移位 335 | 12.4 位段 338 | 12.4.1 位段的概念与定义 338 |
12.4.2 位段相关说明 339 | 12.5 小结 341 | 12.6 实践与练习 341 | ———— | ———— | ———— |
第13章 预处理 343 | 视频讲解:39分钟 | 13.1 宏定义 344 | 13.1.1 不带参数的宏定义 344 | 13.1.2 带参数的宏定义 346 | 13.2 #include指令 347 | 13.3 条件编译 349 |
13.3.1 #if命令 349 | 13.3.2 #ifdef及#ifndef命令 352 | 13.3.3 #undef命令 354 | 13.3.4 #line命令 354 | 13.3.5 #pragma命令 355 | 13.4 小结 356 |
13.5 实践与练习 356 | ———— | ———— | ———— | ———— | ———— |
第14章 文件 357 | 视频讲解:55分钟 | 14.1 文件概述 358 | 14.2 文件基本操作 358 | 14.2.1 文件指针 358 | 14.2.2 文件的打开 359 | 14.2.3 文件的关闭 360 |
14.3 文件的读写 360 | 14.3.1 fputc函数 361 | 14.3.2 fgetc函数 361 | 14.3.3 fputs函数 362 | 14.3.4 fgets函数 363 | 14.3.5 fprintf函数 364 |
14.3.6 fscanf函数 366 | 14.3.7 fread函数和fwrite函数 367 | 14.4 文件的定位 369 | 14.4.1 fseek函数 369 | 14.4.2 rewind函数 371 | 14.4.3 ftell函数 372 |
14.5 小结 375 | 14.6 实践与练习 375 | ———— | ———— | ———— | ———— |
第15章 存储管理 377 | 视频讲解:22分钟 | 15.1 内存组织方式 378 | 15.1.1 内存组织方式 378 | 15.1.2 堆与栈 378 | 15.2 动态管理 381 | 15.2.1 malloc 函 |
15.2.2 calloc函数 | 15.2.3 realloc函数 383 | 15.2.4 free函数 384 | 15.3 内存丢失 385 | 15.4 小结 386 | 15.5 实践与练习 386 |
第16章 网络套接字编程 387 | 视频讲解:39分钟 | 16.1 计算机网络基础 388 | 16.1.1 IP地址 388 | 16.1.2 OSI 七层参考模型 389 | 16.1.3 地址解析 389 | 16.1.4 域名系统 390 |
16.1.5 TCP/IP协议 391 | 16.1.6 端口 392 | 16.1.7 套接字的引入 393 | 16.1.8 网络字节顺序 393 | 16.2 套接字概述 393 | 16.2.1 套接字概述 393 |
16.2.2 TCP的套接字的socket编程 394 | 16.2.3 UDP 的套接字的socket编程 395 | 16.3 套接字函数 395 | 16.3.1 套接字函数介绍 395 | 16.3.2 基于TCP的网络聊天程序 402 | 16.4 小结 407 |
16.5 实践与练习 408 | ———— | ———— | ———— | ———— | ———— |
第4篇 项目实战 |
第17 章 学生成绩管理系统 411 | 视频讲解:40分钟 | 17.1 需求分析 412 | 17.2 系统设计 412 | 17.3 功能设计 413 | 17.3.1 功能选择界面 413 | 17.3.2 录入学生 |
17.3.3 查询学生成绩信息 417 | 17.3.4 删除学生成绩信息 418 | 17.3.5 修改学生成绩信息 420 | 17.3.6 插入学生成绩信息 421 | 17.3.7 统计学生人数 423 | 17.4 小结 424 |
附 录 425 |