基本信息
名称: C语言入门经典(第5版)
作者信息: 作者: I.) 霍尔顿 (Horton [ 英文 pdf ]
简单介绍
编程导师Ivor Horton经典巨作,长期位居C语言开发类零售榜首,第五版全新包装隆重上市,超高的性价比助你快速掌握C语言,提升您的编程技能;完善您的职业生涯
目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379
| 目 录 第1章 C语言编程 1 1.1 C语言 1 1.2 标准库 2 1.3 学习C 2 1.4 创建C程序 2 1.4.1 编辑 2 1.4.2 编译 3 1.4.3 链接 4 1.4.4 执行 4 1.5 创建第一个程序 5 1.6 编辑第一个程序 5 1.7 处理错误 6 1.8 剖析一个简单的程序 7 1.8.1 注释 7 1.8.2 预处理指令 8 1.8.3 定义main()函数 9 1.8.4 关键字 10 1.8.5 函数体 10 1.8.6 输出信息 11 1.8.7 参数 11 1.8.8 控制符 11 1.8.9 三字母序列 13 1.9 预处理器 14 1.10 用C语言开发程序 14 1.10.1 了解问题 14 1.10.2 详细设计 15 1.10.3 实施 15 1.10.4 测试 15 1.11 函数及模块化编程 16 1.12 常见错误 19 1.13 要点 19 1.14 小结 20 1.15 习题 20 第2章 编程初步 21 2.1 计算机的内存 21 2.2 什么是变量 23 2.3 存储整数的变量 24 2.3.1 变量的使用 28 2.3.2 变量的初始化 29 2.4 变量与内存 36 2.4.1 带符号的整数类型 36 2.4.2 无符号的整数类型 37 2.4.3 指定整数常量 37 2.5 使用浮点数 39 2.6 浮点数变量 41 2.6.1 使用浮点数完成除法运算 42 2.6.2 控制输出中的小数位数 43 2.6.3 控制输出的字段宽度 43 2.7 较复杂的表达式 44 2.8 定义命名常量 46 2.8.1 极限值 49 2.8.2 sizeof运算符 51 2.9 选择正确的类型 52 2.10 强制类型转换 55 2.10.1 自动转换类型 56 2.10.2 隐式类型转换的规则 56 2.10.3 赋值语句中的隐式类型转换 57 2.11 再谈数值数据类型 58 2.11.1 字符类型 58 2.11.2 字符的输入输出 59 2.11.3 枚举 62 2.11.4 存储布尔值的变量 64 2.12 赋值操作的op=形式 65 2.13 数学函数 66 2.14 设计一个程序 67 2.14.1 问题 68 2.14.2 分析 68 2.14.3 解决方案 70 2.15 小结 73 2.16 练习 74 第3章 条件判断 75 3.1 判断过程 75 3.1.1 算术比较 75 3.1.2 基本的if语句 76 3.1.3 扩展if语句:if-else 79 3.1.4 在if语句中使用代码块 82 3.1.5 嵌套的if语句 83 3.1.6 测试字符 85 3.1.7 逻辑运算符 88 3.1.8 条件运算符 91 3.1.9 运算符的优先级 94 3.2 多项选择问题 98 3.2.1 给多项选择使用else-if语句 98 3.2.2 switch语句 99 3.2.3 goto语句 107 3.3 按位运算符 108 3.3.1 按位运算符的op=用法 110 3.3.2 使用按位运算符 111 3.4 设计程序 114 3.4.1 问题 114 3.4.2 分析 114 3.4.3 解决方案 114 3.5 小结 118 3.6 练习 118 第4章 循环 119 4.1 循环 119 4.2 递增和递减运算符 120 4.3 for循环 120 4.4 for循环的一般语法 124 4.5 再谈递增和递减运算符 125 4.5.1 递增运算符 125 4.5.2 递增运算符的前置和后置形式 125 4.5.3 递减运算符 126 4.6 再论for循环 127 4.6.1 修改for循环变量 129 4.6.2 没有参数的for循环 129 4.6.3 循环内的break语句 130 4.6.4 使用for循环限制输入 132 4.6.5 生成伪随机整数 135 4.6.6 再谈循环控制选项 137 4.6.7 浮点类型的循环控制变量 137 4.7 while循环 138 4.8 嵌套循环 140 4.9 嵌套循环和goto语句 146 4.10 do-while循环 147 4.11 continue语句 149 4.12 设计程序 150 4.12.1 问题 150 4.12.2 分析 150 4.12.3 解决方案 151 4.13 小结 162 4.14 习题 163 第5章 数组 165 5.1 数组简介 165 5.1.1 不用数组的程序 165 5.1.2 什么是数组 167 5.1.3 使用数组 168 5.2 寻址运算符 171 5.3 数组和地址 173 5.4 数组的初始化 174 5.5 确定数组的大小 175 5.6 多维数组 176 5.7 多维数组的初始化 178 5.8 变长数组 184 5.9 设计一个程序 186 5.9.1 问题 186 5.9.2 分析 186 5.9.3 解决方案 187 5.10 小结 193 5.11 习题 193 第6章 字符串和文本的应用 195 6.1 什么是字符串 195 6.2 存储字符串的变量 197 6.3 字符串操作 202 6.3.1 检查对C11的支持 202 6.3.2 确定字符串的长度 203 6.3.3 复制字符串 204 6.3.4 连接字符串 204 6.3.5 比较字符串 208 6.3.6 搜索字符串 211 6.3.7 单元化字符串 215 6.3.8 将换行符读入字符串 219 6.4 分析和转换字符串 221 6.4.1 转换字符的大小写形式 223 6.4.2 将字符串转换成数值 225 6.5 设计一个程序 227 6.5.1 问题 227 6.5.2 分析 227 6.5.3 解决方案 228 6.6 小结 233 6.7 习题 233 第7章 指针 235 7.1 指针初探 235 7.1.1 声明指针 236 7.1.2 通过指针访问值 237 7.1.3 使用指针 240 7.1.4 指向常量的指针 244 7.1.5 常量指针 244 7.1.6 指针的命名 245 7.2 数组和指针 245 7.3 多维数组 248 7.3.1 多维数组和指针 252 7.3.2 访问数组元素 253 7.4 内存的使用 256 7.4.1 动态内存分配:malloc()函数 256 7.4.2 释放动态分配的内存 257 7.4.3 用calloc()函数分配内存 261 7.4.4 扩展动态分配的内存 262 7.5 使用指针处理字符串 265 7.5.1 使用指针数组 266 7.5.2 指针和数组记号 272 7.6 设计程序 276 7.6.1 问题 276 7.6.2 分析 277 7.6.3 解决方案 277 7.7 小结 284 7.8 习题 285 第8章 编程的结构 287 8.1 程序的结构 287 8.1.1 变量的作用域和生存期 288 8.1.2 变量的作用域和函数 291 8.2 函数 291 8.2.1 定义函数 291 8.2.2 return语句 294 8.3 按值传递机制 299 8.4 函数原型 300 8.5 指针用作参数和返回值 301 8.5.1 常量参数 302 8.5.2 返回指针的风险 307 8.6 小结 310 8.7 习题 310 第9章 函数再探 313 9.1 函数指针 313 9.1.1 声明函数指针 313 9.1.2 通过函数指针调用函数 314 9.1.3 函数指针的数组 316 9.1.4 作为变元的函数指针 319 9.2 函数中的变量 321 9.2.1 静态变量:函数内部的追踪 321 9.2.2 在函数之间共享变量 323 9.3 调用自己的函数:递归 325 9.4 变元个数可变的函数 328 9.4.1 复制va_list 331 9.4.2 长度可变的变元列表的基本规则 331 9.5 main()函数 332 9.6 结束程序 333 9.6.1 abort()函数 333 9.6.2 exit()和atexit()函数 333 9.6.3 Exit()函数 334 9.6.4 quick_exit()和at_quick_exit()函数 334 9.7 提高性能 335 9.7.1 内联声明函数 335 9.7.2 使用restrict关键字 335 9.7.3 Noreturn函数限定符 336 9.8 设计程序 336 9.8.1 问题 336 9.8.2 分析 337 9.8.3 解决方案 338 9.9 小结 351 9.10 习题 352 第10章 基本输入和输出操作 353 10.1 输入和输出流 353 10.2 标准流 354 10.3 键盘输入 354 10.3.1 格式化键盘输入 355 10.3.2 输入格式控制字符串 355 10.3.3 输入格式字符串中的字符 360 10.3.4 输入浮点数的各种变化 362 10.3.5 读取十六进制和八进制值 363 10.3.6 用scanf_s()读取字符 364 10.3.7 从键盘上输入字符串 366 10.3.8 单个字符的键盘输入 367 10.4 屏幕输出 372 10.4.1 使用printf_s()的格式化输出 372 10.4.2 转义序列 375 10.4.3 整数输出 375 10.4.4 输出浮点数 378 10.4.5 字符输出 379 10.5 其他输出函数 380 10.5.1 屏幕的非格式化输出 381 10.5.2 数组的格式化输出 381 10.5.3 数组的格式化输入 382 10.6 小结 382 10.7 习题 383 第11章 结构化数据 385 11.1 数据结构:使用struct 385 11.1.1 定义结构类型和结构变量 387 11.1.2 访问结构成员 388 11.1.3 未命名的结构 390 11.1.4 结构数组 391 11.1.5 表达式中的结构成员 393 11.1.6 结构指针 393 11.1.7 为结构动态分配内存 394 11.2 再探结构成员 397 11.2.1 将一个结构作为另一个结构的成员 397 11.2.2 声明结构中的结构 398 11.2.3 将结构指针用作结构成员 399 11.2.4 双向链表 403 11.2.5 结构中的位字段 406 11.3 结构与函数 407 11.3.1 结构作为函数的变元 407 11.3.2 结构指针作为函数变元 408 11.3.3 作为函数返回值的结构 409 11.3.4 二叉树 414 11.4 共享内存 421 11.5 设计程序 425 11.5.1 问题 425 11.5.2 分析 426 11.5.3 解决方案 426 11.6 小结 438 11.7 习题 438 第12章 处理文件 441 12.1 文件的概念 441 12.1.1 文件中的位置 442 12.1.2 文件流 442 12.2 文件访问 442 12.2.1 打开文件 443 12.2.2 缓存文件操作 445 12.2.3 文件重命名 446 12.2.4 关闭文件 447 12.2.5 删除文件 447 12.3 写入文本文件 448 12.4 读取文本文件 449 12.5 在文本文件中读写字符串 452 12.6 格式化文件的输入输出 456 12.6.1 格式化文件输出 456 12.6.2 格式化文件输入 457 12.7 错误处理 459 12.8 再探文本文件操作模式 460 12.9 freopen_s()函数 461 12.10 二进制文件的输入输出 462 12.10.1 以二进制模式打开文件 462 12.10.2 写入二进制文件 463 12.10.3 读取二进制文件 464 12.11 在文件中移动 469 12.11.1 文件定位操作 469 12.11.2 找出我们在文件中的位置 470 12.11.3 在文件中设定位置 471 12.12 使用临时文件 477 12.12.1 创建临时文件 477 12.12.2 创建唯一的文件名 478 12.13 更新二进制文件 479 12.13.1 修改文件的内容 484 12.13.2 从键盘输入创建记录 485 12.13.3 将记录写入文件 486 12.13.4 从文件中读取记录 486 12.13.5 写入文件 487 12.13.6 列出文件内容 488 12.13.7 更新已有的文件内容 489 12.14 文件打开模式小结 495 12.15 设计程序 496 12.15.1 问题 496 12.15.2 分析 496 12.15.3 解决方案 496 12.16 小结 501 12.17 习题 501 第13章 支持功能 503 13.1 预处理 503 13.1.1 在程序中包含头文件 503 13.1.2 定义自己的头文件 504 13.1.3 管理多个源文件 504 13.1.4 外部变量 505 13.1.5 静态函数 505 13.1.6 替换程序源代码 506 13.2 宏 507 13.2.1 看起来像函数的宏 507 13.2.2 字符串作为宏参数 509 13.2.3 在宏展开式中结合两个变元 510 13.3 多行上的预处理器指令 510 13.3.1 预处理器逻辑指令 511 13.3.2 条件编译 511 13.3.3 测试多个条件 512 13.3.4 取消定义的标识符 512 13.3.5 测试标识符的指定值的指令 512 13.3.6 多项选择 513 13.3.7 标准预处理宏 514 13.4 调试方法 515 13.4.1 集成的调试器 515 13.4.2 调试阶段的预处理器 515 13.4.3 断言 519 13.5 日期和时间函数 521 13.5.1 获取时间值 522 13.5.2 获取日期 525 13.5.3 确定某一天是星期几 529 13.6 小结 531 13.7 习题 531 第14章 高级专用主题 533 14.1 使用国际字符集 533 14.1.1 理解Unicode 533 14.1.2 设置区域 534 14.1.3 宽字符类型wchar_t 535 14.1.4 宽字符串的操作 537 14.1.5 宽字符的文件流操作 540 14.1.6 存储Unicode字符的固定大小类型 541 14.2 用于可移植性的专用整数类型 545 14.2.1 固定宽度的整型 545 14.2.2 最小宽度的整型 545 14.2.3 最大宽度的整型 546 14.3 复数类型 546 14.3.1 复数基础 546 14.3.2 复数类型和操作 547 14.4 用线程编程 550 14.4.1 创建线程 550 14.4.2 退出线程 551 14.4.3 把一个线程连接到另一个线程上 552 14.4.4 挂起线程 555 14.4.5 管理线程对数据的访问 555 14.5 小结 561 附录A 计算机中的数学知识 563 附录B ASCII字符代码定义 571 附录C C语言中的保留字 575 附录D 输入输出格式说明符 577 附录E 标准库头文件 583
|
亚马逊链接