本书主要面向程序设计的初学者,旨在引导读者了解C语言的基本语法规则并具备一定的设计、编写C语言程序的能力。本书内容分为十章,包括:概述,基本数据类型、基本输入输出、程序控制结构、数组和指针、函数、字符串、结构体与共用体、文件操作和项目实战。 本书注重教材的实用性,由浅入深,将大量的与实际项目相关的习题分散到各个知识点的课后练习题中,并在*后采用一个项目案例对所学的知识进行总结与检验。本书适合作为大学各专业的教材。
本书是一本面向编程入门者的C语言教程,力图通过这本书让读者能够掌握C语言的基本概念和语法,并具有一定的通过编写程序解决问题的能力。本书共11章,内容包括:程序设计概述,数据类型,运算符、表达式和语句,选择结构,循环结构,数组,指针和数组,函数,字符串,结构体和共用体,文件操作等。
本书注重教材的实用性,书中包含大量的示例代码和编程练习题目,旨在帮助学生养成良好的代码编写习惯,并锻炼学生的编程能力。
C语言是目前广泛使用的编程语言,也是公认的编程入门语言,很多高校都将其作为计算机专业学生学习的第一门程序设计语言。本书正是为编程入门者编写的一本C语言入门书。
要编写一本C语言的入门教程,编者认为应该遵循3个原则: ①尽可能只介绍C语言常用的语法和概念,以使读者把握重点,尽快掌握C语言编程的基本技能; ②尽可能从一开始就给读者展示具有良好编程风格的代码,以帮助读者在开始阶段就养成良好的编程习惯; ③尽可能多地给读者接触代码的机会,无论是阅读代码还是编写代码,以培养其编程能力。
基于上述原则,本书编者经过反复斟酌,提炼了一些C语言中常用的知识点。为了让读者能尽早地编写程序,并通过编写程序来验证一些知识点,本书重新组织了知识点的顺序。另外,每个知识点都附有相应的示例代码。这些示例代码都由具有多年项目实践经验的教师编写,具有良好的编程风格,且所有代码均在Code::Blocks中正确运行。
本书共分11章,具体如下。
第1章主要介绍计算机的结构,程序设计语言的概念、分类及其运行原理,以及C语言的发展历史、C语言标准的概念等。
第2、3章主要介绍C语言的基本概念。其中,第2章主要介绍C语言中整型、实型和字符型三种基本数据类型的表示方法,各类型变量的定义以及格式化输入和输出的实现; 第3章主要介绍算术、赋值、递增递减等常用运算符的使用,以及相应表达式的计算和使用规则。
第4、5章主要介绍选择和循环两种程序控制结构的实现方法,并通过多个实例对具体的代码编写方法进行了展示。
第6、7章主要介绍一维数组和二维数组的定义和使用方法,指针的概念与指针变量的定义,以及如何通过指针来操作数组,并详细阐述指针和数组的异同点。
第8章主要介绍函数的定义,如何通过定义函数来将复杂的任务分成小任务,函数调用时的参数传递的原理、参数包含指针或数组类型的函数的定义及地址传递的原理、变量的作用域、存储类别等。
第9章主要介绍字符串常量和变量的定义,以及针对字符串的操作的实现。通过一些常用字符串操作函数的模拟实现代码,介绍常用的字符串操作方法。
第10、11章主要介绍结构体和共用体的定义及其访问方法,以及常用的文件操作函数,并通过具体的实例演示其不同的使用方法。
本书由闫超担任主编并统稿,姜海涛、黄宝贵、黄万丽、刘金星、秦朋担任副主编。其中,第1~6章及附录由闫超编写,第7章由刘金星编写,第8章由秦朋编写,第9章由姜海涛编写,第10章由黄万丽编写,第11章由黄宝贵编写。在本书的编写过程中,王佳睿同学完成了本书大部分图片的绘制工作,王璇、管峥朝、许同杰、闫志强、王兴、胡海洋、周希军等同学完成了本书的多次校对工作,并对本书的结构提出了非常宝贵的建议。在本书编写的过程中我们牺牲了很多陪伴家人的时间,在此特别感谢教材编写组各位成员的家人的包容和支持。
由于编者水平有限,书中不足之处在所难免,恳请广大读者提出宝贵的意见,我们将不胜感激。
编者
2019年3月
闫超,硕士研究生,讲师。1999-2013年于曲阜师范大学攻读计算机科学与技术专业并取得学士学位,2003-2006年于中国科学院计算技术研究所攻读计算机应用技术专业并获工学硕士学位,主要研究方向为软件工程、数据处理。主持并完成山东省软科学研究计划一项,校级青年基金项目两项,济宁市科技发展计划项目一项,参与并完成省软科学计划项目一项、国家自然基金项目一项,参编教材1部,获得软件著作权一项。
第1章程序与C语言
1.1冯·诺依曼计算机
1.2程序设计语言
1.2.1机器语言
1.2.2汇编语言
1.2.3高级编程语言
1.3C语言概述
1.3.1C语言的历史从B到C
1.3.2C语言标准
1.4C语言程序
1.4.1第一个C语言程序
1.4.2预处理、编译和链接
1.4.3在Code::Blocks中编写C语言程序
1.5本章小结
练习题
第2章数据类型
2.1整型数据
2.1.1整型数据的表示
2.1.2C语言中的整数类型
2.1.3整型字面量
2.1.4整型变量的声明
2.1.5整型数据的输入/输出
2.2实型数据
2.2.1实数在计算机中的表示
2.2.2浮点型字面量与变量
2.2.3浮点型数据的输入/输出
2.3字符型数据
2.3.1字符型数据在计算机中的表示
2.3.2字符型字面量与字符变量
2.3.3字符型数据的输入/输出
2.4命名常量
2.4.1符号常量
2.4.2const限定符
2.5本章小结
练习题
第3章运算符、表达式和语句
3.1运算符和表达式
3.1.1算术运算符和算术表达式
3.1.2运算符的优先级和结合性
3.1.3赋值运算符与表达式
3.1.4递增、递减运算符
3.2数据类型转换
3.2.1数据类型的隐式转换
3.2.2强制类型转换运算符
3.3表达式语句
3.4本章小结
练习题
第4章程序控制结构选择结构
4.1关系表达式和逻辑表达式
4.1.1关系运算符与关系表达式
4.1.2逻辑运算符与逻辑表达式
4.1.3短路特性
4.2if语句
4.2.1简单形式的if语句
4.2.2ifelse语句
4.2.3条件运算符和条件表达式
4.2.4嵌套if语句
4.3switch语句
4.3.1break语句
4.3.2多个case共享语句组
4.4本章小结
练习题
第5章程序控制结构循环结构
5.1while语句
5.1.1引例
5.1.2while语句的使用
5.2for语句
5.2.1使用for语句的注意事项
5.2.2逗号运算符
5.2.3应用实例
5.3dowhile语句
5.4break和continue语句
5.4.1break语句
5.4.2continue语句
5.5循环嵌套
5.6本章小结
练习题
第6章数组
6.1一维数组
6.1.1一维数组的定义
6.1.2一维数组初始化
6.1.3应用实例
6.2二维数组
6.2.1二维数组的定义与使用
6.2.2二维数组与一维数组
6.2.3二维数组初始化
6.2.4应用实例
6.3本章小结
练习题
第7章指针与数组
7.1地址和指针
7.1.1地址
7.1.2指针
7.2指针运算
7.2.1间接寻址运算
7.2.2指针赋值运算
7.2.3指针算术运算
7.3指针与一维数组
7.3.1一维数组的地址
7.3.2指向一维数组的指针
7.3.3数组名与指向数组的变量
7.4指针与二维数组
7.4.1二维数组的地址
7.4.2指向二维数组的指针变量
7.5指针数组
7.6本章小结
练习题
第8章函数
8.1函数的定义
8.1.1什么是函数
8.1.2函数的定义
8.1.3return语句
8.1.4带参数的宏
8.2函数调用
8.2.1函数调用的一般形式
8.2.2函数调用时的参数传递
8.2.3函数声明
8.3递归
8.4数组和指针作函数参数
8.4.1一维数组作函数参数
8.4.2二维数组作函数参数
8.4.3指针作函数参数
8.4.4使用const关键字保护数据
8.4.5指向函数的指针和返回指针的函数
8.5局部变量与全局变量
8.5.1局部变量
8.5.2全局变量
8.5.3作用域规则
8.6变量的存储类别
8.6.1auto
8.6.2register
8.6.3static
8.6.4extern
8.7本章小结
练习题
第9章字符串
9.1字符串常量
9.2字符串变量
9.2.1字符串变量的定义与初始化
9.2.2字符串的输出
9.2.3字符数组与字符指针
9.3字符串的输入
9.3.1使用scanf()函数读取字符串
9.3.2使用gets()函数读取字符串
9.3.3使用fgets()函数读取字符串
9.3.4逐个字符的方式读取字符串
9.4常用字符串处理函数
9.4.1strlen()函数
9.4.2strcpy()函数和strncpy()函数
9.4.3strcat()函数
9.4.4strcmp()函数
9.4.5sprintf()函数
9.5字符串数组
9.6本章小结
练习题
第10章结构体和共用体
10.1结构体类型与结构体变量
10.1.1结构体类型的定义
10.1.2结构体变量的定义
10.1.3用typedef为结构体类型定义别名
10.1.4结构体变量的引用和初始化
10.2结构体数组
10.2.1结构体数组的定义
10.2.2结构体数组的初始化
10.3结构体类型指针
10.3.1指向结构体变量的指针
10.3.2指向结构体数组的指针
10.4结构体与函数
10.4.1结构体变量的成员作函数参数
10.4.2结构体变量作函数参数
10.4.3指向结构体的指针作函数参数
10.5共用体
10.5.1共用体类型和变量的定义
10.5.2共用体变量的初始化和引用
10.6本章小结
练习题
第11章文件操作
11.1文件概述
11.1.1文件的概念
11.1.2数据文件的存储形式
11.1.3文件指针
11.2文件的打开与关闭
11.2.1打开文件
11.2.2关闭文件
11.3文本文件的读/写
11.3.1读单字符函数fgetc()
11.3.2写单字符函数fputc()
11.3.3读字符串函数fgets()
11.3.4写字符串函数fputs()
11.4二进制文件的读/写
11.4.1读数据块函数fread()
11.4.2写数据块函数fwrite()
11.5文件的格式化读/写
11.5.1格式化文件读函数fscanf()
11.5.2格式化文件写函数fprintf()函数
11.6文件的随机读/写
11.7本章小结
练习题
参考文献
附录1ASCII码表
附录2C语言的运算符优先级
附录3CodeBlocks中常用的快捷键