编辑推荐

C语言程序设计(第3版)》重点放在解决“程序设计”的核心问题上,将C语言的有关语法有机结合到程序设计中,避免了生硬枯燥的语法叙述,真正体现了“程序设计”。《C语言程序设计(第3版)》明显地体现出作者多年来在程序设计课程上的教学积累,在写作上努力追求面向初学者进行“讲授”的风格,行文流畅,案例趣味性强,语言带有人文气息,贴近读者,深入浅出,通俗易懂,逻辑性强,形成了该书独特的风格。《C语言程序设计(第3版)》还配套建设了丰富的教学资源,例如《C语言程序设计学习指导》、程序源代码、多媒体课件、编程题考试自动评分系统、学习自测软件,并开始了中国大学MOOC同步免费视频课程。具体配套的教学资源包括:
(1)面向读者的教材网站:http://book.sunner.cn;
(2)配合《C语言程序设计(第3版)》的中国大学MOOC课程网址:http://www.icourse163.org/course/hit-69005#/info(希望加入本课程SPOC的教师可与作者本人联系);
(3)基于Mood1e的交互式网络教学平台(乐学网):https://cms.hit.edu.cn;
(4)面向学生竞赛的ACM程序设计竞赛网站:http://acm.hit.edu.cn/;
(5)基于CIS结构的C语言编程题考试自动评分系统(答署软件使用协议后可免费获取);
(6)基于BIS结构的C语言编程题考试自动评分系统;
(7)C语言试卷与题库管理系统(提供教材使用证明的教学单位可申请免费使用该系统的试用版);
(8)面向学生自主学习的C语言在线作业和能力测试系统,使用《C语言程序设计》(第3版)封四的刮刮卡可获得有效期一年的注册用户名,支持读者在线完成《C语言程序设计(第3版)》习题并获得系统自动评测结果,该系统从题库系统中随机抽题供读者练习;
(9)Code::B1ocks+gcc+gdb安装程序下载地址:http//www.codeb1ocks.org/down1oads/26;
(10)教材的多媒体课件以及上述系统的简介和使用演示视频(扫描《C语言程序设计》(第3版)的二维码查看)。

内容简介

  《C语言程序设计(第3版)》是一本兼具趣味性和实用性的C程序设计教材。《C语言程序设计(第3版)》由13章组成,内容包括:为什么要学C语言,C数据类型、简单的算术运算符和表达式,键盘输入和屏幕输出,选择控制结构,循环控制结构,函数,数组,指针,字符串,指针和数组,结构体与共用体,文件操作。
  《C语言程序设计(第3版)》以应用为背景,面向编程实践和问题求解能力的训练,从实际问题出发,在案例的不断深化中逐步引出知识点,形成“程序设计方法由自底向上到自顶向下”和“数据结构由简单到复杂”的两条逻辑清晰的主线。案例内容紧密结合实践,举一反三,融会贯通,尤其侧重错误案例的分析和讲解,在任务驱动下,由浅入深、启发引导读者循序渐进地编写规模逐渐加大的程序,让读者在不知不觉中逐步加深对C语言程序设计方法的了解和掌握。《C语言程序设计(第3版)》配有多媒体课件、例题和习题源代码以及基于C/S结构的编程题考试自动评分系统等教学资源,免费向任课教师提供。
  《C语言程序设计(第3版)》适合作为高等学校各专业的C语言程序设计课程教材,也可作为从事计算机相关工作的科技人员、计算机爱好者及各类自学人员参考。

作者简介

  苏小红,女,博士,教授,博士生导师,中国计算机学会高级会员,哈尔滨工业大学计算机科学与技术国家实验教学示范中心副主任,计算机语言基础教研室主任,校级教学名师,校教学带头人,国家精品课程和国家精品资源共享课程“C语言程序设计”以及省级精品课程“计算机图形学”负责人,中国大学MOOC课程“C语言程序设计精髓”和“程序设计基础”负责人。
  研究方向为:程序分析技术及其应用,智能信息处理与信息融合,图像处理与模式识别。完成国家自然科学基金、国防基础科研、国家863、国际合作等多项科研项目,获黑龙江省科技进步二等奖1项,黑龙江省自然科学二等奖1项,哈尔滨市自然科学技术学术成果一等奖1项。发表学术研究论文100余篇,获软件著作权登记8项。在教学研究方面,获国家教学成果二等奖1项,黑龙江省教学成果一等奖2项、二等奖2项,校级教学成果一等奖4项。主编教材9部,翻译外版教材2部,与国外大学教师合著教材2部,主审教材2部。2007年获宝钢优秀教师奖。2012年被评为黑龙江省师德先进个人。2014年被评为黑龙江省优秀教师。

目录

第1章为什么要学C语言
1.1引言
1.2游戏、黑客和C语言
1.3c语言,不老的传说
1.4c语言的爱与恨
1.5c语言教给我们的事
1.6什么是“编程”
1.7本章小结
习题1

第2章C数据类型
2.1常量与变量
2.1.1常量
2.1.2变量
2.2简单的屏幕输出
2.3数据类型
2.4如何计算变量或数据类型
所占内存空间的大小
2.5变量的赋值和赋值运算符
2.6本章扩充内容
2.7本章知识点小结
2.8本章常见错误小结
习题2
本章实验题

第3章简单的算术运算和表达式
3.1c运算符和表达式
3.1.1算术运算符和表达式
3.1.2复合的赋值运算符
3.1.3增1和减l运算符
3.2宏常量与宏替换
3.3const常量
3.4自动类型转换与强制类型转换运算符.
3.5常用的标准数学函数
3.6本章知识点小结
3.7本章常见错误小结
习题3
本章实验题

第4章键盘输入和屏幕输出
4.1单个字符的输入/输出
4.1.1字符常量
4.1.2字符的输入/输出
4.2数据的格式化屏幕输出
4.3数据的格式化键盘输入
4.4本章扩充内容
4.5本章知识点小结
4.6本章常见错误小结
习题4
本章实验题

第5章选择控制结构
5.1生活中与计算机中的问题求解方法
5.2算法的概念及其描述方法
5.2.1算法的概念
5.2.2算法的描述方法
5.3关系运算符与关系表达式
5.4用于单分支控制的条件语句
5.5用于双分支控制的条件语句
5.6条件运算符和条件表达式
5.7用于多分支控制的条件语句
5.8用于多路选择的switch语句
5.9逻辑运算符和逻辑表达式
5.10本章扩充内容
5.10.1程序测试
5.10.2对输入非法字符的检查与处理
5.10.3位运算符
5.11本章知识点小结
5.12本章常见错误小结
习题5
本章实验题

第6章循环控制结构
6.1循环控制结构与循环语句
6.2计数控制的循环
6.3嵌套循环
6.4条件控制的循环
6.5流程的转移控制
6.5.1goto语句
6.5.2break语句
6.5.3continue语句
6.5.4穷举法编程实例
6.6本章扩充内容
6.6.1结构化程序设计的核心思想
6.6.2常用的程序调试与排错方法
6.6.3类型溢出
6.7本章知识点小结
6.8本章常见错误小结
习题6
本章实验题

第7章函数
7.1分而治之与信息隐藏
7.2函数的定义
7.2.1函数的分类
7.2.2函数的定义
7.3向函数传递值和从函数返回值
7.3.1函数调用
7.3.2函数原型
7.3.3函数封装与防御性程序设计
7.3.4函数设计的基本原则
7.4函数的递归调用和递归函数
7.5变量的作用域和存储类型
7.5.1变量的作用域
7.5.2变量的存储类型
7.6模块化程序设计
7.6.1模块分解的基本原则
7.6.2自顸向下、逐步求精
7.6.3模块化程序设计实例
7.7本章扩充内容
7.8本章知识点小结
7.9本章常见错误小结
习题7
本章实验题

第8章数组
8.1一维数组的定义和初始化
8.2二维数组的定义和初始化
8.3向函数传递一维数组
8.4排序和查找
8.5向函数传递二维数组
8.6本章知识点小结
8.7本章常见错误小结
习题8
本章实验题

第9章指针
9.1变量的内存地址
9.2指针变量的定义和初始化
9.3间接寻址运算符
9.4按值调用与模拟按引用调用
9.5用指针变量作函数参数的程序实例
9.6函数指针及其应用
9.7本章知识点小结
9.8本章常见错误小结
习题9
本章实验题

第10章字符串
10.1字符串常量
10.2字符串的存储
10.3字符指针
10.4字符串的访问和输入/输出
10.4.1如何访问字符串中的单个字符
10.4.2字符串的输入/输出
10.5字符串处理函数
10.6向函数传递字符串
10.7从函数返回字符串指针
10.8本章扩充内容
10.9本章知识点小结
10.10本章常见错误小结
习题10
本章实验题

第11章指针和数组
11.1指针和一维数组间的关系
11.2指针和二维数组间的关系
11.3指针数组及其应用
11.3.1指针数组用于表示多个字符串
11.3.2指针数组用于表示命令行参数
11.4动态数组
11.4.1C程序的内存映像
11.4.2动态内存分配函数
11.4.3长度可变的一维动态数组
11.4.4长度可变的二维动态数组
11.5本章扩充内容
11.5.1常见的内存错误及其对策
11.5.2缓冲区溢出攻击
11.6本章知识点小结
11.7本章常见错误小结
习题11
本章实验题

第12章结构体和共用体
12.1从基本数据类型到抽象数据类型
12.2结构体的定义
12.2.1为什么要定义结构体类型
12.2.2结构体变量的定义
12.2.3用typedef定义数据类型
12.2.4结构体变量的初始化
12.2.5嵌套的结构体
12.2.6结构体变量的引用
12.2.7结构体所占内存的字节数
12.3结构体数组的定义和初始化
12.3.1结构体数组的定义
12.3.2结构体数组的初始化
12.4结构体指针的定义和初始化
12.4.1指向结构体变量的指针
12.4.2指向结构体数组的指针
12.5向函数传递结构体
12.6共用体
12.7枚举数据类型
12.8动态数据结构——单向链表
12.8.1问题的提出
12.8.2链表的定义
12.8.3单向链表的建立
12.8.4单向链表的删除操作
12.8.5单向链表的插入操作
12.9本章知识点小结
12.10本章常见错误小结
习题12
本章实验题

第13章文件操作
13.1二进制文件和文本文件
13.2文件的打开和关闭
13.3按字符读写文件
13.4按格式读写文件
13.5按数据块读写文件
13.6本章扩充内容
13.6.1文件的随机读写
13.6.2标准输入/输出重定向
13.7本章知识点小结
13.8本章常见错误小结
习题13
本章实验题

附录AC关键字
附录BVisualC++下基本数据类型的取值范围
附录CC运算符的优先级与结合性
附录D常用字符与ASCII值对照表
附录E常用的ANSIC标准库函数
参考文献

精彩书摘

  《C语言程序设计(第3版)》:
  综上所述,无论一个C语言文件的内容是什么,它一律把数据看成是由字节构成的序列,即字节流。对文件的存取也是以字节为单位的,输入/输出的数据流仅受程序控制而不受物理符号(如回车换行符)的控制。所以,C语言文件又称为流式文件。
  一般来说,数据必须按存入的类型读出才能恢复其本来面貌。例如对图13-2中的文本文件来说,若按字符型以外的其他类型来读,则读出来的数据可能面目全非。所以文件的写入和读出必须匹配,两者约定为同一种文件格式,并规定好文件的每个字节是什么类型和什么数据。
  很多种文件都有公开的标准格式(如bmp、jpg和mp3等),并且通常还规定了相应的文件头的格式,要想正确读出文件中的数据,必须先了解文件头的格式和内容,只有正确读出文件头的内容才能正确读出文件头后面存储的数据的内容。很多应用软件也都支持这些类型的文件的读和写。当然也有不公开、甚至加密的文件格式。例如,MicrosoftWord的doc格式就不公开,所以至今还没有Word以外的其他软件能完美地读出doc格式的文件。
  ……

前言/序言

  我们所使用的工具深刻地影响着我们的思维方式和思维习惯,进而也将深刻地影响着我们的思维能力。
  ——EdsgerW.Dijkstra
  学习程序设计本身是一件既充满挑战、更充满乐趣的事情。然而,它常常会给人以枯燥乏味的感觉,是因为没有人帮助发掘出其中的趣味。《C语言程序设计(第3版)》力图用最简明的语言、最典型的实例以及最通俗的类比和解释将这种趣味性挖掘出来,带给读者全新的学习体验,和读者一起欣赏C语言之美,领悟C语言之妙,体会学习C语言之无穷乐趣。
  《C语言程序设计(第3版)》以应用为背景,面向编程实践和问题求解能力训练,,从实际问题出发,在一个实际案例的不断深化中逐步引出相关知识点,借助任务驱动的实例将相关知识点像珠链一样串联起来,形成“程序设计方法由自底向上到自顶向下”和“数据结构由简单到复杂”的两条逻辑清晰的主线。案例内容紧密结合实践,举一反三,融会贯通。在任务驱动下,由浅入深、启发引导读者循序渐进地编写规模逐渐加大的程序,让读者在不知不觉中逐步加深对C语言程序设计方法的了解和掌握。
  在内容的指导思想上,《C语言程序设计(第3版)》以C语言为工具,介绍计算思维方法和程序设计的基本方法.不拘泥于C语言的基本语法知识,面向实际应用,把计算思维方法和程序设计中最基本、最新、最有价值的思想和方法渗透到C语言的介绍中。目的是使读者在学习了C语言以后,无论使用什么语言编程,都具有灵活应用这些思想和方法的能力。
  《C语言程序设计(第3版)》共分13章,内容包括:为什么要学C语言,C数据类型,简单的算术运算和表达式,键盘输入和屏幕输出,选择控制结构,循环控制结构,函数,数组,指针,字符串,指针和数组,结构体和共用体,文件操作。
  在内容编排上,《C语言程序设计(第3版)》内容注重教材的易用性。每章开头都有内容导读,指导读者阅读,每章结尾以表格的形式给出本章知识点小结和常见错误小结,帮助读者整理思路。《C语言程序设计(第3版)》既适合于程序设计的初学者,也适合于想更深入了解C语言的人。书中设计了很多思考题,并在每章的扩充内容中增加了一些有一定深度和开放性的内容,供希望深入学习程序设计的读者选学和参考,力求做到内容有宽度、有深度、有高度。
  在内容写作上,《C语言程序设计(第3版)》力图避免以往教材编写中常常出现的通病和问题,如“实例不实,为解释语法而设计”、“语法堆砌,只见树木不见森林”、“忽视错误程序的分析和讲解”等。因此编写的主要特色是注重错误程序的讲解和分析以及与软件工程内容的联系。在分析常见错误案例的过程中,讲解程序设计的基本方法、程序测试方法以及程序调试和排错方法,帮助读者了解错误发生的原因、实质、排错方法及解决对策。
  《C语言程序设计(第3版)》程序采用统一的代码规范编写,并且在编码中注重程序的健壮性。《C语言程序设计(第3版)》例题、习题和实验题的内容选取兼具趣味性和实用性,习题以巩固基本知识点和强化程序设计方法为目的,难度分成多个阶梯,包括:改写例题的编程题,模仿例题的编程题,趣味游戏类编程题。题型包括:侧重程序阅读理解能力训练的写出程序运行结果题和程序填空题,侧重程序调试和排错能力训练的分析改错题,侧重编程实践能力训练的任务递进式编程题等。实验题从“巩固基础、综合设计、创新应用”三个层次进行设计,从第8章到第13章的实验题全部围绕一个综合应用实例来逐步展开和深入,以循序渐进的任务驱动方式,引导读者逐步编写出有一定规模的、贯穿《C语言程序设计(第3版)》的综合应用程序,即菜单驱动的学生成绩管理系统,该内容可作为课程设计的参考内容。

其他推荐