编辑推荐
本书依据全国计算机等级考试大纲编写,内容设置合理、考点清晰准确,重难点配有微视频,手机扫描二维码即可观看。配套光盘中含有考试模拟系统,题量丰富,解析详尽,软件功能强大。
内容简介
本书依据教育部考试中心发布的全国计算机等级考试大纲以及编者多年对等级考试的研究编写而成,旨在帮助考生(尤其是非计算机专业的初学者)学习相关内容,顺利通过考试。
本书主要内容包括:程序设计基础,程序设计的初步知识,顺序结构,选择结构,循环结构,字符型数据,函数,指针,数组,字符串,对函数的进一步讨论,C语言中用户标识符的作用域和存储类,编译预处理和动态存储分配,结构体数据类型,位运算,文件。
本书体例简单、图文并茂,内容设置合理、考点清晰准确;重难考点配有微视频课程,通过扫描书中二维码即可观看;配套光盘中提供模拟考试软件及课后习题素材,便于考生同步训练,巩固提高。
本书可作为全国计算机等级考试二级培训教材和自学用书。
作者简介
未来教育教学与研究中心,是一家专门从事教育产品策划、研发、销售的高新知识企业。专业研究等考19年,拥有着专业的教师团队,与电子工业、人民邮电、电子科技大学等多个大型国家出版社合作,每年累积为数万余名考生服务。
目录
第 1章 程序设计基础
1.1 程序设计的基本概念
1.1.1 C语言与运行环境
1.1.2 程序设计
1.2 算法
1.3 结构化程序设计
1.3.1 结构化程序设计
1.3.2 模块化程序设计
课后习题
第 2章 程序设计的初步知识
2.1 简单C程序的构成
2.2 标识符、常量和变量
2.2.1 标识符
2.2.2 常量
2.2.3 变量
2.3 整型数据
2.3.1 整型常量
2.3.2 整型变量
2.4 实型数据
2.4.1 实型常量
2.4.2 实型变量
2.5 算术表达式
2.5.1 基本的算术运算符
2.5.2 运算符的优先级和结合性
2.5.3 强制类型转换
2.6 赋值表达式
2.6.1 赋值运算符和赋值表达式
2.6.2 复合赋值表达式
2.6.3 赋值运算符中的类型转换
2.7 自加、自减和逗号运算符
2.7.1 自加、自减运算符
2.7.2 逗号运算符
课后习题
第 3章 顺序结构
3.1 赋值语句
3.2 数据输出
3.2.1 printf()函数的一般调用形式
3.2.2 printf()函数的输出格式说明
3.3 数据输入
3.3.1 scanf()函数的一般调用形式
3.3.2 scanf()函数的输入格式说明
课后习题
第 4章 选择结构
4.1 关系运算符和逻辑运算符
4.1.1 C语言的逻辑值
4.1.2 关系运算符和关系表达式
4.1.3 逻辑运算符和逻辑表达式
4.2 条件表达式构成的选择结构
4.3 if 语句和if语句构成的选择结构
4.3.1 if语句
4.3.2 含else子句的if语句
4.3.3 嵌套的if语句
4.3.4 在else子句中嵌套if语句
4.4 switch语句结构
4.4.1 switch语句
4.4.2 switch语句的执行过程
4.4.3 在switch语句体中使用break语句
课后习题
第 5章 循环结构
5.1 for语句和用for语句构成的循环结构
5.1.1 for语句构成的循环
5.1.2 for循环的执行过程
5.2 while语句和用while语句构成的
循环结构
5.2.1 while语句构成的循环
5.2.2 while循环的执行过程
5.3 do-while语句和用do-while语句
构成的循环结构
5.3.1 do-while语句构成的循环
5.3.2 do-while循环的执行过程
5.4 循环的嵌套
5.5 break语句和continue语句在循环中
的作用
5.5.1 break语句
5.5.2 continue语句
课后习题
第 6章 字符型数据
6.1 字符常量
6.1.1 字符型常量
6.1.2 转义字符
6.1.3 字符串常量
6.2 字符变量
6.3 字符的输入与输出
6.3.1 调用printf和scanf函数输出和
输入字符
6.3.2 调用putchar和getchar函数输入和
输出字符
课后习题
第 7章 函数
7.1 库函数
7.2 函数的定义和返回值
7.2.1 函数定义的语法
7.2.2 函数的返回值
7.3 函数调用
7.4 函数的说明
7.5 调用函数和被调用函数之间数据传递
课后习题
第 8章 指针
8.1 指针与指针变量
8.2 指针变量的定义和指针变量的类型
8.3 给指针变量赋值
8.3.1 给指针变量赋地址
8.3.2 给指针变量赋“空”值
8.4 对指针变量的操作
8.4.1 通过指针引用一个存储单元
8.4.2 移动指针
8.4.3 移动比较
8.5 函数之间地址值的传递
8.5.1 形参为指针变量时,实参和形参
之间的数据传递
8.5.2 通过传递地址值在被调用函数中
直接改变调用函数中变量的值
课后习题
第 9章 数组
9.1 一维数组的定义和一维素组元素的引用
9.1.1 一维数组的定义
9.1.2 一维数组元素的引用
9.1.3 一维数组的初始化
9.1.4 通过赋初值定义数组的大小
9.2 一维数组和指针
9.2.1 一维数组和数组元素的地址
9.2.2 通过数组的首地址引用数组
元素
9.2.3 通过指针引用一维素组元素
9.3 函数之间对一维数组和数组元素的引用
9.3.1 数组元素做实参
9.3.2 数组名作实参
9.3.3 数组元素地址作实参
9.3.4 函数的指针形参和函数体中
数组的区别
9.4 二维数组的定义和二维数组元素的
引用
9.4.1 二维数组的定义
9.4.2 二维数组元素的引用
9.4.3 二维数组初始化
9.4.4 通过赋值初始化定义二维
数组的大小
9.5 二维数组和指针
9.5.1 二维数组和数组元素的地址
9.5.2 通过地址引用二维数组元素
9.5.3通过建立一个指针数组引用
二维数组元素
9.5.4 通过建立一个行指针引用二维
数组元素
9.6 二维数组名和指针数组作为实参
9.6.1二维数组名作为实参时,和形参之
间的数据传递
9.6.2 指针数组作为实参时,和形参之间
的数据传递
课后习题
第 10章 字符串
10.1 用一维字符数组存放字符串
10.2 使指针指向一个字符串
10.2.1 通过赋初值的方式使指针指向
一个字符串
10.2.2 通过赋值运算使指针指向一个
字符串
10.2.3 用字符数组作为字符串和用指针
指向字符串之间的区别
10.3 字符串的输入和输出
10.3.1 输出字符串
10.3.2 输入字符串
10.4 字符串数组
10.5 用于字符串处理的函数
课后习题
第 11章 对函数的进一步讨论
11.1 传给main()函数的参数
11.2 通过实参向函数传递函数名或指向
函数的指针变量
11.3 函数的递归调用
课后习题
第 12章 C语言中用户标识符的
作用域和存储类
12.1 局部变量、全局变量和存储分类
12.1.1 用户标识符的作用域
12.1.2 局部变量、全局变量、存储
分类
12.2 局部变量及其作用域和生存期
12.2.1 auto变量
12.2.2 register变量
12.2.3 静态存储类和局部变量
12.3 全局变量及其作用域和生存期
12.3.1 全局变量的作用域和生存期
12.3.2 在同一编译单位内用extern说明
符扩展全局变量的作用域
12.3.3 在不同编译单位内用extern说明
符扩展全局变量的作用域
12.4 函数的存储分类
课后习题
第 13章 编译预处理和动态存储
分配
13.1 编译预处理
13.1.1 宏替换
13.1.2 文件包含
13.2 动态存储分配
课后习题
第 14章 结构体数据类型
14.1 用typedef说明一种类型名
14.2 结构体类型
14.2.1 结构体类型的说明
14.2.2 结构体类型的变量、数组和指针
变量的定义
14.2.3 结构体变量、数组初始化
14.2.4 引用结构体变量中的数据
14.2.5 函数之间结构体变量的数据传递
14.2.6 利用结构体变量构成链表
14.3 共用体
14.3.1 共用体类型的定义
14.3.2 共用体变量的引用
课后习题
第 15章 位运算
15.1 位运算符
15.2 位运算符的运算功能
课后习题
第 16章 文件
16.1 C语言文件的概念
16.2 文件指针
16.3 文件打开
16.4 文件关闭
16.5 调用fgetc()和fputc()进行输入和
输出
16.6 判断文件结束函数feof
16.7 fscanf()函数和fprint()函数
16.8 fgets()函数和fputs()函数
16.9 fread()函数和fwrite()函数
16.10 文件定位函数
课后习题
附录
附录A全国计算机等级考试二级C语言
考试大纲(2013年版)
附录B课后习题参考答案
第1章程序设计基础 全国计算机等级考试教程——二级C语言程序设计
精彩书摘
C语言是一种当前应用广泛的通用计算机编程语言,是一种程序设计的工具。它的主要特点是语言简洁、使用方便灵活、运算符丰富、表达能力强、可进行结构化程序设计、可以直接操作计算机硬件、可移植性好、生成目标代码效率高等。在学习C语言之前,我们先了解一些关于程序和程序设计的知识。
1.1 程序设计的基本概念
当今时代计算机技术飞速发展,计算机已经广泛应用于社会生活的各个领域,称为大众化的现代工具。但是不熟悉计算机的人会认为它很神秘,其实,计算机不过是一种具有内部存储能力、由程序自动控制的电子设备。一个完整的计算机系统由硬件系统和软件系统两大部分组成。如果把一台计算机比作人,那么硬件相当于人的肢体,软件相当于人的思想、精神。如果人没有思想,充其量也只是一个“植物人”,同理,计算机没有软件,就如同一堆废铁,毫无用处。所以软件对计算机是很重要的, C语言就是用来编写计算机软件的工具。
1.1.1 C语言和运行环境
我们先了解一下关于程序设计语言的发展过程,按照程序语言的发展史来划分,程序设计语言可以分为3个发展阶段:机器语言、汇编语言和高级语言,C语言属于高级语言。
机器语言是直接面向机器的语言,所有语句都是由二进制0、1代码指令构成,优点是计算机可以直接执行,效率高;缺点是机器语言程序难写、难修改、难维护,编程效率低。
汇编语言是机器指令的符号化,即用符号来代替二进制代码指令,与机器语言相比,汇编语言更接近人类的自然语言,优点也是效率较高,但是同样难学、难用、难维护。
高级语言之所以称为高级语言,是因为高级语言的语句和人类的自然语句比较接近,越接近人类自然语言就越高级。C语言属于高级语言的一种, 语句和英语比较接近。在C语言中除了一些语言关键字之外,还包含大量的数学运算符号,也可以称C语言为数学语言。
为了更好地学习C语言,我们首先需要掌握如何编译运行一个C语言源程序。一个C语言源程序编写好了,并不能马上就控制计算机工作,前面我们提到过,计算机可直接运行的是二进制代码,即机器语言,所以必须对C语言的源程序(文件后缀名为.c)进行编译,生成能被计算机处理的二进制代码文件的目标文件(后缀名为.obj)。编译通过之后,还需要对二进制代码的目标文件和其他相关的系统函数进行链接,构成可执行文件(Windows操作系统下文件后缀名为.exe),这样才能被计算机执行
……
前言/序言
C语言程序设计从入门到精通:掌握核心技能,迎接计算时代 一、 为什么选择C语言? 在日新月异的信息技术浪潮中,C语言依然占据着举足轻重的地位。作为一种高效、灵活且功能强大的编程语言,C语言以其接近硬件的特性,成为了操作系统、嵌入式系统、高性能计算、游戏开发等众多关键领域的基础。掌握C语言,不仅是开启编程之旅的坚实一步,更是深入理解计算机工作原理、解决复杂工程问题的必备利器。无论你是初涉编程的新手,还是希望深化技术功底的在校学生、职场人士,抑或是对计算机科学充满好奇的学习者,本书都将是你探索C语言世界的最佳向导。 二、 本书亮点概览:系统、深入、实战 本书并非一本枯燥的语法罗列手册,而是一套经过精心设计、循序渐进的学习体系。我们致力于帮助读者建立起扎实的C语言理论基础,并能熟练运用所学知识解决实际问题。 1. 体系化知识构建: 我们将C语言的知识点按照逻辑关系和学习难度进行严谨的组织。从最基础的程序结构、数据类型、运算符,逐步深入到流程控制、函数、数组、指针,再到结构体、文件操作、预处理命令等核心概念。每一章节都承接上一章节的内容,确保学习的连贯性和深度。 2. 清晰易懂的讲解: 复杂的技术概念,在我们这里将被化繁为简。我们摒弃晦涩难懂的术语,采用通俗易懂的语言,辅以大量的比喻和类比,帮助初学者快速理解抽象的概念。每一个知识点都配有详实的文字解释,力求让每一个读者都能“看得懂”。 3. 丰富的示例代码: 理论的学习离不开实践的检验。本书提供了海量、高质量的示例代码,覆盖了各个知识点。这些代码不仅是概念的直观体现,更是学习者动手实践的起点。我们鼓励读者模仿、修改、运行这些代码,从中体会编程的乐趣,掌握代码的编写技巧。 4. 详尽的习题与练习: 为了巩固学习效果,本书在每章结束后都精心设计了不同难度和类型的习题。这些习题涵盖了概念理解、代码编写、问题分析等多个层面,能够帮助读者检验自己的掌握程度,发现薄弱环节,并提供有针对性的练习机会。 5. 深入的原理剖析: 我们不仅仅停留在“如何做”,更注重“为什么”。对于一些关键的概念,例如指针的本质、内存管理、函数调用机制等,本书都会进行深入的原理剖析,帮助读者理解C语言的底层运作方式,从而写出更健壮、更高效的代码。 6. 实战项目导向: 学习编程的最终目的是解决实际问题。本书在知识讲解过程中,穿插了多个小型实战项目,例如计算器、简单的文本编辑器、学生管理系统等。通过完成这些项目,读者能够将所学知识融会贯通,体验完整的开发流程,培养解决实际问题的能力。 三、 学习路径与内容深度解析 本书的学习内容被划分为以下几个阶段,旨在引导读者逐步攀登C语言的知识高峰: 第一部分: C语言的基石——初识程序世界 第一章 C语言概述: 介绍C语言的历史、特点、应用领域,以及如何搭建开发环境,让你对C语言有一个宏观的认识,并能成功编写并运行你的第一个“Hello, World!”程序。 第二章 数据类型与变量: 深入讲解C语言提供的各种基本数据类型(整型、浮点型、字符型等),理解变量的声明、初始化和使用,学习常量和标识符的规则,为后续的程序设计打下坚实基础。 第三章 运算符与表达式: 掌握算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等,理解运算符的优先级和结合性,学习如何构建复杂的表达式,实现数据的运算与逻辑判断。 第二部分: 程序控制的脉络——流程与分支 第四章 顺序结构与分支结构: 学习`if`、`else if`、`else`语句,掌握多路分支的选择,理解`switch`语句的用法,实现程序根据不同条件执行不同分支逻辑。 第五章 循环结构: 深入掌握`while`、`do-while`、`for`循环,学习如何使用`break`和`continue`控制循环流程,实现重复性任务的自动化处理,并了解循环嵌套的应用。 第三部分: 构建模块化程序——函数与数组 第六章 函数: 理解函数的定义、声明、调用,学习参数传递(值传递和引用传递),掌握函数的返回值,了解函数的作用域和生命周期,学习递归函数的概念和应用,这是构建大型程序的关键。 第七章 数组: 学习一维数组和多维数组的声明、初始化和访问,掌握数组与循环的结合应用,理解数组在存储批量数据时的重要作用,并学习如何通过数组实现数据的排序、查找等基本操作。 第四部分: C语言的灵魂——指针与内存 第八章 指针: 这是C语言学习中最具挑战但也最核心的部分。我们将详细讲解指针变量的声明、赋值、解引用,理解指针与数组、字符串的关系,学习指针运算,以及如何使用指针访问和修改内存。 第九章 指针进阶与动态内存分配: 进一步探讨指针数组、指向指针的指针、函数指针等高级概念。学习`malloc`、`calloc`、`realloc`、`free`等动态内存管理函数,理解内存的申请与释放,掌握动态数据结构的设计基础。 第五部分: 复杂数据结构与数据处理 第十章 结构体与共用体: 学习如何定义和使用结构体,将不同类型的数据组合成一个整体,理解结构体变量的访问。掌握共用体的概念及其应用场景。 第十一章 字符串处理: 深入学习C语言字符串的特点,掌握常用的字符串处理函数(如`strcpy`、`strcat`、`strlen`、`strcmp`等),学习如何进行字符串的输入、输出、查找和替换。 第十二章 文件操作: 学习文件的打开、关闭、读写操作,掌握文本文件和二进制文件的处理方法,学习缓冲文件系统和非缓冲文件系统,实现数据的持久化存储与读取。 第六部分: 进阶话题与实践 第十三章 预处理命令: 了解`include`、`define`、`ifdef`等预处理命令的作用,学习宏定义、条件编译等技术,提升代码的灵活性和可维护性。 第十四章 位运算与进制: 深入理解二进制、十进制、十六进制之间的转换,掌握位运算符的应用,了解其在底层编程、数据加密等领域的用途。 第十五章 综合实战案例: 通过一个或多个贯穿全书的综合性项目,例如一个简单的图书管理系统或通讯录管理系统,整合前面学习的各项知识点,让读者在实践中全面提升编程能力。 四、 谁适合阅读本书? 零基础初学者: 如果你对编程一无所知,渴望学习一门强大且实用的语言,本书将为你提供最清晰、最稳健的学习路径。 计算机专业学生: 作为计算机科学、软件工程等专业的学生,C语言是必修课程。本书的内容深度和广度将帮助你系统掌握C语言,为后续更高级的课程奠定基础。 希望提升技术能力的技术人员: 即使你已经掌握了其他编程语言,深入理解C语言也能帮助你更好地理解计算机底层原理,提升解决复杂问题的能力。 嵌入式开发爱好者: C语言在嵌入式领域应用广泛,本书为你提供了进入该领域所需的语言基础。 准备参加各类计算机等级考试的学习者: 本书的内容设计紧密贴合考试大纲,是备考二级C语言程序的理想教材。 五、 学习建议 1. 动手实践是关键: 阅读代码、理解概念固然重要,但更重要的是亲自动手编写、运行、调试代码。书中提供的每一个示例,每一个练习,都请务必独立完成。 2. 勤于思考与提问: 在学习过程中,遇到不理解的地方,不要轻易放过。多思考,多查阅资料,如果仍然困惑,请大胆向老师、同学或在线社区提问。 3. 循序渐进,打牢基础: C语言的知识点之间联系紧密,特别是指针部分,需要建立在扎实的基础之上。切勿跳跃式学习,务必确保理解透彻每一个概念。 4. 养成良好的编程习惯: 注意代码的清晰度、可读性,编写注释,进行良好的变量命名,这些习惯将为你未来的编程生涯带来巨大的益处。 5. 拓展学习资源: 除了本书,还可以参考其他优秀的C语言书籍、在线教程、编程社区,多方学习,开阔视野。 结语 掌握C语言,就是掌握一门与计算机深度对话的语言。它为你打开了通往更广阔计算世界的大门。本书希望成为你在这条学习道路上最可靠的伙伴,引导你从零开始,逐步精通,最终能够自信地运用C语言解决现实世界中的各种挑战。让我们一起开启这段精彩的C语言探索之旅吧!