
本书编写理念为“项目导向,任务驱动”。全书设计了简单计算器、高级计算器和学生成绩管理系统3个大项目,每个大项目根据完成该项目的工作过程分解成若干个任务,把C语言的知识点分解并贯穿在项目任务的实现中。通过项目和任务的实施,帮助学生学习知识和掌握技能。项目的安排顺序既符合学生的认知规律,又体现了C语言知识的连贯性。本书结合项目任务的实现,在讲解知识的过程中列举了上百个例子,便于学生融会贯通地掌握知识。
本书的C语言知识要点均通过任务引入,能极大地提高学生的学习兴趣。这些知识要点随着教材内容的展开步步深入,适合初学者学习,尤其适合该课程学时少、有递进式需求的教学。
本书可作为高职高专C语言程序设计课程理实一体化教学的教材,也可以作为C语言的职业培训教材或C语言爱好者的自学用书。
C语言是目前世界上应用非常广泛的高级程序设计语言。它是国内外各高等职业院校计算机类和电子类各专业的核心课程,在人才培养中占有重要的地位和作用。
本书根据高职高专院校的教学改革要求,摒弃了传统的章、节式大纲形式,在编写的过程中,以项目为导向,任务为驱动,理论知识点的阐述坚持以“必需和够用为度”的原则。
本书对上一版教材进行了修正,将比较零散的8个项目整合成3个大项目:设计简单计算器、设计高级计算器和设计学生成绩管理系统。项目按照由简单到复杂,实施难度从易到难的顺序组织编排,使得教材的结构更加紧凑、内容更加连贯; 并且根据项目开发的需要,增加了部分新的知识点,比如局部变量和全部变量等; 在多个知识点的后面增加了案例,增强了学生对知识点的理解; 在附录中增加了程序调试内容,提高学生调试程序的能力; 删减了一些使用较少的知识点的相关内容。
本书的特点在于:教材内容的组织采用“层层深入、步步推进”的方式,把基于问题的探究式教学模式应用于教材内容的组织结构上。基于问题的探究式教学模式是以“教师为主导,学生为主体,问题为主线”的教学过程。本书将该教学模式融入教材的内容组织中,使学生从狭窄、单一、被动的学习方式走向广阔、具体、主动的学习空间,学生的思维能力、创新能力和实践能力得到有效的培养。学生的学习重心从“学会知识”扩展到“学会学习、掌握方法和培养能力”上。这为学生学习后续专业课程打下坚实基础,也为从事有关工作和继续深造做好准备。
参加本书编写的教师有广东农工商职业技术学院邓会敏、李向阳、张文梅、张鹏飞、廖福保,以及私立华联学院崔英敏和茂名职业技术学院周洁文。其中,邓会敏、李向阳、张文梅任主编,张鹏飞、廖福保、崔英敏、周洁文任副主编。全书由邓会敏、李向阳负责统稿。广东农工商职业技术学院周劲桦、陈玉琴参与了附录撰写、部分程序调试和课件制作; 广州科韵信息股份有限公司技术总监王亚强参与了大纲的制订和教材的审核,并对全书项目和任务的安排提出了许多宝贵建议,在此一并表示衷心的感谢。
本教材的编写是对高职高专C语言程序设计理实一体化教学的一次尝试。由于编者水平有限,加之时间比较仓促,错漏之处在所难免,恳请广大师生和读者批评指正,以便再版时加以改进。
编者2013年5月
项目1第一个C语言程序
任务1.1熟悉C语言的特点
1.1.1程序设计语言概述
1.1.2C语言的发展历史
1.1.3认识C语言的特点
任务1.2安装Visual C++6.0
任务1.3在Visual C++6.0中开发项目程序
1.3.1输入C语言源程序
1.3.2编译
1.3.3连接
1.3.4执行
任务1.4C语言程序的结构
1.4.1C语言程序的结构
1.4.2C语言程序的上机步骤
任务1.5任务拓展
1.5.1程序设计的基本概念
1.5.2程序设计规范
1.5.3自己动手
习题1
项目2设计简单计算器
任务2.1确定变量标识符
2.1.1命名数据对象
2.1.2标识符
2.1.3变量
2.1.4常量
任务2.2选择数据类型
2.2.1定义变量
2.2.2整型数据类型
2.2.3实型数据类型
2.2.4字符数据类型
2.2.5变量的初始化
任务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逗号运算符与逗号表达式
任务2.5任务拓展
2.5.1程序举例
2.5.2自己动手
习题2
项目3设计高级计算器
任务3.1完善除法功能
3.1.1完善除法运算
3.1.2三种基本控制结构
3.1.3if语句
3.1.4if语句使用注意事项
3.1.5条件运算符和条件表达式
任务3.2设计高级计算器的菜单
3.2.1实现菜单功能
3.2.2switch语句(不带break)
3.2.3switch语句(带break)
3.2.4switch语句使用注意事项
任务3.3实现累加和与阶乘运算
3.3.1计算累加和与阶乘
3.3.2for语句
3.3.3while语句
3.3.4dowhile语句
任务3.4任务拓展
3.4.1break语句
3.4.2continue语句
3.4.3if语句的嵌套
3.4.4循环语句的嵌套
3.4.5交换语句
3.4.6自己动手
习题3
项目4设计学生成绩管理系统
任务4.1录入/输出多名学生1门课程的成绩
4.1.1录入和输出学生成绩
4.1.2一维数组
4.1.3一维数组的引用
4.1.4一维数组的初始化
任务4.2查询学生成绩
4.2.1实现学生成绩的查询
4.2.2成绩查询
4.2.3查询成绩的最大值
任务4.3学生成绩排序
4.3.1实现学生成绩的排序
4.3.2冒泡法排序
任务4.4处理多名学生多门课程的成绩
4.4.1输出班级学生成绩单
4.4.2二维数组
4.4.3二维数组的引用
4.4.4二维数组的初始化
任务4.5输入/输出学生姓名
4.5.1输出含学生姓名的班级学生成绩单
4.5.2字符数组
4.5.3字符串
4.5.4字符数组的输入/输出
任务4.6任务拓展
4.6.1字符串处理函数
4.6.2程序举例
4.6.3自己动手
习题4
项目5用函数实现学生成绩管理系统
任务5.1认识函数
5.1.1使用函数实现学生1门课程的成绩管理
5.1.2函数的定义和调用
任务5.2嵌套调用和递归调用
5.2.1使用函数实现学生多门课程的成绩管理
5.2.2函数的嵌套调用
5.2.3函数的递归调用
任务5.3用函数实现学生成绩管理系统
5.3.1使用函数完善学生成绩管理系统
5.3.2函数的值调用和引用调用
5.3.3函数的参数
任务5.4任务拓展
5.4.1变量的作用域
5.4.2编译预处理
5.4.3程序举例
5.4.4自己动手
习题5
项目6用指针优化学生成绩管理系统
任务6.1了解指针
6.1.1地址和指针的概念
6.1.2指向变量的指针变量
6.1.3指针变量作为函数参数
任务6.2优化学生成绩的录入模块
6.2.1使用指针输入和输出学生的成绩
6.2.2指向数组元素的指针
6.2.3一维数组的指针
6.2.4二维数组的指针
任务6.3优化输出班级学生成绩单
6.3.1使用指针优化学生成绩管理系统
6.3.2指向数组的指针作为函数的参数
任务6.4任务拓展
6.4.1指向字符串的指针变量
6.4.2程序举例
6.4.3自己动手
习题6
项目7用结构体实现学生成绩管理系统
任务7.1确定学生基本信息的类型
7.1.1结构体类型
7.1.2结构体类型的定义
7.1.3定义学生结构体类型
任务7.2学生信息的录入和输出
7.2.1输入和输出学生基本信息
7.2.2结构体变量初始化
7.2.3结构体变量成员的访问
任务7.3批量学生数据的处理
7.3.1定义学生结构体数组
7.3.2结构体数组
7.3.3指向结构体的指针
任务7.4统计学生成绩
7.4.1计算学生的总分和平均分
7.4.2输出总分最高的学生信息
任务7.5增加和删除学生记录
7.5.1增加学生记录
7.5.2删除学生记录
习题7
项目8文件的操作
任务8.1文件类型指针变量的定义
8.1.1文件
8.1.2文件指针
8.1.3定义文件指针变量
任务8.2文件的打开和关闭
8.2.1打开学生信息的写入文件
8.2.2打开文件
8.2.3关闭文件
任务8.3文件的读写
8.3.1保存学生信息到文件
8.3.2文件的读写函数
习题8
附录
附录1程序调试
附录2ASCII代码表
附录3C语言运算符的优先级与结合性
附录4Turbo C 2.0常用的库函数及其标题文件
参考文献