《明解C语言:中级篇》延续了《明解C语言:入门篇》图文并茂、示例丰富、讲解细致的风格,在结构上又独树一帜,通过每章带领读者编写一个游戏程序并逐步完善或加以变更,来讲解相关的C语言进阶知识。每章的程序都很简单有趣,而且包含着很多实用性的技巧,例如随机数的生成、数组的应用方法、字符串和指针、命令行参数、文件处理、接收可变参数的函数的生成方法、存储空间的动态分配与释放,等等。此外,还会讲解详细的语法规则、众多库函数的使用方法、算法等知识。 本书非常适合有一定C语言基础的读者阅读。
畅销书《明解C语言》第-2弹,C语言进阶不二之选! 111段代码+152幅图表,图文并茂,讲解清晰易懂。 10个有趣的游戏程序,让你在快乐编程中学会实用技巧。 双色印刷,版式赏心悦目。 本书是日本超受欢迎的C语言教程,荣获日本工学教育协会著作奖,原版系列累计畅销超100万册! 本书适合以下读者阅读: 1.入门书中的示例程序都能看懂,但是自己写不出来; 2.理解数组、指针等语法,但是不知如何在程序中使用; 3.学完入门书后找不到一本合适的书继续学习……
柴田望洋 日本福冈工业大学信息工程学院副教授。在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
\n:换行符 35
\f:换页符 35
\b:退格符 36
\r:回车符 38
\t:水平制表符 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
收起全部↑