本书内容包括程序设计语言和程序设计的基本概念, C语言的词法语法, 三种基本控制结构, 函数的定于和调用, 数组、结构体、指针等复杂数据类型的定义和应用, 文件操作等。
(1) 配套75个短视频,详细讲解C语言的关键知识点;
(2) 提供教学课件、在线单元测试、答案解析、综合练习、在线答疑;
(3) 可到中国大学MOOC上获取上述教学资源(网址见书中“前言”说明)。
(4) 本书以介绍C语言的语法为线索,采用案例教学方法,将程序设计的一般方法和技巧贯穿在实例分析中;
(5) 构建了完善的教学解决方案,提供在线视频课程、课件、作业、测试、答案解析;
(6) 视频课程教学方法灵活,讲解精练易懂,培养学生自主学习的能力;
(7) 可以在移动端登录视频课程,便于随时随地学习。
“C语言程序设计”是高校非计算机专业学生的编程入门课程,厦门大学公共计算机教学部已开设该门课程超过20年。通过长期的计算机基础教学实践与研究,老师们都积累了丰富的经验,并先后修订了3次教材,前3版都是基于ANSI C的标准编写的。随着C标准与时俱进地更新,目前的C99标准与ANSI C标准已有较多差异,有些与本书涉及的内容相关。因此促使编者对本书再次进行改版,并配套丰富的教辅资料,具体工作内容如下:
1. 修订内容
第4版对各章节内容进行了修改与补充,包括以下5个方面:
(1) 对C标准更改的地方进行了更新。
(2) 增加了对DevC++的介绍,开发环境可以有更多选择。
(3) 为第1~4、6章增设了问答题,这些章节语法知识点较多,记清有一定的难度。问答题多以选项的形式给出,是对主要知识点的归纳。通过问答,厘清与编程相关的主要或易错知识点。
(4) 从易于理解的角度出发,对部分教材内容进行了补充与修改。
(5) 选择题、编程题也做了一定程度的扩充,使习题更有针对性,更有梯度。
在对教材进行改版的过程中,同时保留了第3版的特色,注重案例教学,将编程方法与技巧融入各案例分析中。C语言是一门实践性很强的课程,学好C语言的最佳途径就是编程,多写多练。
2. 配套丰富的教辅资源
为推动信息技术与C语言教学的深度融合,进一步提高教学质量,收获更好的教学效果,厦门大学公共计算机教学部启动在线开放课程的建设,并于2016年10月15日在中国大学MOOC开课,课程链接为/course/XMU1001771003,其中有大量的教辅资源。
教辅资源内容包括以下4类:
1) 75个教学短视频
MOOC课程与传统上课不同,学生是课程学习的主人,教师是学生学习的引导者和辅助者,从“教”为中心改为以“学”为中心。为激发学生的学习积极性,我们对教学内容进行合理规划,把知识点碎片化为一个个不超过10分钟的视频,精心组织每个视频的内容,充分使用现代技术将知识点以易于吸收的形式展示。
视频完全免费观看。每轮开课分13周在线发布,与课堂教学同步。学生可以自选时间观看,每轮课程结束后仍然一直开放,参与者可以随时观看。
2) PDF讲稿
可以免费自由下载。讲稿简洁清晰,以另一种方式阐述教学内容,便于复习与归纳。
3) 在线单元测试与作业
每周知识配有单元测试题,系统自动评分。答题结束后,可以看到每道题的解析。单元测试题以巩固知识点为目的,同时通过自主做题掌握重点、难点,学习编程技巧。作业题是编程题,侧重于应用,也是书后习题的有益补充。
4) 讨论、答疑
重要章节设计有课堂讨论题,是对所学知识的扩充与引导。积极参与课堂讨论,有助于语法的深入理解及学以致用。对于学习过程中的任何问题,也可以在讨论区中提出,同学和老师都可以参与解答,在互助的环境中学习。
到2017年6月10日截止,已完成两轮开课,视频、单元测试等各类资源已较成熟。在此,要诚挚地感谢庄朝晖、曾华琳老师的参与,使得内容更为丰富完整。
还要特别地感谢黄保和老师,他一直支持MOOC建设,并为《C语言程序设计(第4版)》的编写无私地提供材料与建议。最后还要感谢厦门大学公共教学部的各位老师,他们为教材的改进一如既往地提供帮助与支持。
《C语言程序设计(第4版)》由黄洪艺策划和统稿。黄洪艺编写第1、2、3、11章,李慧琪编写第4、5、10章,张丽丽编写第6、7、8、9章。
“C语言程序设计”课程是厦门大学重点建设的慕课课程,本课程可到“中国大学MOOC”观看学习。每年春、秋两季开课,开课期间,在“中国大学MOOC”首页搜索“C程序设计基础”,即可看到课程并进入学习。也可通过上页介绍的课程链接进入课程。
在使用本书过程中,如有宝贵意见和建议,恳请与黄洪艺联系。
编者2017年8月
第1章绪论
1.1程序设计语言
1.2程序设计
1.2.1程序设计概念
1.2.2算法
1.2.3程序设计的步骤
1.3C语言发展和C++简介
1.3.1C语言发展简述
1.3.2C++简介
1.3.3集成开发环境
1.4C语言程序的构成
1.5Visual C++简介
1.5.1运行简单C程序
1.5.2程序调试一般过程和手段
1.5.3Visual C++调试方法和工具
1.6DevC++ 5.11简介
1.6.1C程序的编辑与运行
1.6.2DevC++调试方法和工具
习题
第2章C语言基础
2.1C语言词法
2.1.1基本字符集
2.1.2关键字
2.1.3特定字
2.1.4标识符
2.1.5运算符
2.1.6分隔符
2.2C语言的数据类型
2.2.1数据类型概述
2.2.2基本数据类型
2.3常量与变量
2.3.1常量
2.3.2变量
2.3.3常量与变量应用举例
2.4表达式
2.4.1表达式概述
2.4.2算术表达式
2.4.3类型转换
2.4.4赋值表达式
2.4.5自增、自减表达式
2.4.6逗号表达式
习题
第3章结构程序设计
3.1结构化程序设计方法
3.2语句的概念
3.3输入输出函数
3.3.1格式输出函数
3.3.2格式输入函数
3.3.3字符输出函数
3.3.4字符输入函数
3.4顺序结构程序设计举例
习题
第4章选择结构程序设计
4.1关系表达式和逻辑表达式
4.1.1关系表达式
4.1.2逻辑表达式
4.2if语句
4.2.1if语句
4.2.2if…else语句
4.2.3if语句的嵌套
4.2.4if…else if语句
4.2.5条件表达式
4.3switch语句
习题
第5章循环结构程序设计
5.1for语句
5.2while语句
5.3do…while语句
5.4循环的嵌套
5.5break语句和continue语句
5.6goto语句
5.7常用算法举例
习题
第6章函数
6.1函数定义与调用
6.1.1函数定义
6.1.2函数调用
6.1.3函数原型声明
6.2函数间数据传递
6.2.1函数参数
6.2.2函数返回值
6.3函数的嵌套与递归
6.3.1函数嵌套调用
6.3.2函数递归调用
6.4函数应用举例
6.5变量属性
6.5.1变量的生存期和可见性
6.5.2变量的作用域
6.5.3变量的存储类别
习题
第7章编译预处理
7.1宏定义
7.1.1不带参数的宏
7.1.2带参数的宏
7.1.3取消宏定义
7.2文件包含
7.3条件编译
7.3.1#if和#endif命令
7.3.2#ifdef和#ifndef命令
7.3.3defined预处理运算符
习题
第8章数组
8.1一维数组
8.1.1一维数组的定义
8.1.2一维数组的引用
8.1.3一维数组的初始化
8.1.4一维数组应用举例
8.2多维数组
8.2.1二维数组的定义和引用
8.2.2二维数组的初始化
8.2.3二维数组应用举例
8.3字符串
8.3.1字符型数组
8.3.2字符串
8.3.3字符串处理函数
8.3.4字符串应用举例
习题
第9章结构体、共用体和枚举类型
9.1结构体
9.1.1结构体类型的定义
9.1.2结构体变量定义和初始化
9.1.3结构体变量的引用
9.1.4结构体数组
9.2共用体
9.2.1共用体类型的定义
9.2.2共用体变量的定义
9.3枚举类型
9.3.1枚举类型的定义
9.3.2枚举变量的定义
9.4typedef语句
习题
第10章指针
10.1地址与指针变量
10.1.1内存单元地址
10.1.2指针
10.1.3指针变量的定义和初始化
10.1.4指针的运算
10.2指针与函数
10.2.1指针变量作为函数参数
10.2.2函数的返回值为指针
10.2.3指向函数的指针
10.3指针与数组
10.3.1一维数组与指针
10.3.2字符串与指针
10.3.3指针数组
10.4指针与结构体
10.4.1指向结构体的指针
10.4.2动态存储分配
10.4.3链表
习题
第11章文件
11.1文件概述
11.2文件的打开和关闭
11.2.1文件的打开
11.2.2文件的关闭
11.3文件的读写
11.3.1文本文件的读写
11.3.2二进制文件的读写
11.4文件的定位
习题
附录AASCII编码字符集
附录BC语言运算符的优先级和结合性
参考文献
第5章
CHAPTER 5
循环结构程序设计
循环结构是程序中用得最多的一种控制结构,大多数程序都要用到循环,它是解决许多问题的基本方法,特别是涉及一组数据处理问题,例如,1~100的所有整数累加求和,找出10000以内的所有素数,输入并计算某课程的全班平均成绩等。
循环结构一般由循环初始化、循环条件、循环体三个部分组成。其中,循环初始化提供初始数据,为循环条件提供初值; 循环条件描述了重复操作需要满足的条件,条件成立执行循环体,条件不成立则终止循环; 循环体是要重复执行的语句,它包含了对循环条件的控制,为下一次执行循环体准备数据。一般来说,每一次循环操作都有循环趋于结束的语句,否则,将会出现“死循环”,即循环永不终止。
C语言提供了三种循环语句: for语句、while语句和do…while语句。for语句适合计数变量递增或递减的循环,while语句在循环体执行之前测试循环条件,do…while语句在循环体执行之后测试循环条件。此外,break语句、continue语句和goto语句可以改变循环的执行流程。熟练掌握循环语句的概念和运用是程序设计的基本要求。
5.1for语句
for循环称为计数型循环,特别适合描述循环次数已知的循环。
图5.1.1for循环流程图
for语句的语法格式如下:
for(表达式1;表达式2;表达式3)
循环体
for循环执行过程如图5.1.1所示,执行流程描述如下:
(1) 计算表达式1;
(2) 计算表达式2,若其值非0,则执行循环体语句,然后执行步骤(3); 若其值为0,则退出循环,转向步骤(5);
(3) 计算表达式3;
(4) 转向步骤(2)继续执行;
(5) 执行for循环的后续语句。
说明:
(1) 通常根据某个变量的值判断是否继续循环,该变量称为循环控制变量,简称循环变量。
(2) 表达式1通常用于给循环控制变量赋初值,在循环结构中仅被执行一次。
(3) 表达式2是循环是否继续的条件,通常为关系表达式或逻辑表达式,也可以是算术表达式,当表达式2的值非0时执行循环体,否则结束循环。
(4) 表达式3通常用于更新循环控制变量的值,使循环条件发生变化。
(5) 循环体是循环结构的主体,表达要重复执行的操作,如果循环体多于一个语句,必须用花括号{}把它们括起来,形成复合语句。循环体也称为for语句的内嵌语句。
(6) 表达式1、表达式2、表达式3都可以省略,但是for中两个分号不能省略。如果省略表达式2,则默认表达式2为真值,必须在循环体中设计其他停止循环的语句。
for语句的最简单应用也是最容易理解的形式是使用循环变量,用循环变量的初值、终值、循环变量的增量来决定循环的执行。
【例5.1.1】绘制5条直线,每条直线由4个“-”符号组成。
分析: 本例需重复输出5条直线,因此,循环体为输出一条直线的语句,循环体共执行了5次。
……