新書推薦:
《
颠覆者:美国散户如何凭借数字平台在华尔街实现逆袭
》
售價:HK$
90.9
《
投诉是礼物:理论版+实践版(套装2册) 长盛不衰的客户服务指南!
》
售價:HK$
135.7
《
女性史:革命与战争时期卷(一次重构人类历史的努力)
》
售價:HK$
135.7
《
永无止尽的狂热:三岛由纪夫
》
售價:HK$
68.8
《
原来这就是逻辑学:16堂大师逻辑课
》
售價:HK$
57.3
《
隋唐王朝兴亡史
》
售價:HK$
78.2
《
货币新纪元:区块链重塑金融生态
》
售價:HK$
101.2
《
规制如何生财:清代盐政基本原理研究(1644-1850)
》
售價:HK$
101.2
編輯推薦:
1.循序渐进,自学有道。本书从基础→提高→高级→项目实战,符合读者学习路线。
2.关键技术,实例解析。全书通过“实例”的形式,将知识融入到实例讲解中,使知识与实例相辅相成。
3.书课结合,资源丰富。本书提供了强大的网络支持和服务,提供源码、视频课程、课件等配套资源。
4.技术服务完善。作者团队提供企业QQ、论坛、邮箱、客服电话、明日学院官方网站等多渠道的技术支持与服务,在线为读者答疑解惑。
內容簡介:
本书系统、全面地介绍了有关 C 语言程序设计所涉及的重要知识。全书分为基础篇、提高篇、高级篇和项目篇,共 18 章。基础篇包括迈进 C 语言的大门、C 语言的开发环境、初识 C 语言、C 语言基本数据类型、数据输入与输出、运算符与表达式、条件判断语句、循环语句。提高篇包括数组、字符串处理函数、输入验证、函数、指针的使用。高级篇包括复合数据类型及链表、预处理命令、文件操作、内存管理。最后,项目篇是开发一个俄罗斯方块游戏。每章内容都与实例紧密结合,有助于读者理解知识、
应用知识,达到学以致用的目的。
本书附有配套资源,包括源码及教学视频。其中,源码全部经过精心测试,能够在 Windows XP、Windows 7、Windows 8、Windows 10 系统下编译和运行。
本书可作为大中专院校计算机专业、软件专业及相关专业的教材,同时也适合 C 语言爱好者、初级C 语言读者参考使用。
關於作者:
明日科技 一个拥有软件开发和项目实施方面的资深专家和学习型技术团队,利用积累的专业知识和经验,已开发出版了“从入门到精通”“软件开发实战1200例”“软件开发实战宝典”“软件项目开发全程实录”等系列丛书,是国内热销的编程图书。
目錄 :
目 录
前言 xvii
基础篇
第 1章 迈进C语言的大门
1.1 什么是C语言 002
1.2 C语言的特点 004
1.3 C语言能做什么 005
1.3.1 单片机系统领域 005
1.3.2 应用软件领域 006
1.3.3 嵌入式系统领域 006
1.3.4 游戏领域 007
1.4 C语言与其他语言比较 007
1.4.1 C语言和C 比较 007
1.4.2 C语言和VC 比较 008
1.4.3 C语言和Java比较 009
1.4.4 C语言和Python比较 009
1.5 练习题 010
第 2章 C语言的开发环境
2.1 开发环境大全 011
2.2 安装C语言开发环境 013
2.2.1 安装Visual Studio 2019 013
2.2.2 安装Visual C 6.0 016
2.3 熟悉C语言开发环境 020
2.3.1 Visual Studio 2019开发环境 020
2.3.2 Visual C 6.0开发环境 026
2.4 C语言程序开发的步骤 029
2.4.1 使用Visual Studio 2019开发
C语言程序 030
2.4.2 使用Visual C 6.0开发
C语言程序 033
2.5 初学者经常遇到的问题 036
2.6 练习题 039
第3章 初识C语言
3.1 开篇实例:《阿甘正传》
“简历” 041
3.2 C语言程序结构 042
3.2.1 头文件 043
3.2.2 主函数 043
3.2.3 函数体 045
3.2.4 输出函数:printf()函数 045
3.2.5 return 0; 046
3.3 注释 046
3.3.1 单行注释 046
3.3.2 多行注释 047
3.3.3 文档注释 047
3.4 常量和变量 048
3.4.1 常量 048
3.4.2 变量 049
3.5 关键字与标识符 051
3.5.1 关键字 051
3.5.2 标识符 052
3.6 C语言的编程规范 055
3.6.1 使用空格 055
3.6.2 使用换行 055
3.6.3 变量、常量命名规范 056
3.6.4 函数命名规范 056
3.7 练习题 056
第4章 C语言基本数据类型
4.1 开篇实例:暗号 058
4.2 基本数据类型概述 059
4.3 整型 060
4.3.1 声明整型数据 060
4.3.2 初始化整型变量 060
4.3.3 其他整型 061
4.3.4 输出其他整型数据 062
4.3.5 整型常量 062
4.4 浮点型 063
4.4.1 声明浮点型数据 063
4.4.2 初始化浮点型变量 065
4.4.3 输出浮点型数据 066
4.4.4 浮点型常量 066
4.5 字符型 067
4.5.1 声明字符型数据 067
4.5.2 初始化字符型变量 068
4.5.3 输出字符型数据 069
4.5.4 字符型常量 070
4.5.5 转义字符 072
4.6 类型转换 073
4.6.1 自动类型转换 073
4.6.2 强制类型转换 075
4.7 练习题 076
第5章 数据输入与输出
5.1 开篇实例:绘制《植物大战僵尸》
中的“墙果” 078
5.2 字符串的输入输出函数 079
5.2.1 单字符输入输出函数:
putchar()和getchar() 079
5.2.2 多字符输入输出函数:
puts()和gets() 082
5.3 格式化输入输出函数 084
5.3.1 格式化输出函数:printf() 084
5.3.2 格式化输入函数:scanf() 091
5.4 练习题 096
第6章 运算符与表达式
6.1 开篇实例:燃烧我的卡路里 098
6.2 运算符与表达式 099
6.2.1 运算符 099
6.2.2 表达式 099
6.3 赋值运算符与赋值表达式 100
6.3.1 赋值运算符 100
6.3.2 赋值表达式 101
6.4 算术运算符与算术表达式 101
6.4.1 “ ”运算符与表达式 102
6.4.2 “-”运算符与表达式 102
6.4.3 “*”运算符与表达式 103
6.4.4 “\\”运算符与表达式 104
6.4.5 “%”运算符与表达式 104
6.4.6 “ ”运算符 105
6.4.7 “--”运算符 106
6.4.8 总结 106
6.4.9 优先级与结合性 107
6.5 关系运算符与关系表达式 108
6.5.1 “>”运算符与表达式 108
6.5.2 “>=”运算符与表达式 108
6.5.3 “<”运算符与表达式 109
6.5.4 “<=”运算符与表达式 110
6.5.5 “==”运算符与表达式 110
6.5.6 “!=”运算符与表达式 111
6.5.7 总结 112
6.5.8 优先级与结合性 112
6.6 逻辑运算符与逻辑表达式 113
6.6.1 “&&”运算符与表达式 113
6.6.2 “||”运算符与表达式 114
6.6.3 “!”运算符与表达式 116
6.6.4 总结 117
6.6.5 优先级与结合性 117
6.7 位运算符与位表达式 117
6.7.1 “&”运算符 118
6.7.2 “|”运算符 118
6.7.3 “~”运算符 119
6.7.4 “^”运算符 119
6.7.5 “<<”运算符 121
6.7.6 “> >”运算符 122
6.7.7 总结 122
6.7.8 优先级与结合性 123
6.8 逗号运算符与逗号表达式 123
6.9 复合赋值运算符 124
6.10 优先级与结合性的总结 124
6.11 练习题 126
第7章 条件判断语句
7.1 开篇实例:安全通行 127
7.2 if语句 128
7.2.1 单个if语句 128
7.2.2 if else语句 130
7.2.3 else if语句 132
7.3 if语句的嵌套 135
7.4 条件运算符 137
7.5 switch语句 139
7.5.1 switch语句的基本形式 139
7.5.2 多路开关模式的switch语句 142
7.6 if else和switch的区别 144
7.7 练习题 144
第8章 循环语句
8.1 开篇实例:利用公积金
贷款买房 146
8.2 while语句 147
8.3 do while语句 149
8.4 for语句 152
8.4.1 for语句的使用 152
8.4.2 for循环的变体 154
8.4.3 for语句中逗号的应用 156
8.5 循环嵌套 157
8.6 转移语句 160
8.6.1 break语句 160
8.6.2 continue语句 163
8.6.3 goto语句 165
8.7 练习题 167
提高篇
第9章 数组
9.1 开篇实例:购物车清单 172
9.2 数组的概念 173
9.3 一维数组 174
9.3.1 一维数组的定义 174
9.3.2 一维数组的初始化 176
9.3.3 一维数组元素的引用 177
9.4 二维数组 178
9.4.1 二维数组的定义 179
9.4.2 二维数组的初始化 179
9.4.3 二维数组元素的引用 181
9.5 多维数组 183
9.6 数组的排序算法 184
9.6.1 选择法排序 184
9.6.2 冒泡法排序 186
9.6.3 交换法排序 188
9.6.4 插入法排序 189
9.6.5 折半法排序 191
9.7 5种排序方法的比较 194
9.8 练习题 195
第 10章 字符串处理函数
10.1 字符数组 198
10.2 使用字符串 199
10.2.1 初始化 199
10.2.2 结束标志 200
10.2.3 输入和输出 201
10.3 字符串复制 201
10.4 字符串连接 204
10.5 字符串比较 205
10.6 字符串大小写转换 207
10.7 获得字符串长度 208
10.8 练习题 209
第 11章 输入验证
11.1 英文字母验证 211
11.2 小写字母验证 213
11.3 大写字母验证 214
11.4 标点符号验证 215
11.5 字母或数字验证 217
11.6 除空格外的字符验证 218
11.7 空格验证 219
11.8 练习题 221
第 12章 函数
12.1 函数概述 223
12.2 函数的定义 224
12.2.1 函数定义的形式 224
12.2.2 定义与声明 225
12.3 返回语句 226
12.3.1 有返回值的函数 226
12.3.2 无返回值的函数 227
12.4 函数参数 228
12.4.1 形式参数与实际参数 228
12.4.2 数组作为函数参数 229
12.4.3 main()函数的参数 231
12.5 函数的调用 231
12.5.1 函数的调用方式 232
12.5.2 嵌套调用 234
12.5.3 递归调用 237
12.6 内部函数和外部函数 239
12.6.1 内部函数 239
12.6.2 外部函数 240
12.7 局部变量和全局变量 241
12.7.1 局部变量 241
12.7.2 全局变量 242
12.8 数学库函数 243
12.9 练习题 244
第 13章 指针的使用
13.1 指针相关概念 246
13.1.1 地址与指针 246
13.1.2 变量与指针 247
13.1.3 指针变量 248
13.1.4 指针自增自减运算 250
13.2 数组与指针 252
13.2.1 一维数组与指针变量 252
13.2.2 二维数组与指针变量 255
13.2.3 字符串与指针 255
13.2.4 字符串数组 256
13.3 指向指针的指针 256
13.4 指针变量作为函数参数 257
13.5 返回指针值的函数 260
13.6 指针数组作为main()函数的
参数 260
13.7 练习题 262
高级篇
第 14章 复合数据类型及链表
14.1 结构体 266
14.1.1 结构体类型的概念 266
14.1.2 结构体变量的定义 267
14.1.3 结构体类型的初始化 270
14.1.4 结构体变量的引用 270
14.2 结构体数组 272
14.2.1 定义结构体数组 272
14.2.2 初始化结构体数组 274
14.3 结构体指针 276
14.3.1 指向结构体变量的指针 276
14.3.2 指向结构体数组的指针 279
14.3.3 结构体作为函数参数 281
14.4 包含结构体的结构体 284
14.5 链表 286
14.5.1 链表概述 286
14.5.2 创建动态链表 287
14.5.3 输出链表 289
14.6 链表相关操作 290
14.6.1 链表的插入操作 291
14.6.2 链表的删除操作 292
14.7 共用体 294
14.7.1 共用体的概念 294
14.7.2 共用体变量的初始化 296
14.7.3 共用体变量的引用 296
14.7.4 共用体类型的数据特点 299
14.8 枚举类型 299
14.9 练习题 301
第 15章 预处理命令
15.1 宏定义 303
15.1.1 不带参数的宏定义 304
15.1.2 带参数的宏定义 305
15.2 #include命令 307
15.3 条件编译 308
15.3.1 #if命令 308
15.3.2 #elif命令 309
15.3.3 #ifdef及#ifndef命令 309
15.3.4 #undef命令 310
15.3.5 #pragma命令 311
15.4 练习题 312
第 16章 文件操作
16.1 文件概述 314
16.2 文件基本操作 315
16.2.1 文件指针 315
16.2.2 文件的打开 316
16.2.3 文件的关闭 317
16.3 文件的读写 317
16.3.1 fputc()函数 317
16.3.2 fgetc()函数 319
16.3.3 fputs()函数 320
16.3.4 fgets()函数 321
16.3.5 fprintf()函数 322
16.3.6 fscanf()函数 323
16.3.7 fread()和fwrite()函数 325
16.4 文件的定位 327
16.4.1 fseek()函数 327
16.4.2 rewind()函数 329
16.4.3 ftell()函数 331
16.5 练习题 334
第 17章 内存管理
17.1 内存组织方式 336
17.1.1 内存的组织方式 336
17.1.2 堆与栈 337
17.2 动态管理 338
17.2.1 malloc()函数 338
17.2.2 calloc()函数 339
17.2.3 realloc()函数 340
17.2.4 free()函数 341
17.3 内存丢失 343
17.4 练习题 343
项目篇
第 18章 俄罗斯方块游戏
18.1 需求分析 346
18.2 系统设计 346
18.2.1 系统目标 346
18.2.2 构建开发环境 347
18.2.3 游戏界面 347
18.2.4 业务流程图 347
18.2.5 系统预览 348
18.3 技术准备 350
18.3.1 控制颜色函数 350
18.3.2 设置文字显示位置 352
18.4 公共类设计 353
18.5 游戏欢迎界面设计 355
18.5.1 游戏欢迎界面概述 355
18.5.2 标题部分设计 355
18.5.3 设计字符花装饰 357
18.5.4 设计菜单选项的边框 359
18.5.5 设计菜单选项的文字 360
18.6 游戏主窗体界面设计 361
18.6.1 游戏主窗体界面概述 361
18.6.2 输出游戏主窗体界面 362
18.6.3 绘制俄罗斯方块 365
18.6.4 输出俄罗斯方块 373
18.7 游戏逻辑设计 374
18.7.1 游戏逻辑概述 374
18.7.2 判断俄罗斯方块是否可移动 375
18.7.3 清除俄罗斯方块下落的痕迹 377
18.7.4 判断方块是否满行 378
18.7.5 随机产生俄罗斯方块类型的序号 380
18.8 开始游戏 381
18.8.1 开始游戏模块概述 381
18.8.2 显示俄罗斯方块 382
18.8.3 各种按键操作 383
18.8.4 游戏结束界面 387
18.8.5 重新开始游戏 389
18.9 按键说明模块 389
18.9.1 模块概述 389
18.9.2 代码实现 390
18.10 游戏规则介绍模块 392
18.10.1 模块概述 392
18.10.2 代码实现 392
18.11 退出游戏 394
18.12 小结 395