首页>参考读物>计算机科学与技术>软件与程序设计

C语言入门经典(原书第3版)
作者 : Ivor Horton
译者 : 张欣 等
出版日期 : 2007-05-08
ISBN : 7-111-21162-4
定价 : 55.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 440
开本 : 16开
原书名 : Beginning C,Third Edition
原出版社: Apress
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书是集综合性、实用性为一体的学习C语言的优秀入门教材,在世界范围内广受欢迎,口碑极佳。书中除了讲解C程序设计语言,还广泛介绍了作为一名C程序设计人员应该掌握的必要知识,并提供了大量的实用性很强的编程实例。读者基本不需要具备任何编程知识,即可通过本书从头开始编写自己的C程序。
  本书中所有源代码均可在www.apress.com下载,也可登录机工新阅读网站下载。

图书特色

图书前言

欢迎使用本书。有了本书,你就会成为称职的C语言程序员。从许多方面来说,C语言都是学习程序设计的理想语言。它很简洁,因此无须学习大量的语法,就能够开始编写真正的应用程序。除了简明易学外,它还是一种功能非常强大的语言,至今仍被专业人士广为使用。C语言的强大之处体现在,它能够进行各种层次的程序设计,从硬件驱动程序和操作系统组件到大规模的应用程序,无所不包。事实上,任何计算机都可以使用C语言编译器,因此,一旦学会了C语言,就可以在任何环境下进行程序设计。最后一点,掌握了C语言,就为理解面向对象的C++语言奠定了良好的基础。
  积极热情的程序员都必将面对三大障碍,即掌握适用于所有程序设计语言的术语,理解如何使用语言的元素(而不仅仅只知道它们是什么)以及领会如何在实际环境中应用程序设计语言,本书的目的就是将这些障碍降到最低。
  术语是在专业人士与优秀的业余人士之间进行交流时必不可少的,因此掌握这些术语是必需的。我的方法是让你理解这些术语,并习惯在各种背景下使用它们。这样你才能更有效地使用大多数程序设计产品附带的文档,而且能自如地阅读和学习大多数程序设计语言的相关文献。
  显然,理解语言元素的语法和作用是学习一门语言的关键,不过认识语言的特性如何发挥作用和如何应用它们,也同等的重要。在说明每种语言特性与特定问题的关系时,我通常采用实际应用的程序为例,而不只是代码片断。这些示例提供了实践的基础,你可以任意改动它们,研究改动后的效果。
  只是理解应用于独立语言元素上的机制还不足以让你理解在特定背景中的程序设计。为了帮助你理解这一点,本书每章都以一个较复杂的程序作结,该程序应用了前面示例中的知识。这些程序有助于获得开发程序的能力和信心,可了解如何综合运用各种语言元素,构成大型的程序。最重要的是,它们能让你了解设计真实程序时会遇到的问题以及如何管理真实的代码。
  学习任何程序设计语言,都要认识到三点。首先,尽管要学的东西很多,但是这意味着掌握它们之后,你会有极大的成就感。其次,学习的过程很有趣,你将会体会到这一点。最后,学习程序设计语言比你想像的容易得多,所以你肯定能掌握它。
  如何使用本书
  我认为动手实践是最好的方法,你将会立刻开始编写自己的第一个程序。每一章都有一些把理论应用于实践的程序,这些示例是本书的重点。建议读者输入并运行文中的示例,因为输入程序对记住语言元素有极大的帮助。此外,你还应该做每章后面的练习。当你第一次使一个程序运行起来,尤其是在试图解决自己的问题时,快速的进展会使你有很大的成就感。
  刚开始,我们的进展不会太快,不过随着逐渐深入,我们会加快学习的速度。每一章都有很多基础知识,因此你需要花些时间,在学习新的内容之前,确保理解了前面学过的所有知识。实验代码,尝试实现自己的想法,这是学习过程的一个重要部分。尝试修改程序,看看你还能让它们做什么,这才是最有趣的。不要害怕尝试,如果不明白某一点如何使用,多输入几种变体,看看会出现哪些情况。较好的学习方法是先通读整章,了解它涵盖的范围,然后再从头运行其中的所有示例。
  你可能会觉得某些章末尾的程序非常难。如果第一次读这样的程序没有完全理解,不必担心。第一次难免会觉得难以理解,因为它们通常都是把你所学的知识应用到了相当复杂的问题中。如果你真的不能理解,可以略过那些章末尾的程序,继续学习下一章,然后再回头研究这些程序,甚至不必担心它们,通读全书都可以。之所以有这些程序,因为即使读完了本书,它们对你来说仍是非常有用的资源。
  本书的适用对象
  本书的目的是教你如何尽可能简单快速地编写有用的程序,如果你属于下列情况之一,那么本书就是你的指南手册:
  ナ刚接触程序设计,不过想直接深入了解C语言,从头开始学习程序设计及编写C语言程序。
  ナ以前做过一些程序设计,因此对其基本概念有一定了解,也许曾经使用过BASIC或PASCAL。现在想学习C语言,进一步提高自己的程序设计技能。
  本书并未假设此前你对程序设计的知识有所了解,不过本书会很快地从基本概念深入到实战介绍。学完了本书,你就为自己的C语言程序设计奠定了全面的基础。
使用本书前的准备工作
  要使用本书,需要一台安装了C语言编译器和库的计算机,这样才能执行书中的示例,此外为创建源代码文件,还需要一个程序文本编辑器。市面上有多种C语言编译器可供选择,Internet上也有很多共享版本。最理想的是选择与当前美国国家标准协会(ANSI)为C语言制定的标准一致的编译器。当今大多数C++编译器都能编译C语言程序,所以可以根据自己的需要进行选择。
  可以采用任何纯文本编辑器创建源程序文件,如Notepad或Vi。不过,采用专为编辑C语言代码设计的编辑器更有帮助。不要使用Microsoft Word这样的字处理软件,它们通常会在文本中嵌入编译器不能理解的格式化代码。
  要最大限度地发挥本书的功效,你需要有学习的意愿,成功的渴望,当学习不顺利、觉得前途渺茫时,还要有坚持下去的决心。几乎每个人在初次学习程序设计时都会在某处觉得迷茫。当你发现自己艰难地掌握了C语言的某个方面时,要坚持下去,迷雾一定会消散,你会觉得为什么当初我会不明白这一点呢?也许你明白要做到这些将会很难,不过我相信你一定会惊讶自己能在较短的时间内取得很大进步。我会帮助你开始自己的实践之旅,使你成为成功的程序设计员。
  本书采用的规约
  本书的文本和布局采用了许多不同的样式,以便区分各种不同的信息。大多数样式表达的含义都很明显。程序代码如下:
  如果代码片段是从前面的实例修改而来的,修改过的代码行就用粗体显示,如下所示:
  如果代码出现在文本中,那么它将采用不同的文本样式,如:cout。
程序代码中还使用了各种“括号”。它们之间的差别非常重要,不能互换。我称( )为圆括号,{ }为花括号,[ ]为方括号。
  文本中的重要文字由黑体显示。
  本书的代码
  从Apress的站点http://www.apress.com可以下载本书中的所有代码。

封底文字

本书是集综合性、实用性为一体的学习C语言的优秀入门教材,在世界范围内广受欢迎,口碑极佳。书中除了讲解C程序设计语言,还广泛介绍了作为一名C程序设计人员应该掌握的必要知识,并提供了大量的实用性很强的编程实例。读者基本不需要具备任何编程知识,即可通过本书从头开始编写自己的C程序。
  本书中所有源代码均可在www.apress.com下载,也可登录华章网站下载。

作者简介

Ivor Horton:Ivor Horton:  Ivon Horton 早年投身数学领域,但大学毕业不久即受雇于某著名制造企业。多年来,他曾使用各种语言编写实用程序,同时,对科学工作者和工程师进行编程培训。他在各种行业的工程设计中使用计算机解决问题有非常丰富的经验,撰写了多部C、C++和Java编程著作。

译者简介

张欣 等:暂无简介

译者序

有关C语言编程的书籍国内已有许多(包括国外教材的中译本),且侧重点各不相同。C语言入门并不难,但是,正如许多人认为的那样,掌握程序设计语言的最困难之处是用其灵活高效地开发实际软件系统,这需要大量的实践和学习,而C语言因其丰富的功能和复杂的特点更是如此。
  Ivor Horton先生一直致力于研究C、C++、Java等一系列计算机编程语言,并著有多本畅销教材。作者以切身经验为基础,在本书中详谈了如何学好C语言编程。通过学习本书,程序员可以解决好以下几个问题:掌握遍布C程序设计语言与环境中的相关术语;弄清C语言元素的用法而不仅仅是了解它们;熟悉如何在实际的应用场合合理地使用C语言。本书中目标是,让初学者深入了解复合的和规模较大的程序例子是如何工作的,而不仅仅介绍只有几行代码的小程序。因此作者经常会在跨越几章节的范围内,构造实用的程序例子。通过这种强度的训练,初学者可以掌握管理代码的方式以及如何综合运用编程语言的特性等内容。最后,作者告诫读者,通过钻研一本编程语言的书籍去掌握该程序设计语言的过程是相当艰难和曲折的。因此,初学者必须在充满信心的同时,练习编写程序,以享受编程所带来的乐趣。
本书从C语言的基本概念出发,深入浅出地讲述了程序设计及开发的思想与方法,对每一部分的知识点、概念、难点,都力求以较为细腻的方式和浅显易懂的实例进行讲解。同时,对每一个知识点都配备了相应的趣味实例,最终指引读者全面掌握C语言编程思路与开发技巧。
  本书由张欣组织翻译,参与本书翻译的还有白佳、卞雨桂、陈洁、成洁、杜鲲、黄璜、李才应、刘天成、刘吟、明卫军、潘秀燕、钱金蕾、王华红。
由于译者水平有限,纰漏在所难免,恳请读者批评指正。

图书目录

目  录
译者序
前言
第1章 C语言程序设计 1
1.1 创建C语言程序 1
1.1.1 编辑 1
1.1.2 编译 2
1.1.3 连接 2
1.1.4 执行 3
1.2 创建第一个程序 3
1.3 编辑第一个程序 4
1.4 处理错误 5
1.5 剖析一个简单程序 6
1.5.1 注释 6
1.5.2 预处理指示 7
1.5.3 定义main( )函数 7
1.5.4 关键字 8
1.5.5 函数的主体 8
1.5.6 输出信息 9
1.5.7 参数 9
1.5.8 控制字符 9
1.6 用C语言开发程序 11
1.6.1 理解问题 11
1.6.2 详细设计 11
1.6.3 实现 12
1.6.4 测试 12
1.7 函数和模块化编程 12
1.8 常见错误 15
1.9 要记住的重点 16
小结 16
练习 17
第2章 初步程序设计 18
2.1 计算机中的内存 18
2.2 什么是变量 20
2.3 存储数字的变量 20
2.3.1 整型变量 20
2.3.2 命名变量 23
2.3.3 使用变量 24
2.3.4 算术语句 27
2.4 变量和内存 32
2.4.1 整型变量 32
2.4.2 浮点值 34
2.4.3 浮点变量 34
2.4.4 浮点值的除法运算 35
2.4.5 更复杂的表达式 37
2.4.6 定义常量 39
2.4.7 选择正确的类型 41
2.5 算术表达式中的强制类型转换 44
2.5.1 自动强制转换 44
2.5.2 强制转换的规则 45
2.5.3 赋值语句中的强制类型转换 45
2.6 关于数字数据类型的更多说明 45
2.6.1 字符类型 45
2.6.2 无符号整数:使用正整数 49
2.7 op=的赋值形式 52
2.8 数学函数 53
2.9 设计一个程序 54
小结 60
练习 62
第3章 决策 63
3.1 决策处理 63
3.1.1 算术比较运算 63
3.1.2 逻辑表达式 64
3.1.3 基本if语句 64
3.1.4 扩展的if语句:if-else 67
3.1.5 在if语句中使用代码块 69
3.1.6 嵌套的if语句 70
3.1.7 其他的比较运算符 72
3.1.8 逻辑运算 75
3.1.9 条件运算符 77
3.1.10 运算符优先级 79
3.2 多选项问题 82
3.2.1 用else-if语句实现多选项 83
3.2.2 switch语句 83
3.2.3 goto语句 90
3.3 位运算符 91
3.3.1 位运算符的op=用法 94
3.3.2 使用位运算符 94
3.4 设计一个程序 97
小结 100
练习 100
第4章 循环 102
4.1 概述 102
4.2 for循环 103
4.3 关于增量运算符和减量运算符的
更多说明 107
4.3.1 增量运算符 107
4.3.2 增量运算符的前缀和后缀形式 108
4.3.3 减量运算符 108
4.4 再论for循环 109
4.4.1 修改for循环的变量 111
4.4.2 没有参数的for循环 111
4.4.3 用for循环限制输入 114
4.4.4 生成伪随机整数 116
4.4.5 循环控制的更多选择 118
4.5 while循环 119
4.6 嵌套循环 122
4.7 do-while循环 126
4.8 continue语句 129
4.9 设计一个程序 129
小结 141
练习 141
第5章 数组 143
5.1 数组简介 143
5.2 什么是数组 145
5.3 内存知识的回顾 149
5.4 初始化数组 152
5.5 得到数组的大小 153
5.6 多维数组 154
5.7 设计一个程序 160
小结 168
练习 168
第6章 字符串和文本的应用 169
6.1 什么是字符串 169
6.2 字符串和文本处理方法 170
6.3 字符串运算 173
6.3.1 附加一个字符串 173
6.3.2 字符串数组 175
6.4 字符串库函数 177
6.4.1 用库函数复制字符串 177
6.4.2 用库函数判断字符串的长度 177
6.4.3 用库函数连接字符串 178
6.4.4 比较字符串 179
6.4.5 检索字符串 182
6.5 字符串分析和变形 185
6.6 设计一个程序 189
小结 195
练习 195
第7章 指针 196
7.1 初探指针 196
7.1.1 声明指针 197
7.1.2 通过指针访问一个值 197
7.1.3 指针的用法 200
7.1.4 再论运算符优先级 202
7.1.5 命名指针 204
7.2 数组和指针 204
7.3 多维数组 208
7.3.1 多维数组和指针 211
7.3.2 访问数组元素 212
7.4 使用内存 214
7.5 用指针处理字符串 219
7.6 指针数组 223
7.7 设计一个程序 231
小结 241
练习 241
第8章 程序结构化 242
8.1 程序结构 242
8.2 函数 246
8.2.1 定义函数 246
8.2.2 return语句 249
8.2.3 函数声明 253
8.3 指针和函数 254
8.3.1 从函数返回指针值 264
8.3.2 在函数中对指针进行增量运算 267
小结 268
练习 268
第9章 再论函数 270
9.1 函数指针 270
9.1.1 声明一个函数指针 270
9.1.2 函数指针数组 273
9.1.3 函数指针实参 275
9.2 函数中的变量 278
9.2.1 静态变量:在函数内部进行记录 278
9.2.2 在函数间共享变量 280
9.3 调用自己的函数:递归 282
9.4 参数个数可变的函数 284
9.5 main()函数 287
9.6 函数库:头文件 289
9.7 设计一个程序 290
小结 307
练习 308
第10章 基本的输入和输出操作 309
10.1 输入和输出流 309
10.2 键盘输入 311
10.2.1 格式化的键盘输入 311
10.2.2 输入格式控制字符串 311
10.2.3 输入格式字符串中的字符 315
10.2.4 浮点输入的变体 316
10.2.5 读十六进制和八进制值 317
10.2.6 用scanf()读入字符 318
10.2.7 使用scanf()的常见错误 320
10.2.8 从键盘输入的字符串 320
10.2.9 键盘的无格式输入 321
10.3 屏幕输出 321
10.3.1 用printf()函数进行屏幕的
格式化输出 322
10.3.2 不同的输出 324
10.3.3 输出浮点值 326
10.4 字符输出 327
10.4.1 输出字符串 327
10.4.2 无格式的屏幕输出 327
10.5 输出到打印机 328
小结 328
练习 329
第11章 结构化数据 330
11.1 数据结构:struct的用法 330
11.1.1 定义结构类型和结构变量 331
11.1.2 访问结构成员 332
11.1.3 无名结构 334
11.1.4 结构数组 334
11.1.5 表达式中的结构 337
11.1.6 指向结构的指针 337
11.1.7 结构的动态内存分配 338
11.2 再论成员变量 340
11.2.1 作为结构成员的结构 340
11.2.2 在结构中声明结构 341
11.2.3 作为结构成员的指向结构的指针 342
11.2.4 双链表 346
11.2.5 结构中的位域 348
11.3 结构和函数 349
11.3.1 以结构作为函数实参 349
11.3.2 以指向结构的指针作为函数实参 350
11.3.3 以结构作为函数的返回值 351
11.3.4 修改程序的练习 354
11.4 共享内存 357
11.5 定义数据类型 360
11.5.1 结构和typedef工具 360
11.5.2 用typedef简化代码 361
11.6 设计一个程序 362
小结 372
练习 372
第12章 管理大量数据 373
12.1 文件的概念 373
12.2 处理文件 374
12.2.1 打开文件 374
12.2.2 写文件 377
12.2.3 读文件 377
12.2.4 关闭文件 378
12.2.5 把字符串写入文件 381
12.2.6 从文件中读字符串 381
12.3 格式化文件输入和输出 384
12.3.1 格式化到文件的输出 384
12.3.2 格式化来自文件的输入 384
12.3.3 错误处理 386
12.3.4 更多文件操作模式 387
12.4 无格式的文件输入/输出 388
12.4.1 说明二进制模式 389
12.4.2 写二进制文件 389
12.4.3 读二进制文件 389
12.5 在文件中移动 396
12.5.1 文件定位操作 397
12.5.2 确定当前在哪里 397
12.5.3 设置文件中的位置 397
12.6 使用临时工作文件 402
12.6.1 创建一个临时文件 403
12.6.2 创建唯一的文件名 403
12.7 设计一个程序 404
小结 408
练习 409
第13章 支持工具 410
13.1 预处理 410
13.1.1 在程序中加入头文件 410
13.1.2 外部变量和函数 411
13.1.3 程序代码的替换 411
13.1.4 宏替换 412
13.1.5 看似函数的宏 413
13.1.6 多行预处理器指示 414
13.1.7 作为宏参数的字符串 414
13.1.8 连接宏扩展的两种结果 415
13.2 逻辑预处理指示 415
13.2.1 条件编译 416
13.2.2 测试特定值的指示 417
13.2.3 多选项选择 417
13.2.4 标准预处理宏 418
13.3 调试方法 418
13.3.1 综合的调试器 418
13.3.2 调试中的预处理器指示 419
13.3.3 使用assert()宏 422
13.4 其他库函数 424
13.4.1 日期和时间函数库 424
13.4.2 获取日期 426
小结 429
练习 430
附录A 计算机中的数学知识 431
附录B ASCII字符代码定义 438
附录C C语言中的保留字 440

教学资源推荐
作者: (美)Daniel M. Bikel, Imed Zitouni 编
作者: [美]加里·R. 赖特(Gary R. Wright),W. 理查德·史蒂文斯(W. Richard Stevens) 著
参考读物推荐
作者: 胡桓铭 编著
作者: [美]米兰·斯特瓦诺维奇(Milan Stevanovic) 著
作者: David Berube
作者: Pete Becker