本书由浅入深地讲授了C语言程序设计的技术与技巧。首先,介绍了C语言的基础语法知识;其次,通过项目开发全过程的全方位指导,从需求分析、算法设计到程序编写和过程调试,以项目实训的形式引导和帮助学生解决实际问题,提高学生解决具体问题的能力,并对程序设计竞赛中的常见算法及其应用进行了介绍;最后,介绍了编程风格与程序调试方法。
本书内容齐备、自成一体,可作为计算机及相关专业的本科或专科教材,也可以作为信息类或其他相关专业的辅助教材。
C语言程序设计与实践
凌云 吴海燕 谢满德◎编著
精品课程网站 http://e-lesson.zjgsu.edu.cn
本书以程序设计为主线,在详细阐述程序设计基本概念、原理和方法的基础上,结合实践教学和学科竞赛的实际情况,通过经典实例讲解和实训,使学生掌握利用C语言进行结构化程序设计的技术和方法。注重培养良好的编程风格,掌握常见的算法思路,真正提高学生运用C语言编程以解决实际问题的综合能力,为后续课程实践环节的教学打下良好基础。
本书特色
实例丰富。在介绍理论知识的同时,书中还给出了大量的实例和实训内容,以提高学生的动手实践能力。
重点突出。针对C语言语法庞杂、有些语句可以相互替代、有些语法不常使用的情况,本书重点介绍了基本的、常用的C语言语法知识,使学生容易理解和掌握。
融会贯通。着重介绍程序设计语言的共性,培养学生自学其他程序设计语言的能力。
“C语言程序设计”是一门理论与工程实践密切相关的专业基础课程,在计算机学科的教学中具有十分重要的作用。大力加强该课程的建设,提高该课程的教学质量,有利于教学改革和教育创新,有利于创新人才的培养。学生通过本课程的学习,可以培养良好的编程风格,掌握常见的算法思路,真正提高运用C语言编程解决实际问题的综合能力,为后续课程的实践环节的教学打好基础。
目前国内关于C语言的教材较多,有些教材语法知识介绍细致,较适合作为非计算机专业的等级考试类教学用书;有些教材起点较高,内容深奥,不适用于初学者。为了帮助广大学生更好地掌握C语言编程技术,我们组织浙江工商大学C语言程序设计课程组教师进行了深入的讨论和研究,针对学生学科竞赛和课时压缩的背景,将该课程的建设与其他信息类专业的课程体系改革相结合,发挥学院在计算机、电子商务和信息管理等专业上的办学优势,编写了本书。全书以程序设计为主线,采用了渐进式的体系结构,在详细阐述程序设计基本概念、原理和方法的基础上,结合实践教学和学科竞赛的实际情况,通过大量经典实例讲解和实训,使学习者掌握利用C语言进行结构化程序设计的技术和方法,培养和提高他们的实践动手能力和创新协作精神。
本书的框架结构分为三个部分。第一部分包括第1~11章,介绍C语言的基础语法知识,这部分内容按C语言的知识点循序渐进地介绍,同时,针对C语言中的重点和难点,如指针,精心设计了丰富的实例,用了大量的篇幅从不同方面对其进行讲解,帮助读者理解并掌握这些重点和难点。第二部分包括第12~13章,为项目实训和常用算法指导部分,这部分通过项目开发全过程的全方位指导,从需求分析、算法设计到程序编写和过程调试,以项目实训的形式引导和帮助学生解决实际问题,提高学生解决具体问题的能力,并对程序设计竞赛中的常见算法及其应用进行了介绍。第三部分即第14章,介绍编程风格与程序调试方法。
“C语言程序设计”是一门强调实践练习的课程,对本教材的教学组织可依据两条主脉络进行:从字、词、数据、表达式、语句到函数、指针结构、文件等,这也是语法范畴构成的基本脉络;从程序功能,即以组织数据和组织程序为另外一条基本脉络。安排课程内容时应注意以下几点:
1)介绍程序设计语言语法时要突出重点。C语言语法比较庞杂,有些语句可以相互替代,有些语法不常使用。课程中要重点介绍基本的、常用的语法,不要面面俱到。
2)注重程序设计语言的共性。计算机的发展日新月异,大学期间不可能介绍所有的计算机语言。所以在本课程的学习过程中,教师应该介绍计算机程序设计语言共性的东西,使学生具有自学其他程序设计语言的能力。
3)由于课时的限制,不能安排太多的时间专门讲授程序设计理论。在教学过程中,应以程序设计为主线,结合教材中的实例分析,将程序设计的一般方法和技术传授给学生。
本书由浅入深地讲授了程序设计的技术与技巧,内容齐备、自成一体,对启迪、提高读者的程序设计能力很有裨益,适用于不同层次的读者。本书可作为计算机及其相关专业的本科或专科教材,也可以作为信息类或其他相关专业的选修教材,还可以作为其他一些课程(如“数据结构”、“编译器设计”、“操作系统”、“计算机图形学”、“嵌入式系统”及其他要用C语言进行项目设计的课程)的辅助读物。
本教材的作者均为浙江工商大学承担程序设计、数据结构等课程的骨干教师,项目实践经验丰富,积累了不少的教学素材。本书由凌云负责全书的策划、组织,并对全书进行了统稿和校对,其中凌云编写了第1、2章,吴海燕编写了第6、7、8、9、10、13章,谢满德编写了第3、4、5、11、12、14章。
本教材也是浙江省精品课程“高级语言程序设计”的教学用书,课程教学小组同时注重立体化教材的建设,还配有多媒体电子教案、习题与实验指导,以及教学网站和教学资源库等。读者可以上网共享我们的网络资源,网址为http://elessonzjgsueducn。
在本书的编写过程中,参考了部分图书资料和网站资料,在此向其作者表示感谢。由于作者水平有限,书中难免出现遗漏和不足之处,恳请社会各界同仁及读者朋友提出宝贵意见和真诚的批评。
计算机\程序设计
本书以程序设计为主线,在详细阐述程序设计基本概念、原理和方法的基础上,结合实践教学和学科竞赛的实际情况,通过经典实例讲解和实训,使学生掌握利用C语言进行结构化程序设计的技术和方法。注重培养良好的编程风格,掌握常见的算法思路,真正提高学生运用C语言编写程序编程解决实际问题的综合能力,为后续课程实践环节的教学打下良好基础。
本书特色
实例丰富。在介绍理论知识的同时,书中还给出了大量的实例和实训,以提高学生的实践动手能力。
重点突出。针对C语言语法比较庞杂、有些语句可以相互替代、有些语法不常使用的情况,本书重点介绍了基本的、常用的C语言语法知识,使学生容易理解和掌握。
融会贯通。着重介绍程序设计语言的共性,培养学生具有自学其他程序设计语言的能力。
出版者的话
前言
教学建议
第1章C语言与程序设计概述
11初见C语言程序
12计算机与程序设计
121指令与程序
122程序与程序设计
123程序设计和程序设计语言
124程序设计过程
13C语言学习与自然语言学习的关系
14C语言的发展历史、现状与特点
141C语言的发展历史和现状
142C语言的特点
习题
第2章例子驱动的C语言语法元素概览
21变量与表达式
22分支语句
221if语句
222switch语句
23循环语句
231while循环语句
232for循环语句
24符号常量
25输入输出
26数组
27函数
28算法
281算法的概念
282流程图与算法描述
习题
第3章基本数据类型和表达式
31基本语法单位
311基本符号
312关键字
313标识符
32数据类型
33常量与变量
331常量
332变量
333变量的初始化
34表达式和运算符
341算术运算符
342赋值运算符
343关系运算符
344逻辑运算符
345位运算符
346逗号运算符
347条件运算符
35各类数值型数据间的混合运算
习题
第4章输入输出语句
41putchar函数
42printf函数
421printf函数的格式
422格式说明字符
43getchar函数
44scanf函数
441一般形式
442格式说明
443scanf函数的执行中应注意的问题
45程序举例
习题
第5章C程序结构
51C语句
52程序设计基础
53结构化程序设计的三种基本结构
531顺序结构
532选择结构
533循环结构
54if分支语句
541第一种if语句形式
542第二种if语句形式
543第三种if语句形式
544if语句的嵌套
545程序举例
55switch分支语句
56while循环语句
57dowhile循环语句
58for循环语句
59break语句和continue语句
591break语句
592continue语句
510多重循环的嵌套
511程序举例
习题
第6章数组
61一维数组
611一维数组的定义
612一维数组元素的引用
613一维数组元素的初始化
62二维数组
621双下标变量
622二维数组及其定义
623二维数组的初始化
624二维数组应用举例
63综合应用举例
64字符数组
641字符串和字符串结束标志
642字符数组的输入输出
643字符串函数
644二维字符数组
645字符数组应用举例
习题
第7章函数
71函数的定义
711函数定义的格式
712形式参数和实际参数
713函数的返回值
72函数的一般调用
721函数调用的形式
722函数调用的方式
723主调函数和被调函数的相对位置关系
724函数调用时值的单向传递性
725函数调用示例
73函数的嵌套调用
74函数的递归调用
741概述
742函数的递归调用应用举例
75数组作为函数的参数
751数组元素作为函数的实参
752数组名作为函数的参数
753多维数组作为函数的参数
76变量的作用域——局部变量和全局变量
761局部变量
762全局变量
77变量的存储类别和生存期
771变量的存储类别
772动态变量
773静态变量
774外部变量
78内部函数和外部函数
781内部函数
782外部函数
习题
第8章编译预处理
81宏定义
811不带参数的宏定义
812带参数的宏定义
82文件包含
83条件编译
831条件编译语句1
832条件编译语句2
833条件编译语句3
习题
第9章指针
91地址和指针的概念
92指针变量和地址运算符
921指针变量的定义
922指针变量的使用
93指针和数组
931通过指针存取数组元素
932字符串和指针
94指针和函数
941指针作为函数的参数
942指针作为函数的返回值
943指向函数的指针
95多级指针
951多级指针的概念和使用
952多级指针和多维数组
953命令行参数
96指针和动态存储管理
961概述
962malloc函数和free函数
963动态存储管理的应用
97指针和指针运算小结
习题
第10章结构与联合
101结构体类型变量的定义和引用
1011结构体类型变量的定义
1012结构体类型变量的引用
1013结构体类型变量的初始化
102结构体数组的定义和引用
103结构体指针的定义和引用
1031指向结构体类型变量的指针的使用
1032指向结构体类型数组的指针的使用
104链表的定义和操作
1041概述
1042链表的建立
1043输出链表元素
1044删除链表元素
1045插入链表元素
1046查询链表元素
105联合
1051联合的定义
1052联合成员的使用
1053应用举例
1054数组、结构和联合三种数据类型的比较
106枚举类型
107用typedef定义类型名
习题
第11章文件操作
111文件的基本概念
1111概述
1112文件分类
1113缓冲文件系统和非缓冲文件系统
1114流式文件
112标准文件
113文件类型指针
114文件的打开与关闭
1141文件的打开
1142文件的关闭
115文件的顺序读写
116常用文件顺序读写函数
117文件顺序读写的应用举例
118文件的随机读写
1181文件的定位
1182文件操作的出错检测
119非缓冲文件系统
习题
第12章综合实训
121综合实训一:24点程序
1211问题描述
1212问题分析
1213数据结构分析
1214程序执行流程和设计分析
1215程序运行和测试
122综合实训二:五子棋游戏
1221问题描述
1222问题分析
1223数据结构分析
1224程序执行流程和设计分析
1225程序运行和测试
123综合实训三:通用的管理信息系统
1231问题描述
1232问题分析
1233数据结构分析
1234程序执行流程和设计分析
1235程序运行和测试
124综合实训四:BASIC程序解释器
1241问题描述
1242问题分析
1243数据结构和程序设计分析
1244程序运行和测试
1245讨论
第13章初涉ACM/ICPC
131ACM/ICPC概述
132小数近似值问题与枚举算法
1321问题描述
1322问题分析与求解
1323问题小结
133迷宫问题与深度优先搜索
1331问题描述
1332问题分析与求解
1333问题小结
134经典01背包问题与动态规划算法
1341问题描述
1342问题分析与求解
1343问题小结
135经典部分背包问题与贪心算法
1351问题描述
1352问题分析与求解
1353问题小结
136关系序列问题与图的拓扑排序
1361问题描述
1362问题分析与求解
1363问题小结
137公路建设图与最小生成树
1371问题描述
1372问题分析与求解
1373问题小结
138青蛙跳石头与图的单源最短路径
1381问题描述
1382问题分析与求解
1383问题小结
139青蛙约会之解与模线性方程
1391问题描述
1392问题分析与求解
1393问题小结
1310练习参考网址
第14章程序设计风格与程序调试
141程序设计风格和程序设计方法
142C语言程序设计风格
1421标识符的命名
1422注释
1423清晰简洁的表达
1424书写格式
143结构化程序设计
1431自顶向下的程序设计方法
1432程序的模块化
144健全程序的风格标准
145程序错误类型和调试
1451程序错误类型
1452程序错误分析方法
146程序调试方法
147常见错误分析
148帮助的使用
习题
附录ASCII码表
参考文献