本书采用项目驱动的方式编写,主要内容分为基础知识篇模块化知识篇和实战知识篇三大部分。基础知识篇共4章,内容涵盖了C语言概述、数据、格式化输人/输出、运算符和表达式;模块化知识篇共6章,内容包括选择分支结构、循环结构、数组、函数、指针、字符串及字符串函数,便于读者清晰地梳理及巩固重要知识点;实战知识篇共3章,主要内容为内存管理、结构体、文件,这部分内容可以结合实际问题进行实践训练,并给出具体程序设计方法,便于读者形成良好的逻辑思维习惯。本书各章后面都有强化练习,并附参考答案,读者通过这些练习,可以强化实践操作能力。
本书还有配套使用的实训指导书:《C程序设计实训教程》(张伟主编,化学工业出版社出版)。
本书适合于各类高等本科院校和高职高专院校作为计算机类专业C语言编程课程的教材。
想要学好一门计算机程序设计语言,不应该拘泥于该语言的语法细节,重点是要大量使用该语言来编写程序,从实践中学习与巩固它的基本知识;在程序设计工作中,要对问题进行分析,考虑各种设计的可能性,选择适当的算法、数据结构及语言,编写代码,对代码进行测试。《C程序设计实用教程》针对这些问题进行了详细介绍。
本书以C语言的基本知识为主线,以程序设计思想为核心,由长期从事程序设计教学、软件系统开发的一线教师编写,书中大量教学实例来自于实际开发项目,既有较强的理论性,又具有鲜明的实用性。本书采用项目引导和实例讲解的方式编写,主要内容分为基础知识模块化知识和实战知识三大部分。基础知识部分共4章,内容涵盖了C语言概述、数据、格式化输入/输出、运算符和表达式;模块化知识部分共6章,内容包括选择分支结构、循环结构、数组、函数、指针、字符串和字符串函数,便于读者清晰地梳理及巩固重要知识点;实战知识部分共3章,主要内容为局部变量与全局变量、结构体与共用体、文件,这部分内容可以结合实际问题进行实践训练,并给出具体程序设计方法,便于读者形成良好的逻辑思维习惯,强化实践操作能力。
本书强化程序设计思想和方法,采用项目教学体系,采取案例引导的编写方法,既能保证学生熟悉项目内容,又能较好地掌握知识点;书中的实例选择,既有针对性,又能够让学生通过例子很快掌握对应知识;书中所有例题都经过反复调试,保证其正确无误。本书还有配套使用的实训指导书:《C程序设计实训教程》(张伟主编,化学工业出版社出版)。我们还将为使用本书的教师免费提供电子教案等教学资源,需要者可以到化学工业出版社教学资源网站http://www.cipedu.com.cn免费下载使用。
本书适合于各类高等本科院校和高职高专院校作为计算机类专业C语言编程课程的教材。
本书由华北理工大学轻工学院高建宇主编,张伟、章昊任副主编;参加编写的人员还包括华北理工大学轻工学院张琳,河北省科学技术协会李志强,华北理工大学轻工学院杨炯照、刘金委、李双月。
由于编写时间紧迫以及编者的水平有限,书中难免存在疏漏和不妥之处,恳请广大读者批评指正!
编者
2019年9月
高建宇,华北理工大学(课程组负责人), 计算机教师,华北理工大学控制工程硕士。
研究方向:检测系统与智能仪器,IT/工控系统大客户营销,工业工程及项目管理
一.教育背景
本科:华北理工大学 电子信息工程
硕士:华北理工大学 控制工程
二.著译作品
《物联网专业英语》国家特色专业(物联网工程)规划教材,机械工业出版社,主要参编人员,2015.03
三.业务成果
主持省级课题1项,主研市级课题1项,参研省级、市级课题多项,2015年获省级创新教育成果二等奖,全国建筑电气专业联合毕业设计专业指导教师,iCAN国际大学生创新创业竞赛指导教师。
发表学术论文近20篇,其中中文核心期刊、EI检索、国外期刊多篇,其余均为国家期刊。
第一部分基础知识/1
第1章C语言概述2
1.1C语言的发展史2
1.2C语言的特点2
1.3模块化结构3
1.4C语言程序的开发过程3
1.5简单C语言程序的构成和格式4
1.6算法和流程图5
1.6.1算法5
1.6.2流程图7
本章小结10
巩固练习10
第2章数据13
2.1数据类型13
2.2常量与变量14
2.2.1常量和符号常量14
2.2.2变量18
本章小结24
巩固练习24
第3章格式化输入/输出27
3.1printf函数(格式输出函数)27
3.2scanf函数(格式输入函数)29
3.3字符数据的输入/输出函数34
本章小结36
巩固练习36
第4章运算符和表达式41
4.1算术运算符及表达式41
4.1.1基本算术运算41
4.1.2自增自减运算43
4.2强制类型转换运算符及表达式44
4.3赋值运算符及表达式44
4.4逗号运算符及表达式46
4.5位运算符及表达式47
本章小结52
巩固练习52
第二部分模块化知识/57
第5章选择分支结构58
5.1条件分支if语句59
5.1.1关系运算符及表达式59
5.1.2逻辑运算符及表达式60
5.1.3if语句61
5.2多分支switch语句64
5.2.1问题的提出64
5.2.2switch语句64
本章小结69
巩固练习69
第6章循环结构74
6.1三种循环语句74
6.1.1while语句74
6.1.2do-while语句75
6.1.3两种语句区别76
6.1.4 for语句77
6.2循环的嵌套80
6.3break语句和continue语句82
6.3.1break语句82
6.3.2continue语句82
6.4几种循环的比较82
本章小结83
巩固练习83
第7章数组88
7.1一维数组的定义和引用89
7.1.1一维数组的定义89
7.1.2一维数组的初始化89
7.1.3一维数组元素的引用89
7.2二维数组的定义和引用92
7.2.1二维数组的定义92
7.2.2二维数组的初始化92
7.2.3二维数组的引用93
7.3字符数组的定义和引用95
7.3.1字符数组的定义95
7.3.2字符数组的初始化95
7.3.3字符数组的引用95
7.3.4字符串96
7.3.5字符数组的输入与输出96
7.3.6字符串处理函数98
7.3.7字符数组应用举例100
本章小结101
巩固练习101
第8章函数105
8.1函数及库函数105
8.2函数定义的一般形式107
8.2.1问题的提出107
8.2.2无参函数的定义形式107
8.2.3有参函数定义的一般形式107
8.2.4空函数108
8.3函数参数和函数的值108
8.3.1形式参数、实际参数及参数传递108
8.3.2函数的返回值109
8.4函数的调用及说明110
8.4.1问题的提出110
8.4.2函数调用的一般形式111
8.4.3函数调用的方式111
8.4.4对被调用函数的说明111
8.5函数的嵌套调用112
8.6函数的递归调用112
8.7数组作为函数参数113
8.7.1数组元素做实参113
8.7.2数组名用作函数参数114
8.7.3用多维数组名作函数实参117
本章小结117
巩固练习117
第9章指针129
9.1变量的地址和指针129
9.2变量与指针130
9.2.1指针变量的定义130
9.2.2指针变量的赋值130
9.2.3指针变量的引用131
9.3指针的移动和比较132
9.4指针变量作为函数参数133
9.5数组与指针134
9.5.1问题的提出134
9.5.2指向数组的指针135
9.5.3通过指针引用数组元素135
9.5.4数组名作函数参数时的指针变量136
9.6指向多维数组的指针和指针变量138
本章小结141
巩固练习141
第10章字符串和字符串函数146
10.1字符串146
10.2字符数组的输入与输出147
10.3字符串处理函数148
10.4字符串函数应用举例150
10.5字符串与指针152
10.5.1用一个一维字符数组来存放字符串152
10.5.2指向字符串的指针152
10.5.3指向字符串的指针作函数参数153
本章小结154
巩固练习154
第三部分实战知识/161
第11章局部变量与全局变量162
11.1局部变量与全局变量的定义163
11.1.1局部变量的定义163
11.1.2全局变量的定义164
11.2变量的存储类型164
11.2.1局部变量的存储类别165
11.2.2全局变量的存储类别167
本章小结169
巩固练习169
第12章结构体与共用体175
12.1结构体类型的概念177
12.2结构体变量的定义178
12.3结构体变量的引用180
12.4结构体类型的初始化181
12.5共用体182
本章小结184
巩固练习185
第13章文件190
13.1文件的基本操作192
13.1.1文件指针192
13.1.2文件的打开192
13.1.3文件的关闭193
13.2文件的读与写194
13.3文件的定位200
本章小结203
巩固练习203
附录运算符优先级和结合性208
参考文献209