版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
普通高等院校计算机基础教育“十四五”系列教材
C语言程序设计教程
郭一晶薛春艳◎主编
高凤强邱义陈炳飞张思民◎副主编
内容简介
C语言是应用较广泛的一门程序设计语言。本书注重可读性和实用性,配备了大量经过精
心筛选的例题,既能帮助学生理解知识,又具有启发性。
本书在写作上注重简明易懂,并通过大量短小的例题对知识点进行分析解释,突出C语言
的编程思想和编程能力的培养。本书共分8章,分别介绍基本数据类型、程序控制语句、数组、
函数、指针、结构体、共用体和枚举类型、文件读/写操作等内容。本书配有辅导教材《C语言
程序设计习题解析》。
本书适合作为高等院校C语言程序设计课程的教材,也可以作为从事软件开发的工程技术
人员自学使用的参考书。
图书在版编目(CIP)数据
C语言程序设计教程/郭一晶,薛春艳主编.—北京:
中国铁道出版社有限公司,2022.6
普通高等院校计算机基础教育“十四五”系列教材
ISBN978-7-113-29102-0
Ⅰ.①C…Ⅱ.①郭…②薛…Ⅲ.①C语言-程序设计-
高等学校-教材Ⅳ.①TP312.8
中国版本图书馆CIP数据核字(2022)第076489号
书名:C语言程序设计教程
作者:郭一晶薛春艳
策划:贾星编辑部电话:(010)63549501
责任编辑:贾星贾淑媛
封面制作:刘颖
责任校对:孙玫
责任印制:樊启鹏
出版发行:中国铁道出版社有限公司(100054,北京市西城区右安门西街8号)
网址:/51eds/
印刷:三河市国英印务有限公司
版次:2022年6月第1版2022年6月第1次印刷
开本:787mm×1092mm1/16印张:17.25字数:451千
书号:ISBN978-7-113-29102-0
定价:49.00元
版权所有侵权必究
凡购买铁道版图书,如有印制质量问题,请与本社教材图书营销部联系调换。电话:(010)63550836
打击盗版举报电话:(010)63549461
前言
C语言是目前应用较广泛的一门程序设计语言,长期以来,一直受到编程人员的喜爱。学
生如何学好这门语言是广大教师一直都在思考的问题。
本书具有以下特点:
(1)简明易懂。本书在叙述方式上尽可能浅显易懂,用人们日常生活中的例子或图示来
加以说明,并用大量短小的例题进行分析解释。
(2)框架完整,知识细节不要求必须记忆,但要求掌握如何探索知识细节。
(3)对每一个例题均进行了详细分析和解释,既可以帮助读者学习理解知识和概念,大
大降低学习难度,又具有启发性,触类旁通。
(4)按照问题解决的需要分多个层次逐步讲解C语言编程,依次为:能够由解决问题的
想法到算法再到最终的代码,能够写出高质量的代码,能够进行应用领域编程,能够进行简单
实用工具的开发。实际应用中大多数的编程属于简单编程,也就是说,只要学会想法到代码的
映射,就能够解决大多数的实际应用问题。
(5)注意与其他课程的衔接。在书中对学生以后学习的数据结构、面向对象程序设计、
单片机设计、嵌入式开发编程、软件工程等课程进行了铺垫和延伸,有助于学生过渡到后续课
程的学习。
C语言的教学应该强调教学实施过程、知识积累的过程、能力培养的过程,使学生能快乐
地学习,使每一个学生喜欢本课程,掌握程序设计的思想和方法,让学生在学习本课程过程中
享受到程序设计的乐趣,培养学生在各专业领域中应用计算机解决问题的意识和能力。应该说,
学习任何一种编程语言都有一定难度。因此,要强调动手实践,多编写、多练习,熟能生巧,
从学习中体验到程序设计的乐趣和成功的喜悦,增强学习信心。
本书共分8章,其各章内容简介如下:
第1章主要介绍C语言的发展历史和特点,并对C语言的基本结构和调试方式做简要的介绍。
第2章主要介绍C语言的基本数据类型(整型、字符型和浮点型)、常用的运算符(算术
运算符、赋值运算符、逗号运算符、位运算符、关系运算符和逻辑运算符)及常用的表达式等。
第3章主要介绍程序控制结构中的顺序结构、选择结构和循环结构及其应用。
第4章主要介绍数组的定义、使用,从一维数组扩展到二维数组,并介绍字符数组的相关
应用。
2C语言程序设计教程
第5章主要介绍指针的概念及指针的应用。
第6章主要介绍函数定义和调用、函数的嵌套、变量的作用域与存储类型等。
第7章主要介绍结构体、共用体和枚举类型及这些构造类型的应用。
第8章主要介绍输入/输出流及文件的读/写操作等内容。
本书例题源程序可以在中国铁道出版社有限公司网站(/51eds/)下载。
下载文件还提供了习题解答及电子课件以帮助读者学习。本书配有辅导教材《C语言程序设计
习题解析》(薛春艳,郭一晶),与主教材相呼应,以更好地达到教学效果。本套教材的编者均
为多年从事大学程序设计课程教学的教师,具有丰富的教学及程序设计的实践经验。
本书由郭一晶、薛春艳任主编,高凤强、邱义、陈炳飞、张思民任副主编。具体编写分工
如下:第1、8章由高凤强编写,第2章由陈炳飞编写,第3章由张思民编写,第4章由郭一
晶编写,第5、7章由邱义编写,第6章由薛春艳编写。
由于时间仓促,编者水平有限,书中不妥和疏漏之处在所难免,恳请专家和读者不吝赐教。
编者
2022年1月
目录
第1章C语言基础知识......................................................................................................1
1.1C语言概述............................................................................................................................1
1.1.1C语言的发展简史.....................................................................................................1
1.1.2C语言的特点............................................................................................................1
1.1.3C语言编译器和IDE的选择....................................................................................2
1.1.4C程序的基本结构.....................................................................................................3
1.2C语言程序的开发................................................................................................................5
1.2.1C语言程序的编写和运行.........................................................................................5
1.2.2C-Free环境下的程序建立与运行...........................................................................7
1.2.3C-Free环境下的程序调试.....................................................................................15
小结..............................................................................................................................................22
习题1...........................................................................................................................................22
第2章C语言程序设计基础.............................................................................................23
2.1C语言的基本数据类型......................................................................................................23
2.1.1标识符......................................................................................................................23
2.1.2常量..........................................................................................................................24
2.1.3变量..........................................................................................................................24
2.2基本输入/输出函数............................................................................................................30
2.2.1格式化输出函数......................................................................................................30
2.2.2格式化输入函数......................................................................................................33
2.2.3字符输入/输出函数.................................................................................................36
2.3运算符和表达式.................................................................................................................37
2.3.1算术运算符和算术表达式......................................................................................37
2.3.2赋值运算符和赋值表达式......................................................................................39
2.3.3逗号运算符和逗号表达式......................................................................................41
2.3.4运算符的优先级......................................................................................................42
2.4位运算符与位运算.............................................................................................................44
2.5关系表达式与逻辑表达式.................................................................................................49
2.5.1关系运算符和关系表达式......................................................................................49
2.5.2逻辑运算符和逻辑表达式......................................................................................49
小结..............................................................................................................................................51
习题2...........................................................................................................................................51
第3章C语言程序的控制结构..........................................................................................55
3.1顺序结构.............................................................................................................................55
3.1.1C语言的语句..........................................................................................................55
2C语言程序设计教程
3.1.2顺序控制语句..........................................................................................................55
3.2选择结构.............................................................................................................................57
3.2.1选择结构语句..........................................................................................................57
3.2.2条件表达式..............................................................................................................62
3.2.3switch语句...............................................................................................................63
3.2.4条件编译..................................................................................................................68
3.3循环结构.............................................................................................................................70
3.3.1while语句.................................................................................................................70
3.3.2for循环语句.............................................................................................................72
3.3.3break语句和continue语句.....................................................................................74
3.3.4循环的嵌套..............................................................................................................76
3.4综合应用.............................................................................................................................78
小结..............................................................................................................................................83
习题3...........................................................................................................................................84
第4章数组......................................................................................................................88
4.1一维数组.............................................................................................................................88
4.1.1一维数组的定义......................................................................................................88
4.1.2一维数组元素的引用..............................................................................................89
4.1.3一维数组的初始化..................................................................................................90
4.1.4一维数组应用..........................................................................................................91
4.2二维数组.............................................................................................................................97
4.2.1二维数组的定义......................................................................................................97
4.2.2二维数组元素的引用..............................................................................................98
4.2.3二维数组的初始化................................................................................................100
4.3字符数组与字符串...........................................................................................................103
4.3.1字符数组................................................................................................................103
4.3.2字符串....................................................................................................................105
4.3.3字符串运算函数....................................................................................................107
4.4综合应用...........................................................................................................................112
小结............................................................................................................................................119
习题4.........................................................................................................................................119
第5章指针.....................................................................................................................125
5.1地址和指针.......................................................................................................................125
5.1.1指针概述................................................................................................................125
5.1.2指针变量................................................................................................................126
5.2指针与数组.......................................................................................................................131
5.2.1指针与一维数组....................................................................................................131
5.2.2通过指针引用一维数组元素................................................................................131
5.3指针与字符串及指针数组...............................................................................................136
5.3.1指针与字符串........................................................................................................136
目录3
5.3.2指针数组................................................................................................................143
5.4动态内存分配...................................................................................................................145
小结............................................................................................................................................148
习题5.........................................................................................................................................148
第6章函数.....................................................................................................................152
6.1函数概述...........................................................................................................................152
6.2函数的定义、调用及分类...............................................................................................153
6.2.1函数的定义............................................................................................................154
6.2.2函数的调用............................................................................................................157
6.2.3函数的声明............................................................................................................161
6.3函数参数及其传递方式...................................................................................................162
6.3.1形参和实参............................................................................................................162
6.3.2参数的传递方式....................................................................................................164
6.3.3数组作为函数参数................................................................................................167
6.4函数的嵌套调用...............................................................................................................171
6.5变量的作用域与存储类型...............................................................................................174
6.5.1全局变量与局部变量............................................................................................174
6.5.2变量的存储类别....................................................................................................176
6.6标准函数简介...................................................................................................................179
6.7综合应用...........................................................................................................................185
小结............................................................................................................................................188
习题6.........................................................................................................................................189
第7章结构体与共用体...................................................................................................198
7.1结构体类型.......................................................................................................................198
7.1.1结构体类型的定义................................................................................................198
7.1.2结构体变量的定义与引用....................................................................................199
7.1.3结构体数组的定义与使用....................................................................................203
7.1.4结构体类型指针....................................................................................................210
7.1.5结构体与函数........................................................................................................213
7.2共用体与枚举类型...........................................................................................................217
7.2.1共用体....................................................................................................................217
7.2.2枚举类型................................................................................................................221
7.3用typedef定义类型..........................................................................................................223
7.4链表...................................................................................................................................224
7.4.1链表的建立和输出................................................................................................225
7.4.2链表结点的查找....................................................................................................228
7.4.3链表结点的添加....................................................................................................230
7.4.4链表结点的删除....................................................................................................235
小结............................................................................................................................................238
习题7.........................................................................................................................................239
4C语言程序设计教程
第8章文件操作..............................................................................................................245
8.1文件概述...........................................................................................................................245
8.1.1数据流与文件的概念............................................................................................245
8.1.2文件类型指针........................................................................................................246
8.1.3文件的操作............................................................................................................247
8.2文件的打开和关闭...........................................................................................................247
8.2.1文件打开函数fopen()............................................................................................247
8.2.2文件关闭函数fclose()............................................................................................248
8.3文件的顺序读/写..............................................................................................................249
8.3.1字符读/写函数.......................................................................................................249
8.3.2字符串读/写函数...................................................................................................251
8.3.3格式化读/写函数...................................................................................................253
8.3.4二进制文件读/写函数...........................................................................................255
8.3.5文件的随机读写....................................................................................................257
8.3.6文件状态检查函数................................................................................................260
8.4模块化编程.......................................................................................................................262
8.4.1模块化编程概念....................................................................................................262
8.4.2模块化编程实例....................................................................................................263
小结............................................................................................................................................266
习题8.........................................................................................................................................267
第1章C语言基础知识
C语言是一种目前比较流行的高级编程语言,它具有较强的生命力,有着不同于其他语言
的特点。本章主要介绍C语言的发展历史和特点,并对C语言的基本结构和调试方式做简要的
介绍。
1.1C语言概述
1.1.1C语言的发展简史
1972年至1973年贝尔实验室的D.M.Ritchie在B语言的基础上设计出了C语言,并用该
语言改写了原来用汇编语言编写的UNIX。1978年,美国电话电报公司(AT&T)贝尔实验室正式
发布了C语言。同年,由B.W.Kernighan和D.M.Ritchie合著了著名的TheCProgrammingLanguage
一书。该书中介绍的C语言成为后来广泛使用的C语言版本的基础,被称为标准C。1983年,
美国国家标准化协会(ANSI)根据C语言各种版本对C的发展和扩充,制定了新的标准ANSI,
比标准C有了很大的发展。1987年,ANSI公布了新标准——87ANSIC。1989年,ANSI又公布
了一个新的C语言标准——C89。C语言编译系统大多是以C89为基础进行开发的,C语言开发
环境有TurboC、BorlandC、MicrosoftC、QiuckC等。
1.1.2C语言的特点
1.丰富的运算符
计算是计算机的基本功能,因此一门程序设计语言对计算能力的运用是非常重要的。C语
言提供了34种运算符,计算类型极其丰富,其中包括了最基本的加减乘除运算。
2.丰富的数据类型
拥有丰富的数据类型是C语言生命力强大的一个重要原因。C语言的数据类型有整型(int)、
实型(float)、字符型(char)、数组类型(int[])、指针类型(void*)、结构体类型(struct)、
共用体类型(union)等。正因为C语言数据类型丰富,运算能力极强,因此很多数据库都是用
C语言编写的,如DB2、Oracle等。
3.允许直接访问物理地址,对硬件进行操作
由于C语言可以使用指针直接访问物理地址和对硬件进行操作,因此它既具有高级语言的功能,
又具有低级语言的许多功能,能够像汇编语言一样对位(bit)、字节(Byte)和地址进行操作。
4.高效率的目标代码
对比汇编语言,C语言可读性好,易于调试、修改和移植,代码质量与汇编语言相当。
2C语言程序设计教程
5.可移植性好
在一个运行环境中用C语言编写的程序,不改动或稍加改动就可移植到另一个完全不同的
环境中运行。
1.1.3C语言编译器和IDE的选择
1.C语言编译器
C语言代码由固定的词汇按照固定的格式组织起来,程序员容易识别和理解。但是对于CPU
而言,C语言代码不能直接识别,其只能直接识别二进制形式的机器指令。这时候就需要一个
工具,将C语言代码转换成CPU能够识别的二进制机器指令,也就是将代码加工成.exe程序。
这个工具是一个特殊的软件,称为C语言编译器(Compiler)。
C语言编译器可以保证C语言代码的语法正确性。编译过后,编译器会给出错误或者警告
提示,方便程序员修改C语言代码。C语言编译器有很多种,Windows下常用的是微软开发的
cl.exe,Linux下常用的是GUN组织开发的GCC。
2.选择合适的IDE
实际开发中,除了编译器等必需的工具,程序员往往还需要很多其他辅助软件,如编辑器、
调试器、文件管理等,这些工具通常被打包在一起,统一发布和安装,例如,VisualC++6.0、
VisualStudio、DevC++、Code::Blocks、C-Free等。它们统称为IDE(IntegratedDevelopment
Environment,集成开发环境)。
(1)在Linux下通常使用GCC(GNUCompilerCollection,GNU编译器套件)。GCC是GUN
组织开发的自由软件,除了支持C,还支持C++、Java、Objective-C等,它是Linux平台编译器
的事实标准。
(2)在MacOSX下使用Xcode。Xcode是由Apple官方开发的IDE,支持C、C++、
Objective-C、Java等,可以用来开发OSX和iOS上的应用程序。Xcode最初使用GCC作为编
译器,后来由于GCC的兼容问题,改用LLVM。
(3)在Windows下,可以使用的IDE比较多,比如BorlandC++、VisualC++6.0、VisualStudio
2013、C-Free、DevC++、Code::Blocks等。
VisualC++6.0(简称VC6.0)是微软开发的一款经典的IDE,很多高校都以VC6.0为教
学工具来讲解C和C++。
VisualStudio(简称VS)是VisualC++6.0的升级版,增加了很多特性,支持了更多的语
言,非常庞大,安装包有2~3GB,下载不便,而且会安装很多暂时用不到的工具。另外,VS
安装的组件众多,不容易卸载干净。如果计算机配置低,运行VisualStudio还会很吃力。目前
常用的版本有VS2010和VS2013,目前最新的版本为VS2021。
C-Free、DevC++、Code::Blocks默认使用MinGW(GCC编译器的Windows版本)或者Cygwin
(Windows平台上运行的Linux模拟环境),不是真实的Windows开发环境,但它们小巧,容易
安装和卸载。
在Windows下的大部分程序员都使用VS,不过考虑到初学者下载、安装和运行VS的成本,
本书约定:在Windows下使用C-Free来运行C语言。另外,C语言的绝大部分内容是通用的,
不针对具体的编译器,读者也可以用DevC++、Code::Blocks等其他编译器运行程序。
第1章C语言基础知识3
1.1.4C程序的基本结构
任何一种程序设计语言都具有特定的语法规则和规定的表达方法。一个程序只有严格按照
语言规定的语法和表达方式编写,才能保证编写的程序在计算机中能正确地执行,同时也便于
阅读和理解。
为了方便读者了解C语言程序的形式和结构,下面介绍两个简单的C语言程序。
【例1-1】编写程序,在屏幕上输出字符串“Hello,World!”。
1/*输出Hello,World!*/
2#include<stdio.h>包含库文件“stdio.h”
3intmain()
4{
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论