
本书采用项目任务方式编写,以校园歌手大赛计分系统开发为主线,以C语言语法和结构为基础,以工作任务(学习任务)为载体,教材共包括显示评分系统标题、计算一名选手的得分、找出最高分和最低分、计算一名选手最后得分、选手得分排序、多名选手得分计算与排序、处理选手姓名、设计简易评分系统、利用指针设计评分系统、设计完整评分系统、保存和查询评分数据等11个任务,内容覆盖C语言的语法基础知识、选择结构程序的设计、数组、函数、指针等理论知识。
在众多的程序设计语言中,C语言以其灵活性和实用性成为目前使用最广泛的高级程序设计语言之一,几乎任何一种机型、任何一种操作系统都支持C语言开发。C语言程序支持大型数据库开发和Internet应用,其应用领域在不断拓展。因此,C语言程序设计成为工科专业必修的专业基础课程。 本书以C语言为工具,打破传统的教材体系,改以工作任务为载体,以工作过程(即程序设计的过程)为依据,整合、序化教学内容,科学设计学习性工作任务。使学生掌握程序设计的基本思想、方法和技术内涵,着重培养学生分析问题、解决问题的能力,同时,让学生在学习程序设计的过程中,养成良好的编程习惯和编程风格,为后续的专业应用性课程和系统开发课程的学习打下良好的基础。 在内容选取时,注重针对性和适用性相结合,以实现课程目标为依据,以提高学生程序设计能力为核心,以应用性项目开发为主线,以C语言语法和结构为基础,以工作任务(学习任务)为载体,设计综合性的学习任务(项目)。本课程设计的综合性项目为“校园歌手大赛计分系统的设计”,项目的开发实施能将课程的全部内容具体化。在研究和分析完成该项目所需要的知识结构的基础上,将课程内容进行重构,细分为了十一个相对独立的子任务,每一个子任务包含一个完整的工作过程,子任务之间有相对的独立性,同时遵循知识的连续性。各个任务的主要内容如下: 任务1:显示评分系统标题。通过任务的实施了解C语言程序的基本构成和特点、以及C语言程序的开发环境。 任务2:计算一名选手的得分。通过任务的实施熟悉C语言的基本语法单位、基本数据类型、常量与变量、运算符与表达式的使用;掌握格式输入函数scanf()和格式输出函数printf()的使用。 任务3:找出最高分和最低分。通过任务实施了解结构化程序设计的概念,理解选择(分支)结构程序的设计,熟练掌握if语句和switch语句的程序设计。 任务4:计算一名选手最后得分。通过任务实施理解循环结构程序的设计,熟练掌握for、while、do-while语句的程序设计,掌握转移控制语句break、continue、goto语句的使用。 任务5:选手得分排序。通过任务实施掌握一维数组的定义、存储结构、输入输出和使用方法。 任务6:多名选手得分计算与排序。通过任务实施掌握二维数组的定义、存储结构、输入输出和使用方法。 任务7:处理选手姓名。通过任务实施理解字符型数据的存储结构,掌握字符数组的定义、输入输出、使用方法以及常用的字符串处理函数。 任务8:设计简易评分系统。通过任务实施理解模块化设计的思想,学会程序的模块化设计,熟悉形式参数与实际参数的概念,掌握函数的定义和调用、函数的类型和返回值。 任务9:利用指针设计评分系统。通过任务实施了解地址的概念,熟悉指针、指针变量、指针常量的概念和指针运算。 任务10:设计完整评分系统。通过任务实施掌握结构体类型、结构体变量的定义、成员访问、结构体数组的定义和使用,了解共用体类型、枚举类型的定义及其变量的使用方法。 任务11:保存与查询评分系统数据。将比赛成绩及排名保存下来,需要时可以查询。通过任务实施了解文件的概念,熟悉文件的存取方法,掌握文件指针的概念及其正确的使用方法,掌握文件读写函数的使用。 为了让读者更好地掌握所学知识,在每个任务后面配备了相应的实训内容和习题,以起到复习理论、提高实践能力的作用。 本书由刘宇容、张文梅主编,张艳莉、刘雅婷副主编,参与本书编写的还有来自企业的叶树瑶、周永钊先生,在此表示由衷感谢。本书凝聚了编者多年的教学经验,在编写过程中,由于编写时间仓促,难免有不足和疏漏之处,恳请广大读者批评指正。 本书提供电子教案、书中案例程序的源代码,读者可从华信教育资源网www.hxedu.com.cn下载。
任务一 显示评分系统标题 1 任务1.1 了解C语言的特点 2 1.1.1 程序设计语言概述 2 1.1.2 C语言的发展历史 3 1.1.3 认识C语言的特点 3 任务1.2 熟悉C语言程序开发环境 4 1.2.1 VC++6.0安装 4 1.2.2 程序设计的一般过程 6 1.2.3 C语言程序上机开发步骤 7 任务1.3 第一个C程序 11 1.3.1 C语言程序的结构 11 1.3.2 程序设计规范 12 实训1 显示评分系统标题 13 习题一 14 任务二 计算一名选手的得分 16 任务2.1 选手得分的输入/输出 17 2.1.1 标识符 18 2.1.2 变量 18 2.1.3 常量 19 2.1.4 数据类型 20 2.1.5 格式输出函数—printf() 24 2.1.6 格式输入函数—scanf() 25 2.1.7 字符输出函数—putchar() 26 2.1.8 字符输入函数—getchar() 27 任务2.2 选手总分和平均分的计算 28 2.2.1 算术运算符和算术表达式 29 2.2.2 赋值运算符和赋值表达式 33 2.2.3 关系运算符和关系表达式 34 2.2.4 逻辑运算符和逻辑表达式 34 2.2.5 逗号运算符和逗号表达式 36 任务2.3 知识扩展 37 2.3.1 程序应用 37 2.3.2 动手试试 40 实训2 计算一名选手得分 43 习题二 45 任务三 找出最高分和最低分 47 任务3.1 找出最高分及最低分 48 3.1.1 C语言程序的基本控制结构 49 3.1.2 if 语句 50 3.1.3 if语句使用注意事项 53 3.1.4 条件运算符和条件表达式 54 3.1.5 交换语句 55 任务3.2 将选手的平均得分转换成相应等级 55 3.2.1 if语句的嵌套 58 3.2.2 switch语句(不带break) 59 3.2.3 switch语句(带break) 60 3.2.4 switch语句使用注意事项 61 任务3.3 知识扩展 61 3.3.1 程序应用 62 3.3.2 动手试试 64 实训3 找最大值和最小值 66 习题三 67 任务四 计算一名选手最后得分 71 任务4.1 计算一名选手最后得分 72 4.1.1 for语句 73 4.1.2 while语句 76 4.1.3 do-while语句 78 4.1.4 break语句 79 4.1.5 continue语句 80 任务4.2 计算多名选手最后得分 81 4.2.1 for语句的嵌套 83 4.2.2 循环语句之间的相互嵌套 84 任务4.3 知识扩展 85 4.3.1 程序应用 85 4.3.2 动手试试 87 实训4 计算一名选手的最后得分 88 习题四 89 任务五 选手得分排序 93 任务5.1 分析数据存储结构 94 5.1.1 一维数组的定义及引用 94 5.1.2 一维数组的存储形式 96 任务5.2 选手得分的输入/输出 97 5.2.1 一维数组的初始化 97 5.2.2 一维数组元素赋值 97 5.2.3 一维数组的输入/输出 97 任务5.3 选手得分排序 98 5.3.1 冒泡法排序 98 5.3.2 选择法排序 99 实训5 选手得分排序 100 习题五 101 任务六 多名选手得分计算与排序 103 任务6.1 二维数组数据结构 104 6.1.1 二维数组的定义及引用 104 6.1.2 二维数组的存储形式 104 6.1.3 二维数组的使用 105 任务6.2 二维数组的应用 106 实训6 多名选手得分计算与排序 108 习题六 109 任务七 处理选手姓名 111 任务7.1 认识字符型数据 112 7.1.1 字符常量 112 7.1.2 字符变量 113 7.1.3 字符串常量 114 任务7.2 认识字符数组 114 7.2.1 字符数组的定义和引用 114 7.2.2 字符数组的初始化 115 任务7.3 字符串的输入和输出 116 任务7.4 字符串的处理 118 7.4.1 常用字符串处理函数 119 7.4.2 字符串函数应用举例 120 7.4.3 动手试试 121 实训7 处理选手姓名 123 习题七 124 任务八 设计简易评分系统 127 任务8.1 认识函数 128 任务8.2 函数的定义和调用 129 8.2.1 函数的定义 129 8.2.2 函数的调用 130 任务8.3 函数的参数和返回值 132 8.3.1 函数的参数 132 8.3.2 函数的返回值 135 任务8.4 函数的嵌套和递归调用 136 8.4.1 函数的嵌套调用 136 8.4.2 函数的递归调用 137 任务8.5 什么是局部变量和全局变量 139 8.5.1 局部变量 139 8.5.2 全局变量 140 任务8.6 编译预处理 142 8.6.1 宏定义 143 8.6.2 文件包含 144 8.6.3 动手试试 145 实训8 设计简易评分系统(一) 148 实训9 设计简易评分系统(二) 149 习题八 151 任务九 利用指针设计评分系统 157 任务9.1 认识指针 158 9.1.1 访问内存的两种方式 158 9.1.2 指针的概念 160 任务9.2 变量的指针 160 9.2.1 指针变量的定义及初始化 160 9.2.2 指针变量的引用 161 9.2.3 指针变量作为函数参数 163 任务9.3 指针与数组 167 9.3.1 指向数组元素的指针 167 9.3.2 一维数组的指针 168 9.3.3 用指针实现一位选手5个评分的输入和输出 169 9.3.4 二维数组的指针 170 9.3.5 用指针实现N位选手5个评分的输入和输出 173 9.3.6 指向数组的指针作函数的参数 174 任务9.4 字符串的指针 178 9.4.1 指向字符串的指针变量 178 9.4.2 程序举例 180 9.4.3 自己动手 181 任务9.5 用指针优化评分系统 183 实训10 利用指针设计评分系统 184 习题九 185 任务十 设计完整评分系统 189 任务10.1 确定选手基本信息的类型 190 10.1.1 结构体类型 191 10.1.2 定义选手结构体类型 191 10.1.3 定义选手结构体类型变量 193 任务10.2 选手信息的录入和输出 195 10.2.1 结构体变量初始化 196 10.2.2 结构体变量成员的访问 197 10.2.3 输入和输出选手基本信息 198 任务10.3 批量处理选手数据 199 10.3.1 结构体数组 199 10.3.2 输入和输出多名选手的基本信息 201 10.3.3 指向结构体的指针 202 任务10.4 计算选手最后得分和名次 204 任务10.5 了解共用体类型和枚举类型 206 10.5.1 共用体类型 206 10.5.2 枚举类型 210 10.5.3 自定义类型 212 实训11 设计完整评分系统 213 习题十 214 任务十一 保存与查询评分系统数据 217 任务11.1 文件类型指针变量的定义 218 11.1.1 文件 219 11.1.2 文件指针 220 11.1.3 定义文件指针变量 220 任务11.2 文件的打开和关闭 220 11.2.1 打开评分系统的输入输出文件 220 11.2.2 打开文件函数 221 11.2.3 关闭文件函数 222 任务11.3 文件的读写 222 11.3.1 将评委给分导入到程序(读文件) 222 11.3.2 保存比赛成绩及排名到文件(写文件) 223 11.3.3 文件的读写函数 224 实训12 文件的读写操作 227 习题十一 228 附录 230 附录A ASCⅡ代码表 230 附录B C运算符的优先级与结合性 231 附录C Turbo C2.0常用的库函数及其标题文件 232
1993年7月-2006年1月,广州邮电通信设备有限公司,从事通信产品开发及项目管理的工作,先后参与的产品开发项目包括:DS2000B数字程控交换机、光纤数字用户环路设备、IC卡公用电话、公用多媒体终端及管理系统。2006年2月至今,广东农工商职业技术学院专任教师,现任机电系电子信息工程技术专业负责人。
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0282050