工程专业C程序设计:第2版(CX-4694)
基本信息
内容简介回到顶部↑
作译者回到顶部↑
目录回到顶部↑
第1章 计算机和软件概述 1
1.1 计算机组成 2
1.2 计算机软件 9
1.3 工程及科学计算 15
1.4 软件开发方法 15
1.5 软件开发方法的应用 18
本章回顾 20
第2章 c概述 23
2.1 c语言组成 23
2.2 变量声明与数据类型 28
2.3 可执行语句 31
2.4 c程序的一般形式 38
案例研究:求金属磁盘的面积和周长 40
2.5 程序的格式化输出 44
2.6 交互方式,批处理方式及数据文件 46
2.7 常见编程错误 50
本章回顾 55
第3章 数据类型、运算符与简单函数 60
3.1 数据类型的表示方式 60
3.2 算术表达式 63
1.1 计算机组成 2
1.2 计算机软件 9
1.3 工程及科学计算 15
1.4 软件开发方法 15
1.5 软件开发方法的应用 18
本章回顾 20
第2章 c概述 23
2.1 c语言组成 23
2.2 变量声明与数据类型 28
2.3 可执行语句 31
2.4 c程序的一般形式 38
案例研究:求金属磁盘的面积和周长 40
2.5 程序的格式化输出 44
2.6 交互方式,批处理方式及数据文件 46
2.7 常见编程错误 50
本章回顾 55
第3章 数据类型、运算符与简单函数 60
3.1 数据类型的表示方式 60
3.2 算术表达式 63
译者序回到顶部↑
本书将软件工程及程序设计的概念与C语言有机结合起来,讲授了解决工程问题的系统的方法。书中的例题均选自工程领域的实际问题,包括部分当前的热点问题。书中还介绍了工程中常用的基本数值和统计方法的程序设计。
本书可作为工程技术专业程序设计的初级教程,也可作为自学者和工程技术人员的参考书。学习本书前无需计算机或程序设计的预备知识。
参加本书翻译的人员有崔立新、朱惠娥、柴志刚、孙大鑫、邓林、张燕、张春华、艾振海和崔刚。曾春平负责审校。
由于译者经验和水平有限,错误之处在所难免,敬请读者批评指正。
本书可作为工程技术专业程序设计的初级教程,也可作为自学者和工程技术人员的参考书。学习本书前无需计算机或程序设计的预备知识。
参加本书翻译的人员有崔立新、朱惠娥、柴志刚、孙大鑫、邓林、张燕、张春华、艾振海和崔刚。曾春平负责审校。
由于译者经验和水平有限,错误之处在所难免,敬请读者批评指正。
前言回到顶部↑
本书讲授了解决问题的系统的方法,以及如何利用人们广泛认可的软件工程方法设计出内聚的、可读性好的、可重用的模块化程序解决方案。作为实现这些模块的载体,我们介绍了ANSIC——一种以功能强大、可移植性好著称的标准程序设计语言。书中的例题和工程程序设计都是从广泛的工程领域里的实际问题中选取的,其中部分问题是当前的热点问题,如移动通信网络的配置、空间探索、DNA结构图绘制,以及计算机网络等。本书可作为程序设计的初级教程,学习本书前无需计算机或程序设计的预备知识。书中还介绍了工程中常用的基本数值和统计方法的程序实现方法。
在编辑第二版时,我们修订了绪论一章并增加了第13章,后者可作为后续课程C牛牛学习的过渡章节。我们对循环一章(第5章)的第一部分进行了扩充,在深入学习循环的C编程前我们首先对循环的各个部分进行了概念性地讨论。在第7章中我们补充了关于堆——动态数组分配的内容。printf中使用的转义序列和格式定义符的内容在第10章中作了全面细致的说明。我们对附录B进行了补充,增加了关于ANSI标准库函数功能的介绍。此外,我们还增加了附录G,介绍堆——二维数组的动态分配。在本书的编辑中,为了强调某些重要的术语,我们将它们的定义置于页面左侧的空白处。
工程专业的c程序设计
讲授一门工程专业的初级程序设计教程是一项特殊的挑战,因为一个班里学生的计算机背景知识一般有着显著的差异。如果班里的学生不全是初学者,要想吸引那些已经学过一种程序设计语言的学生的注意力是很困难的。本书的第2~5章对基本控制结构做了全面的介绍,初学编程的学生通过认真阅读书中的例题、多做习题能够很快跟上那些有一定编程经验的学生,教师在讲授这部分内容时可以适当加快速度。从第6章至最后,工程编程的平均难度逐步增加。第6章介绍了对算术函数求根的程序。第7、8章的主要内容是关于部分数值和统计方法的数组实现,其中标准差的计算和函数绘图在第7章讲解,而对矢量和矩阵的操作及在C中用高斯消去法求解线性方程组的有关内容在第8章做了介绍。本书的第12章对求根方法做了深入探讨,并介绍了线性回归、相关分析、数值微分、数值积分以及一阶常微分方程的求解方法等内容。第13章为学生进一步学习C++提供了预备知识。
本书讲授了解决问题的系统的方法,以及如何利用人们广泛认可的软件工程方法设计出内聚的、可读性好的、可重用的模块化程序解决方案。作为实现这些模块的载体,我们介绍了ANSIC——一种以功能强大、可移植性好著称的标准程序设计语言。书中的例题和工程程序设计都是从广泛的工程领域里的实际问题中选取的,其中部分问题是当前的热点问题,如移动通信网络的配置、空间探索、DNA结构图绘制,以及计算机网络等。本书可作为程序设计的初级教程,学习本书前无需计算机或程序设计的预备知识。书中还介绍了工程中常用的基本数值和统计方法的程序实现方法。
在编辑第二版时,我们修订了绪论一章并增加了第13章,后者可作为后续课程C++学习的过渡章节。我们对循环一章(第5章)的第一部分进行了扩充,在深入学习循环的C编程前我们首先对循环的各个部分进行了概念性地讨论。在第7章中我们补充了关于堆——动态数组分配的内容。printf中使用的转义序列和格式定义符的内容在第10章中作了全面细致的说明。我们对附录B进行了补充,增加了关于ANSI标准库函数功能的介绍。此外,我们还增加了附录G,介绍堆——二维数组的动态分配。在本书的编辑中,为了强调某些重要的术语,我们将它们的定义置于页面左侧的空白处。
工程专业的c程序设计
讲授一门工程专业的初级程序设计教程是一项特殊的挑战,因为一个班里学生的计算机背景知识一般有着显著的差异。如果班里的学生不全是初学者,要想吸引那些已经学过一种程序设计语言的学生的注意力是很困难的。本书的第2~5章对基本控制结构做了全面的介绍,初学编程的学生通过认真阅读书中的例题、多做习题能够很快跟上那些有一定编程经验的学生,教师在讲授这部分内容时可以适当加快速度。从第6章至最后,工程编程的平均难度逐步增加。第6章介绍了对算术函数求根的程序。第7、8章的主要内容是关于部分数值和统计方法的数组实现,其中标准差的计算和函数绘图在第7章讲解,而对矢量和矩阵的操作及在C中用高斯消去法求解线性方程组的有关内容在第8章做了介绍。本书的第12章对求根方法做了深入探讨,并介绍了线性回归、相关分析、数值微分、数值积分以及一阶常微分方程的求解方法等内容。第13章为学生进一步学习C++提供了预备知识。
用c语言讲授程序开发方法
我们的两个目标:讲授程序设计和C语言,或许被有些人视为是互相矛盾的。一般的看法是,只有先通过学习一些更友好的语言以及基本的程序设计知识后才能掌握C语言。C语言复杂难学的观念可以追溯到C的起源。C语言是作为编写UNIX操作系统的工具开发的,早期使用C的程序员对复杂的操作系统和计算机底层结构比较了解,他们认为在程序中运用这些知识是理所当然的事。因此,以讲授C为主要目标的教科书所提供的程序示例通常都要求学生对计算机的底层知识有所了解就不足为奇了,而这些知识在标准的初级编程课程的教学大纲中是没有涵盖的。
在本书中,我们之所以能够以合理的方法讲授程序开发与ANSI C,是因为我们以第一个目标为主要目的。也许有人担心这样会冲淡ANSIC的内容,实际恰恰相反。我们发现,把程序设计的概念与这些概念在C中的实现融合在一起的表达方式可以让我们清楚地认识到ANSI C作为高级编程语言的强大功能,这一点在那些以详细介绍ANSIC为主要目的的教科书中一般是难以体现的。即便是遵循这种先进行程序设计、再学习C语言实现的方法,我们仍然相当全面地介绍了C的基本结构。实际上,本书所讲授的C的内容是经过精心选择的,其广度足以使学生通过本门程序设计课程的学习,充分掌握编写系统、规范的程序所需的背景知识。
指针及本书的布局
书中C语言的讲授顺序是视程序设计初学者的需要、而不是根据C语言结构安排的。读者可能会吃惊地发现书中没有“指针”一章。缺少这一章并非是我们对于指针在C中的重要作用缺乏了解,而是因为我们把C当作一门高级语言看待。
其他高级语言的输出参数和数组都有自己单独的语言成分,然而在C中这些概念却直接嵌入到指针的概念中,这就极大地增加了学习这门语言的难度。我们对这一学习过程进行了简化,当用其他语言讲授程序设计时会正常出现各种语言成分的地方,如果涉及到指针,我们就从各个不同的角度加以讨论,这就使得学生可以一点一滴地逐渐掌握指针复杂的用法。这种方法使得用传统的高级语言术语——输出参数、数组、数组下标、字符串——表述基本概念成为可能,而且对于没有汇编语言背景知识的学生来说更容易掌握指针在各个方面的应用。
因此本书不是仅用一章,而是用6章内容讲述了指针的各个方面。第2章简单介绍了文件指针,第6章讨论了指针作为简单的输出和输入/输出参数的用法,第7章涉及了一维数组和字符串以及动态堆数组,第8章讲述了多维数组,第9章介绍了记录结构输出参数,第10章详细讲述了文本文件指针。
软件工程设计
本书从多个方面对软件工程做了介绍,有些内容进行了专门的讨论,有些则仅通过例题予以介绍。早在第1章我们就讲述了一种5步软件开发方法,建立了正确的解决问题的方法与有效的程序开发二者之间的联系。这一方法的运用贯穿书中全部的案例分析部分。程序的印刷体例主要是以特殊的式样突出显示,例题中采用的程序代码风格是依据C软件业所遵循的分段原则。在部分章节中我们还讨论了算法的跟踪、程序的调试与测试等内容。
第3章介绍了程序从无参的空函数和所选择的C库函数的抽象。第6章学习了有简单参数的函数,包括有返回值的函数、空函数、输入参数、输出参数等。本版中所采用的源文件格式是将用户定义的函数原型放在main函数之前,把函数的定义放在main之后。
在第6章和第9章的案例分析中我们通过例题介绍了数据抽象的概念和数据类型与操作符的封装概念。第11章讲解了在C语言中关于个人库函数中由单独的头文件和实现文件定义的程序和数据的抽象的实现方法。第13章介绍了C++的面向对象的程序设计思想。
本书通篇强调了可见函数接口的使用。在第11章前,我们始终未提及可以使用全局变量,不过第11章对全局变量使用的优缺点进行了仔细地分析。
在编辑第二版时,我们修订了绪论一章并增加了第13章,后者可作为后续课程C牛牛学习的过渡章节。我们对循环一章(第5章)的第一部分进行了扩充,在深入学习循环的C编程前我们首先对循环的各个部分进行了概念性地讨论。在第7章中我们补充了关于堆——动态数组分配的内容。printf中使用的转义序列和格式定义符的内容在第10章中作了全面细致的说明。我们对附录B进行了补充,增加了关于ANSI标准库函数功能的介绍。此外,我们还增加了附录G,介绍堆——二维数组的动态分配。在本书的编辑中,为了强调某些重要的术语,我们将它们的定义置于页面左侧的空白处。
工程专业的c程序设计
讲授一门工程专业的初级程序设计教程是一项特殊的挑战,因为一个班里学生的计算机背景知识一般有着显著的差异。如果班里的学生不全是初学者,要想吸引那些已经学过一种程序设计语言的学生的注意力是很困难的。本书的第2~5章对基本控制结构做了全面的介绍,初学编程的学生通过认真阅读书中的例题、多做习题能够很快跟上那些有一定编程经验的学生,教师在讲授这部分内容时可以适当加快速度。从第6章至最后,工程编程的平均难度逐步增加。第6章介绍了对算术函数求根的程序。第7、8章的主要内容是关于部分数值和统计方法的数组实现,其中标准差的计算和函数绘图在第7章讲解,而对矢量和矩阵的操作及在C中用高斯消去法求解线性方程组的有关内容在第8章做了介绍。本书的第12章对求根方法做了深入探讨,并介绍了线性回归、相关分析、数值微分、数值积分以及一阶常微分方程的求解方法等内容。第13章为学生进一步学习C++提供了预备知识。
本书讲授了解决问题的系统的方法,以及如何利用人们广泛认可的软件工程方法设计出内聚的、可读性好的、可重用的模块化程序解决方案。作为实现这些模块的载体,我们介绍了ANSIC——一种以功能强大、可移植性好著称的标准程序设计语言。书中的例题和工程程序设计都是从广泛的工程领域里的实际问题中选取的,其中部分问题是当前的热点问题,如移动通信网络的配置、空间探索、DNA结构图绘制,以及计算机网络等。本书可作为程序设计的初级教程,学习本书前无需计算机或程序设计的预备知识。书中还介绍了工程中常用的基本数值和统计方法的程序实现方法。
在编辑第二版时,我们修订了绪论一章并增加了第13章,后者可作为后续课程C++学习的过渡章节。我们对循环一章(第5章)的第一部分进行了扩充,在深入学习循环的C编程前我们首先对循环的各个部分进行了概念性地讨论。在第7章中我们补充了关于堆——动态数组分配的内容。printf中使用的转义序列和格式定义符的内容在第10章中作了全面细致的说明。我们对附录B进行了补充,增加了关于ANSI标准库函数功能的介绍。此外,我们还增加了附录G,介绍堆——二维数组的动态分配。在本书的编辑中,为了强调某些重要的术语,我们将它们的定义置于页面左侧的空白处。
工程专业的c程序设计
讲授一门工程专业的初级程序设计教程是一项特殊的挑战,因为一个班里学生的计算机背景知识一般有着显著的差异。如果班里的学生不全是初学者,要想吸引那些已经学过一种程序设计语言的学生的注意力是很困难的。本书的第2~5章对基本控制结构做了全面的介绍,初学编程的学生通过认真阅读书中的例题、多做习题能够很快跟上那些有一定编程经验的学生,教师在讲授这部分内容时可以适当加快速度。从第6章至最后,工程编程的平均难度逐步增加。第6章介绍了对算术函数求根的程序。第7、8章的主要内容是关于部分数值和统计方法的数组实现,其中标准差的计算和函数绘图在第7章讲解,而对矢量和矩阵的操作及在C中用高斯消去法求解线性方程组的有关内容在第8章做了介绍。本书的第12章对求根方法做了深入探讨,并介绍了线性回归、相关分析、数值微分、数值积分以及一阶常微分方程的求解方法等内容。第13章为学生进一步学习C++提供了预备知识。
用c语言讲授程序开发方法
我们的两个目标:讲授程序设计和C语言,或许被有些人视为是互相矛盾的。一般的看法是,只有先通过学习一些更友好的语言以及基本的程序设计知识后才能掌握C语言。C语言复杂难学的观念可以追溯到C的起源。C语言是作为编写UNIX操作系统的工具开发的,早期使用C的程序员对复杂的操作系统和计算机底层结构比较了解,他们认为在程序中运用这些知识是理所当然的事。因此,以讲授C为主要目标的教科书所提供的程序示例通常都要求学生对计算机的底层知识有所了解就不足为奇了,而这些知识在标准的初级编程课程的教学大纲中是没有涵盖的。
在本书中,我们之所以能够以合理的方法讲授程序开发与ANSI C,是因为我们以第一个目标为主要目的。也许有人担心这样会冲淡ANSIC的内容,实际恰恰相反。我们发现,把程序设计的概念与这些概念在C中的实现融合在一起的表达方式可以让我们清楚地认识到ANSI C作为高级编程语言的强大功能,这一点在那些以详细介绍ANSIC为主要目的的教科书中一般是难以体现的。即便是遵循这种先进行程序设计、再学习C语言实现的方法,我们仍然相当全面地介绍了C的基本结构。实际上,本书所讲授的C的内容是经过精心选择的,其广度足以使学生通过本门程序设计课程的学习,充分掌握编写系统、规范的程序所需的背景知识。
指针及本书的布局
书中C语言的讲授顺序是视程序设计初学者的需要、而不是根据C语言结构安排的。读者可能会吃惊地发现书中没有“指针”一章。缺少这一章并非是我们对于指针在C中的重要作用缺乏了解,而是因为我们把C当作一门高级语言看待。
其他高级语言的输出参数和数组都有自己单独的语言成分,然而在C中这些概念却直接嵌入到指针的概念中,这就极大地增加了学习这门语言的难度。我们对这一学习过程进行了简化,当用其他语言讲授程序设计时会正常出现各种语言成分的地方,如果涉及到指针,我们就从各个不同的角度加以讨论,这就使得学生可以一点一滴地逐渐掌握指针复杂的用法。这种方法使得用传统的高级语言术语——输出参数、数组、数组下标、字符串——表述基本概念成为可能,而且对于没有汇编语言背景知识的学生来说更容易掌握指针在各个方面的应用。
因此本书不是仅用一章,而是用6章内容讲述了指针的各个方面。第2章简单介绍了文件指针,第6章讨论了指针作为简单的输出和输入/输出参数的用法,第7章涉及了一维数组和字符串以及动态堆数组,第8章讲述了多维数组,第9章介绍了记录结构输出参数,第10章详细讲述了文本文件指针。
软件工程设计
本书从多个方面对软件工程做了介绍,有些内容进行了专门的讨论,有些则仅通过例题予以介绍。早在第1章我们就讲述了一种5步软件开发方法,建立了正确的解决问题的方法与有效的程序开发二者之间的联系。这一方法的运用贯穿书中全部的案例分析部分。程序的印刷体例主要是以特殊的式样突出显示,例题中采用的程序代码风格是依据C软件业所遵循的分段原则。在部分章节中我们还讨论了算法的跟踪、程序的调试与测试等内容。
第3章介绍了程序从无参的空函数和所选择的C库函数的抽象。第6章学习了有简单参数的函数,包括有返回值的函数、空函数、输入参数、输出参数等。本版中所采用的源文件格式是将用户定义的函数原型放在main函数之前,把函数的定义放在main之后。
在第6章和第9章的案例分析中我们通过例题介绍了数据抽象的概念和数据类型与操作符的封装概念。第11章讲解了在C语言中关于个人库函数中由单独的头文件和实现文件定义的程序和数据的抽象的实现方法。第13章介绍了C++的面向对象的程序设计思想。
本书通篇强调了可见函数接口的使用。在第11章前,我们始终未提及可以使用全局变量,不过第11章对全局变量使用的优缺点进行了仔细地分析。








点击看大图




加载中...

