高等教育 > 计算机基础教育
C语言程序设计案例教程
书号:9787113313104 套系名称:普通高等院校应用型人才培养“十四五”系列教材
作者:羊四清 出版日期:2024-08-01
定价:59.80 页码 / 开本: /16
策划编辑:曹莉群 责任编辑:曹莉群 贾星 徐盼欣
适用专业:计算机基础教育 适用层次:高等教育
最新印刷时间:2024-08-01
资源下载
教学课件
教学素材(暂无)
习题答案(暂无)
教学案例(暂无)
教学设计(暂无)
教学视频(暂无)
内容简介
前言
目录
作者介绍
图书特色
本书是面向普通高等院校“C语言程序设计”课程而编写的教材,主要包括C语言概述及程序设计基础、简单的数值运算程序设计、逻辑运算与选择结构程序设计、重复运算与循环结构程序设计、数组与批量数据处理、指针与字符串数据处理、函数与程序结构优化、结构体与复杂数据处理、链表与非连续存储数据处理、文件与大批量数据处理等内容。 本书每章均配有学习目标、小结与习题,以方便读者掌握重点和难点,并以计算机解决计算问题为核心,精心挑选程序用例,努力打造算法多样化与图解化表示,尽量做到结构清晰、逻辑性强、图文并茂,将复杂问题处理流程化,做到深入浅出,让读者能够深刻体会程序设计的乐趣。 本书适合作为普通高等院校理工科各专业C语言程序设计课程教材,尤其适合应用型本科计算机专业学生使用,也可作为高职院校计算机相关专业学生和C语言自学者的参考书。
C语言从诞生到现在,虽然已经经历了半个多世纪,但是依然被软件工程师公认为计算机编程的首选入门语言,受到软件开发者的广泛青睐,并且在TIOBE编程语言榜上一直居于前三位置。目前常用的Python、PHP、C++、C#等都是在C语言的基础上进行开发的。 C语言具有简洁紧凑、运算能力强、结构化、目标程序质量高、可移植性好、使用灵活方便等特点,能够有效地用于编制各种系统软件和应用软件;C语言的控制结构简明清晰,非常适合结构化程序设计的程序编写。目前国内大多数高等院校都将C语言作为计算机及相关专业的一门程序设计语言课程来开设。 从学习的角度来看,学好C语言并非容易之事,主要原因是语法规则太多、灵活性太强,把过多的篇幅放在对语法规则的讲解上,容易让学生认为C语言程序设计难学,从而产生畏难情绪。本书力求讲清C语言的基本概念与基本要求,把C语言的各种功能深度融合在各类计算问题中,如讲解循环结构时结合重复运算,讲解数组时融入批量数据处理,讲解链表时融入非连续存储的数据处理,讲解结构体时融入复杂数据类型的数据处理,讲解文件时融入大数据的处理等。这样做的目的:其一,利用C语言这一有力的工具去编写或开发有意义的程序,从而解决现实中的具体问题,而不只是简单地学习了一门计算机语言;其二,通过各类典型计算问题的实例分析及广泛运用多种算法分析方法编写出结构清晰的程序,让学生体会程序设计的乐趣,提高学生学习计算机程序设计的兴趣。 在内容组织上,本书以程序设计所应达成的目标—利用计算机解决计算问题为核心,安排C语言的知识结构。全书共分10章,包括C语言概述及程序设计基础、简单的数值运算程序设计、逻辑运算与选择结构程序设计、重复运算与循环结构程序设计、数组与批量数据处理、指针与字符串数据处理、函数与程序结构优化、结构体与复杂数据处理、链表与非连续存储数据处理、文件与大批量数据处理。 本书内容新颖、结构合理、概念清晰、图文并茂、深入浅出、逻辑性强,融入了编者30余年的计算机教学与编程经验,提出了独到的见解。本书不求全面但求有用、实用,让读者养成良好的编程风格。编者通过精心挑选程序用例、用心打造算法多样化与图解化表示,尽量做到复杂问题处理流程化、直观化,让学生能够深刻体会程序设计的乐趣。本书所有程序均在 Visual Studio 2019开发环境中进行了严格的测试。每章均配备学习目标、小结和习题,以方便读者掌握重点和难点。本书所配电子教案及相关教学资源可以到中国铁道出版社有限公司教育资源数字化平台(https://www.tdpress.com/51eds/)下载。 本书由湖南人文科技学院立项资助,由羊四清担任主编,刘浩、刘泽平担任副主编,阙清贤、肖敏雷、袁辉勇参与编写。具体编写分工如下:羊四清负责统筹规划,并编写第6、7、9章,刘泽平编写第1~3章,阙清贤编写第4章,刘浩编写第5章,肖敏雷编写第8章,袁辉勇编写第10章。韶关学院戴经国、易叶青对本书的编写提出了宝贵的意见,在此一并表示感谢。 由于编者水平有限,本书不妥及疏漏之处在所难免,请广大读者不吝指正。 编者 2024年4月
第1章C语言概述及程序设计基础1 1.1C语言的发展及特点1 1.1.1C语言的发展1 1.1.2C语言的特点2 1.2C语言程序的基本结构3 1.2.1C语言程序的书写基本结构3 1.2.2C语言程序的逻辑结构5 1.2.3字符集6 1.2.4标识符6 1.2.5C语言语句9 1.2.6C语言程序的书写约定12 1.3编译预处理13 1.3.1预处理命令13 1.3.2文件包含13 1.3.3宏定义15 1.3.4条件编译18 1.4程序设计基础21 1.4.1算法基本概念21 1.4.2算法的表示24 1.4.3程序的三种基本结构26 1.5Visual Studio 2019使用方法27 小结29 习题29 第2章简单的数值运算程序设计31 2.1C语言数据类型31 2.1.1数据类型的分类31 2.1.2数据类型的作用32 2.2C语言常量33 2.2.1整型常量33 2.2.2实型常量34 2.2.3字符常量34 2.2.4枚举常量36 2.3C语言变量37 2.3.1变量的概念37 2.3.2变量的定义38 2.3.3变量的存储38 2.4表达式与语句44 2.4.1运算符44 2.4.2与数值运算相关的运算符45 2.4.3表达式48 2.4.4表达式语句49 2.4.5类型转换49 2.5格式化输出/输入51 2.5.1格式化输出51 2.5.2格式化输入55 2.6简单的数值运算程序设计示例57 小结62 习题62 第3章逻辑运算与选择结构程序设计64 3.1选择结构的必要性64 3.2关系运算符和关系表达式65 3.2.1关系运算符及其优先级65 3.2.2关系表达式66 3.3逻辑运算符和逻辑表达式67 3.3.1逻辑运算符及其优先级67 3.3.2逻辑表达式68 3.4条件运算符和条件表达式69 3.5if语句70 3.5.1单分支if语句70 3.5.2双分支if语句71 3.5.3if语句的嵌套73 3.5.4if语句使用注意事项78 3.6switch语句78 3.6.1switch语句的一般格式78 3.6.2switch语句使用注意事项79 3.6.3switch语句应用示例79 3.7应用举例82 小结84 习题84 第4章重复运算与循环结构程序设计86 4.1重复运算与循环概述86 4.1.1重复运算86 4.1.2循环概述87 4.2while语句88 4.2.1while语句的格式88 4.2.2while 语句的功能88 4.3do...while语句92 4.3.1do...while语句的格式92 4.3.2do...while语句的功能92 4.4for语句94 4.4.1for语句的格式94 4.4.2for语句的功能95 4.5改变循环执行的状态97 4.5.1break语句97 4.5.2continue语句100 4.5.3break语句和continue语句的区别101 4.6三种循环语句的比较102 4.7多重循环102 4.7.1多重循环的概念102 4.7.2多重循环的执行103 4.7.3嵌套的特点及使用建议104 4.8重复运算应用示例105 4.8.1计数问题105 4.8.2求和问题108 4.8.3穷举求解110 4.8.4图形输出111 小结114 习题114 第5章数组与批量数据处理117 5.1数组和数组元素117 5.1.1数组的引入117 5.1.2数组的概念118 5.2一维数组119 5.2.1一维数组的定义和引用119 5.2.2一维数组的初始化121 5.3运用一维数组进行批量数据处理121 5.3.1数据统计122 5.3.2数列运算123 5.3.3数组排序126 5.3.4数组查找、插入、删除、修改操作128 5.3.5高精度运算136 5.4二维数组138 5.4.1二维数组的定义与引用138 5.4.2二维数组的初始化141 5.5运用二维数组进行数据运算处理142 5.5.1矩阵中数的统计142 5.5.2矩阵运算143 5.5.3特殊矩阵143 小结144 习题145 第6章指针与字符串数据处理147 6.1指针的概念与意义147 6.1.1地址与变量的地址147 6.1.2指针与指针变量149 6.2指针变量的定义和使用151 6.2.1指针变量的定义151 6.2.2指针变量的赋值151 6.2.3指针变量的运算153 6.3运用指针访问数组元素156 6.3.1指向数组元素的指针变量156 6.3.2指向数组的指针161 6.3.3指针数组164 6.4指针与字符串166 6.4.1字符串常量的表示与存储166 6.4.2字符串的定义与字符指针166 6.4.3用指针数组表示字符串组171 6.4.4二重指针与指针数组的关系173 6.4.5字符处理函数175 6.4.6字符数组应用举例181 小结182 习题183 第7章函数与程序结构优化184 7.1模块化程序设计184 7.1.1模块化程序设计概述184 7.1.2函数概述185 7.2函数的分类与定义185 7.2.1函数的分类185 7.2.2函数的定义186 7.3函数的调用与执行188 7.3.1函数的调用188 7.3.2函数说明语句189 7.3.3函数的参数与参数传递191 7.3.4函数的返回值193 7.3.5函数的执行194 7.3.6函数的编写195 7.4数组作为函数参数196 7.4.1数组元素作为函数实数196 7.4.2数组作为函数形数、数组名作为函数实数197 7.4.3二维数组作为函数参数201 7.5指针变量作为函数参数202 7.5.1形参是指针变量,实参是变量的地址202 7.5.2形参是指针变量,实参是指针变量203 7.5.3数组或指针变量作为函数的参数205 7.5.4字符串作为函数参数209 7.5.5指针数组作为函数的 参数211 7.6指向函数的指针变量与指针型函数212 7.6.1指向函数的指针变量212 7.6.2指针型函数214 7.7带参数的main()函数217 7.7.1main()函数的参数217 7.7.2main()函数参数的应用218 7.8函数的嵌套调用与递归调用220 7.8.1函数的嵌套调用220 7.8.2函数的递归调用221 7.8.3递归应用示例224 7.9局部变量与全局变量228 7.9.1局部变量228 7.9.2全局变量229 7.10变量的存储类别231 7.10.1变量存储方式231 7.10.2变量的存储类型231 7.11内部函数和外部函数235 7.11.1内部函数235 7.11.2外部函数235 7.12应用举例236 7.12.1进制转换236 7.12.2大数据的加减法运算238 小结239 习题240 第8章结构体与复杂数据处理242 8.1结构体类型242 8.1.1结构体概述242 8.1.2结构体类型的定义242 8.1.3结构体变量的定义243 8.1.4结构体变量的引用245 8.1.5结构体变量的初始化246 8.2结构体数组247 8.2.1结构体数组的定义247 8.2.2结构体数组的初始化248 8.2.3结构体数组的应用249 8.2.4指向结构体变量与数组的指针250 8.3共用体252 8.3.1共用体的概念252 8.3.2共用体变量的定义与赋值253 8.3.3共用体变量的引用254 8.3.4共用体类型数据的特点255 8.3.5共用体变量的应用256 8.4用typedef定义类型名称258 8.4.1typedef的作用258 8.4.2typedef的用法258 8.5动态存储分配与复杂数据处理应用示例260 8.5.1动态存储分配260 8.5.2结构体指针作为函数参数264 8.5.3复杂数据处理示例265 小结266 习题267 第9章链表与非连续存储数据处理268 9.1链表的概念与访问268 9.1.1链表的概念与表示268 9.1.2链表结点的定义270 9.1.3链表结点的访问270 9.2链表的操作272 9.2.1链表的定义272 9.2.2初始化链表272 9.2.3创建链表273 9.2.4遍历链表275 9.2.5插入结点275 9.2.6删除结点276 9.2.7释放所有结点277 9.3非连续数据处理278 9.3.1链表逆转存放278 9.3.2查找指定位置的结点278 9.3.3删除重复结点280 9.3.4链表选择排序281 9.3.5有序链表插入281 9.3.6链表重组282 9.3.7链表快速排序282 9.3.8归并排序283 9.3.9循环链表解决约瑟夫环284 9.3.10双向链表的插入与删除285 9.4指针定义与运算总结286 小结287 习题287 第10章文件与大批量数据处理289 10.1C文件的概念289 10.1.1文件与文件名289 10.1.2文件分类与存储290 10.1.3文件流与缓冲区291 10.1.4文件指针292 10.2打开与关闭文件294 10.2.1fopen()函数294 10.2.2fclose()函数295 10.2.3应用示例295 10.3顺序读写文件数据297 10.3.1读写字符函数fgetc()和fputc()297 10.3.2读写字符串函数fgets()和fputs()302 10.3.3格式化读写函数fscanf()和fprintf()304 10.3.4读写块数据函数fread() 和fwrite()305 10.4随机读写文件数据308 10.4.1文件读写位置定位308 10.4.2随机读写文件数据310 10.5文件检测函数311 10.5.1feof()函数311 10.5.2ferror()函数311 10.5.3clearerr()函数312 10.6应用举例312 10.6.1两个文件连接312 10.6.2简易学生管理系统312 小结313 习题314 附录315 参考文献316
羊四清,湖南人文科技学院三级教授,在本科高校从事计算机教学与行政管理工作30余年,主持和参与各类课题20余项、发表计算机专业论文40余篇、主编教材10本、获湖南省教学成果奖4项。主要担任C语言程序设计、数据结构、算法分析、编译原理等20余门计算机专业课程的教学工作,其中C语言的教学经验尤为丰富,为本教材的编写奠定了丰富的实践经验。
本书力求讲清C语言的基本概念与基本要求,把C语言的各种功能深度融合在各类计算问题中,如讲解循环结构时结合重复运算,讲解数组时融入批量数据处理,讲解链表时融入非连续存储的数据处理,讲解结构体时融入复杂数据类型的数据处理,讲解文件时融入大数据的处理等。这样做的目的:其一,利用C语言这一有力的工具去编写或开发有意义的程序,从而解决现实中的具体问题,而不只是简单地学习了一门计算机语言;其二,通过各类典型计算问题的实例分析及广泛运用多种算法分析方法编写出结构清晰的程序,让学生体会程序设计的乐趣,提高学生学习计算机程序设计的兴趣。 本书每章均配有学习目标、小结与习题,以方便读者掌握重点和难点,并以计算机解决计算问题为核心,精心挑选程序用例,努力打造算法多样化与图解化表示,尽量做到结构清晰、逻辑性强、图文并茂,将复杂问题处理流程化,做到深入浅出,让读者能够深刻体会程序设计的乐趣。