编辑推荐
畅销书《明解C语言》第-2弹,C语言进阶不二之选! 111段代码+152幅图表,图文并茂,讲解清晰易懂。 10个有趣的游戏程序,让你在快乐编程中学会实用技巧。 双色印刷,版式赏心悦目。 本书是日本超受欢迎的C语言教程,荣获日本工学教育协会著作奖,原版系列累计畅销超100万册! 本书适合以下读者阅读: 1.入门书中的示例程序都能看懂,但是自己写不出来; 2.理解数组、指针等语法,但是不知如何在程序中使用; 3.学完入门书后找不到一本合适的书继续学习……
内容简介
《明解C语言:中级篇》延续了《明解C语言:入门篇》图文并茂、示例丰富、讲解细致的风格,在结构上又独树一帜,通过每章带领读者编写一个游戏程序并逐步完善或加以变更,来讲解相关的C语言进阶知识。每章的程序都很简单有趣,而且包含着很多实用性的技巧,例如随机数的生成、数组的应用方法、字符串和指针、命令行参数、文件处理、接收可变参数的函数的生成方法、存储空间的动态分配与释放,等等。此外,还会讲解详细的语法规则、众多库函数的使用方法、算法等知识。 本书非常适合有一定C语言基础的读者阅读。
作者简介
柴田望洋 日本福冈工业大学信息工程学院副教授。在IT界家喻户晓,编写了一系列极富影响力的计算机教材和参考书,如《明解C++》《明解Java》等。本书荣获日本工学教育协会著作奖。
目录
第1章 猜数游戏 1
1-1 猜数判定 2
通过if语句实现条件分支 2
if语句的嵌套 3
实现多分支的方法 4
1-2 重复到猜对为止 8
通过do语句循环 8
相等运算符和关系运算符 9
通过while语句循环 10
break语句 10
while语句和do语句 11
先判断后循环和先循环后判断 11
1-3 随机设定目标数字 12
rand函数:生成随机数 12
srand函数:设置用于生成随机数的种子 13
随机设定目标数字 15
限制输入次数 17
1-4 保存输入记录 22
数组 22
把输入的值存入数组 24
通过for语句来显示输入记录 26
数组元素的初始化 28
获取数组的元素个数 29
第2章 专注于显示 33
2-1 熟练运用转义字符 34
转义字符 34
a:警报符 35
:换行符 35
f:换页符 35
:退格符 36
:回车符 38
:水平制表符 39
v:垂直制表符 39
'和":单引号和双引号 40
putchar函数:输出字符 40
:问号符 40
\:反斜杠字符 41
八进制转义字符和十六进制转义字符 41
2-2 操纵时间 42
clock函数:获取程序启动后经过的时间 42
计算处理所需的时间 46
暂停处理一段时间 47
2-3 字幕显示 50
逐个显示并消除字符 50
strlen函数:查询字符串的长度 50
字幕显示(从右往左) 52
字幕显示(从左往右) 53
2-4 格式输入输出 56
把要显示的位数指定为变量 56
显示任意数量的空白字符 57
printf函数:格式输出 60
scanf函数:格式输入 63
第3章 猜拳游戏 69
3-1 猜拳游戏 70
基本设计 70
switch语句 72
表示“手势”的字符串 74
包含汉字的字符串 75
char型 76
显示所有的字符 77
isprint函数:判断显示字符 78
条件运算符和条件表达式 78
字符串的内部 79
通过指针来遍历字符串 80
CHAR_BIT 81
指向字符串的指针数组 81
程序的改良 84
手势的值和手势的判断 86
让计算机“后出” 87
3-2 函数的分割 88
胜负次数 88
函数和标识符的作用域 90
猜赢3次就结束 91
第4章 珠玑妙算 97
4-1 珠玑妙算 98
珠玑妙算 98
出题 99
读取数字串 101
atoi函数/atol函数/atof函数:把字符串转换为数值 102
检查已读取的字符串的有效性 103
字符类别的判断 105
hit和blow的判断 107
第5章 记忆力训练 117
5-1 单纯记忆训练 118
训练记忆4位数 118
整数型的表示范围 119
训练记忆任意位数的数值 120
输入训练等级 121
用字符串表示数值 122
生成作为题目的字符串 122
显示作为题目的字符串 123
strcmp函数:字符串的比较 124
英文字母记忆训练(其一) 125
生成作为题目的字符串 127
英文字母记忆训练(其二) 127
5-2 加一训练 130
加一训练 130
输入等级 132
生成并显示题目 132
消除题目 132
输入答案 133
判断对错 133
保存答对数量 133
显示训练结果 133
用横向图形显示 134
用纵向图形显示 135
把数值存入数组 136
如何存储超过数组元素个数的值(其一) 138
如何存储超过数组元素个数的值(其二) 140
加一训练的改良 142
5-3 存储空间的动态分配与释放 144
声明数组 144
动态存储期 145
存储空间的动态分配与释放 146
指向void型的指针 146
为单个对象分配存储空间 148
为数组对象分配存储空间 151
第6章 日历 161
6-1 今天是几号 162
今天的日期 162
time_t型:日历时间 162
time函数:以日历时间的形式来获取当前时间 163
tm结构体:分解时间 164
localtime函数:把日历时间转换成表示本地时间的分解时间 164
gmtime函数:把日历时间转换成UTC分解时间 166
通过当前时间设定随机数种子 167
asctime函数:把分解时间转换成字符串 167
ctime函数:把日历时间转换成字符串 170
difftime函数:求时间差 171
暂停处理一段时间 173
6-2 求星期 174
mktime函数:把表示本地时间的分解时间转换成日历时间 174
蔡勒公式 175
6-3 日历 178
显示日历 178
求星期 179
闰年的判断 179
月份的天数 179
显示日历的过程 180
横向显示 182
把1个月的日历存入字符串 186
sprintf函数:对字符串进行格式化输出 186
生成空字符串 187
strcpy函数:字符串的复制 188
在第1日左侧设置空白 189
strcat函数:字符串的连接 190
显示字符串 192
年月的计算 193
6-4 命令行参数 194
命令行参数 194
argv指向的实体 196
通过指针以字符串为单位遍历argv 197
通过指针以字符为单位遍历argv 199
不使用argc来遍历 204
启动程序时指定年月的日历 205
第7章 右脑训练 211
7-1 寻找幸运数字 212
复制数组 212
复制数组时跳过一个数组元素 214
寻找幸运数字 216
重新排列数组元素 217
交换两个值 219
7-2 寻找重复数字 222
寻找重复数字 222
键盘输入和操作性能的提升(MS-Windows/MS-DOS) 224
getch函数:获取按下的键 225
putch函数:输出到控制台 225
键盘输入和操作性能的提升(UNIX / Linux / OS X) 226
通用头文件 227
包含头文件保护的头文件的设计 229
替换调用的函数 231
可变参数的声明 232
va_start宏:访问可变参数前的准备 233
va_arg宏:取出可变参数 234
va_end宏:结束对可变参数的访问 235
vprintf函数/ vfprintf函数:输出到流 235
vsprintf函数:输出到字符串 237
改良后的程序 238
7-3 三字母词联想训练 241
瞬间判断力的养成 241
生成题目 242
第8章 打字练习 247
8-1 基本打字练习 248
输入一个字符串 248
消除已输入的字符 249
输入多个字符串 252
打乱出题顺序(方法一) 254
打乱出题顺序(方法二) 256
8-2 键盘布局联想打字 258
键盘布局联想打字 258
8-3 综合打字练习 261
练习菜单 261
单一位置训练 267
混合位置训练 269
C语言的单词训练 271
英语会话训练 273
第9章 文件处理 277
9-1 标准流 278
复制程序 278
getchar函数和EOF 278
赋值和比较 279
流和缓冲区 280
缓冲的种类 280
setvbuf函数/setbuf函数:更改缓冲方法 281
fflush函数:刷新缓冲区 282
标准流 283
重定向 284
9-2 文本文件 285
文件的打开和关闭 285
fopen函数:打开文件 285
FILE型 287
fclose函数:关闭文件 288
保存和获取训练信息 288
更新最高得分 292
读取训练信息 292
fscanf函数:输入格式 293
写入训练信息 293
fprintf函数:输出格式 293
9-3 实用程序的编写 294
concat:文件的连接输出 294
fgetc函数:从流中读取一个字符 297
fputc函数:向流输出一个字符 297
detab:把水平制表符转换成空白字符 298
fputs函数:输出字符串 301
entab:把空白字符转换成水平制表符 302
9-4 二进制文件 304
文本文件和二进制文件 304
fread函数:从文件中读取数据 305
fwrite函数:向文件中写入数据 305
hdump:通过字符和十六进制编码实现文件转储 305
bcopy:复制文件 307
第10章 英语单词学习软件 311
10-1 英语单词学习软件 312
单词显示软件 312
选择和显示单词 313
向单词学习软件扩展 314
显示选项 316
生成选项 316
生成选项(改良版本) 318
10-2 为字符串数组动态分配空间 320
为单一字符串动态分配空间 320
为字符串数组(二维数组)动态分配空间 321
为字符串数组(指针数组)动态分配空间 323
单词文件的读取 330
后记 335
致谢 336
参考文献 337
明解C语言 中级篇 epub pdf mobi txt 电子书 下载 2024
明解C语言 中级篇 下载 epub mobi pdf txt 电子书 2024