新書推薦:
《
战胜人格障碍
》
售價:HK$
66.7
《
逃不开的科技创新战争
》
售價:HK$
103.3
《
漫画三国一百年
》
售價:HK$
55.2
《
希腊文明3000年(古希腊的科学精神,成就了现代科学之源)
》
售價:HK$
82.8
《
粤行丛录(岭南史料笔记丛刊)
》
售價:HK$
80.2
《
岁月待人归:徐悲鸿自述人生艺术
》
售價:HK$
61.4
《
女人的中国医疗史:汉唐之间的健康照顾与性别
》
售價:HK$
103.8
《
资治通鉴熊逸版:第四辑
》
售價:HK$
470.8
編輯推薦:
循序渐进:基础à进阶à实战
科学编排:基本语法à典型实例à编程练习à项目实战
学练结合:191个实例、1个项目案例、87个练习题
视频讲解:提供43小时多媒体教学视频
有问必答:提供QQ群、邮件和论坛答疑服务
超值DVD光盘,你值得拥有!
本书实例源代码
12小时配套教学视频
31小时进阶视频讲座
535个进阶实例源文件
“零点起飞学编程”其他图书推荐阅读:
《零点起飞学C语言》
《零点起飞学Java》
《零点起飞学C++》
《零点起飞学Visual C++》
《零点起飞学Visual Basic》
《零点起飞学C#》
《零点起飞学ASP.NET》
《零点起飞学PHP》
《零点起飞学HTML+CSS》
《零点起飞学JavaScript+jQuery》
《零点起飞学Java Web开发》
《零点起飞学Android开发》
《零点起飞学iPhone开发》
《零点起飞学Excel VBA》
《零点起飞学Linux C编程》
《零点起飞学SQL Server》
《零点起飞学MySQL》
《零点起飞学Oracle》
內容簡介:
本书结合大量实例,由浅入深、循序渐进地介绍了C语言程序设计。本书立足于C语言入门基础知识,对C语言的产生、C语言基础、如何将C语言应用于实际开发等内容进行了细致入微的讲解,这必将使每一个阅读本书的读者少走弯路,快速上手,建立用C语言进行程序设计的信心。本书特意提供了典型习题及教学PPT,以方便教学。另外,本书配备了大量配套教学视频,帮助读者更好地学习。这些视频和书中的实例源代码一起收录于本书的配书光盘中。
本书共14章,分3篇。第1篇详细介绍了如何在Visual Studio
2010下编译、调试及运行C语言程序,还重点介绍了C语言的各种基础知识,涵盖的内容有C语言概述、C语言数据及数据运算、C语言变量、选择结构、循环结构、数组、函数和指针等。第2篇C语言编程进阶介绍了扩展C语言的基本数据类型及数据结构、预编译指令、对外部数据——文件进行访问等内容。第3篇通过一个教务管理系统开发案例,带领读者体验实际的C语言项目开发,从而提升读者的实战水平。
本书适合C语言入门与提高人员阅读,也可作为大中专院校及职业院校C程序设计课程的教材。另外,本书也可供程序员和编程爱好者作为实际工作中的参考书籍。
關於作者:
本书作者
本书主要由康莉、杨国祥和南阳理工学院的项延铁编写。其中,第1~5章由康莉编写,第6~8章由杨国祥编写,第9~14章由项延铁编写。其他参与编写和资料整理的人员有毕梦飞、蔡成立、陈涛、陈晓莉、陈燕、崔栋栋、冯国良、高岱明、黄成、黄会、纪奎秀、江莹、靳华、李凌、李胜君、李雅娟、刘大林、刘惠萍、刘水珍、马月桂、闵智和、秦兰、汪文君、文龙、陈冠军、张昆。
目錄 :
第1篇 C语言编程基础
第1章 走进C语言( 教学视频:46分钟)
1.1 计算机程序设计语言
1.1.1 计算机程序设计语言的发展
1.1.2 C语言的由来
1.1.3 C语言的优势
1.2 计算机程序设计
1.2.1 什么是计算机程序设计
1.2.2 计算机程序设计中的算法
1.2.3 常见程序设计的3种基本结构
1.2.4 什么是结构化程序设计方法
1.3 C语言程序设计的特点
1.3.1 C语言程序设计的第一个实例
1.3.2 C语言程序设计的结构特点
1.3.3 C语言的标识符及关键字
1.4 编译、连接C语言程序
1.5 如何编译、运行C语言程序
1.5.1 使用Visual C++ 2010开发C语言程序
1.5.2 使用Visual C++ 2010编译C语言程序
1.6 小结
1.7 习题
第2章 C语言数据及数据运算( 教学视频:46分钟)
2.1 C语言中的常量
2.1.1 定义C语言常量
2.1.2 什么是符号常量
2.2 C语言中的变量
2.2.1 C语言变量的定义
2.2.2 C语言变量的命名
2.2.3 C语言变量赋值
2.2.4 C语言变量的作用域
2.2.5 C语言变量的extern声明方式
2.3 C语言的数据类型
2.3.1 整型数据
2.3.2 实型数据
2.3.3 字符型数据
2.4 C语言的运算符及表达式
2.4.1 什么是运算符和表达式
2.4.2 赋值相关的运算符及表达式
2.4.3 算术运算相关的运算符及表达式
2.4.4 关系运算相关的运算符及表达式
2.4.5 逻辑运算相关的运算符及表达式
2.4.6 条件运算相关的运算符及表达式
2.4.7 逗号运算符及逗号表达式
2.4.8 C语言的运算符优先级
2.5 数据类型转换
2.5.1 不同数据类型间的隐式转换
2.5.2 不同数据类型间的显式转换
2.6 如何输入数据
2.6.1 一般数据的格式化输入
2.6.2 字符数据输入
2.7 如何输出数据
2.7.1 一般数据的格式化输出
2.7.2 字符数据的输出
2.8 数据运算及数据输入、输出程序实例
2.9 小结
2.10 本章习题
第3章 C语言的变量( 教学视频:44分钟)
3.1 变量的生存期和作用域
3.1.1 变量的生存期
3.1.2 变量的作用域
3.2 局部变量与全局变量
3.2.1 局部变量
3.2.2 全局变量
3.2.3 变量的屏蔽效果
3.3 变量的存储与变量的作用域
3.3.1 变量的存储
3.3.2 自动型变量
3.3.3 静态变量
3.3.4 外部变量
3.3.5 寄存器变量
3.3.6 变量存储类型
3.4 变量使用实例
3.5 小结
3.6 本章习题
第4章 C语言程序设计的选择结构( 教学视频:59分钟)
4.1 什么是选择结构
4.2 if实现的选择结构
4.2.1 if是什么
4.2.2 if结构的使用实例
4.3 if-else实现的选择结构
4.3.1 if-else是什么
4.3.2 if-else结构的使用实例
4.4 多重if实现的选择结构
4.4.1 什么是多重if
4.4.2 多重if结构的使用实例
4.5 if嵌套实现的选择结构
4.5.1 什么是if嵌套结构
4.5.2 else该和哪个if匹配
4.5.3 if嵌套结构的使用实例
4.6 switch实现的选择结构设计
4.6.1 什么是switch
4.6.2 使用switch应注意什么
4.6.3 switch是如何执行的
4.6.4 switch结构的使用实例
4.7 switch与多重if的异同
4.8 选择结构程序设计实例
4.9 小结
4.10 本章习题
第5章 C语言程序设计的循环结构( 教学视频:66分钟)
5.1 什么是循环结构
5.2 如何使用while循环
5.2.1 while循环的基本语法
5.2.2 while循环的使用实例
5.3 如何使用do-while循环
5.3.1 do-while循环的基本语法
5.3.2 do-while循环的使用实例
5.4 如何使用for循环
5.4.1 for循环的基本语法
5.4.2 使用for循环时应该注意什么
5.4.3 for循环使用实例
5.5 实现多重循环的嵌套
5.5.1 如何实现循环嵌套
5.5.2 循环嵌套使用实例
5.6 如何选择循环结构
5.7 打破循环的跳转语句
5.7.1 break跳转语句
5.7.2 continue跳转语句
5.7.3 goto跳转语句
5.8 循环结构程序设计实例
5.9 小结
5.10 本章习题
第6章 简单数据结构——数组( 教学视频:67分钟)
6.1 什么是数组
6.2 一维数组及其使用方法
6.2.1 如何定义一维数组
6.2.2 如何存储一维数组
6.2.3 如何初始化一维数组
6.2.4 如何引用一维数组的元素
6.2.5 一维数组使用实例
6.3 二维数组及其使用方法
6.3.1 如何定义二维数组
6.3.2 如何存储二维数组
6.3.3 如何初始化二维数组
6.3.4 如何引用二维数组的元素
6.3.5 二维数组使用实例
6.4 多维数组及其使用方法
6.4.1 如何定义多维数组
6.4.2 如何存储多维数组
6.4.3 如何初始化多维数组
6.4.4 如何引用多维数组的元素
6.5 字符数组与字符串
6.5.1 如何定义字符数组
6.5.2 如何初始化字符数组
6.5.3 如何引用字符数组
6.5.4 如何输入字符串
6.5.5 如何输出字符串
6.5.6 字符串处理的库函数
6.5.7 字符串使用实例
6.6 数组应用实例
6.7 小结
6.8 本章习题
第7章 初识C语言函数( 教学视频:38分钟)
7.1 什么是函数
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.4.3 调用函数时应注意些什么
7.4.4 函数的声明
7.5 如何在函数之间传递参数
7.5.1 用传值方式进行参数传递
7.5.2 用传地址方式进行参数传递
7.6 小结
7.7 本章习题
第8章 深入学习C语言函数( 教学视频:56分钟)
8.1 C语言的入口函数main
8.1.1 如何定义main函数
8.1.2 不同返回类型的main函数
8.1.3 main函数的参数
8.2 函数的数组类型参数
8.2.1 数组元素作为函数实参
8.2.2 数组名作为函数参数
8.2.3 多维数组作为函数参数
8.3 函数的嵌套调用
8.3.1 什么是函数的嵌套调用
8.3.2 函数嵌套调用实例
8.4 函数的递归调用
8.4.1 什么是函数的递归调用
8.4.2 函数递归调用实例
8.5 外部函数与内部函数
8.5.1 什么是外部函数
8.5.2 什么是内部函数
8.6 函数调用应用实例
8.7 小结
8.8 本章习题
第9章 指针( 教学视频:71分钟)
9.1 为何引入指针
9.1.1 以直接方式访问内存
9.1.2 以间接方式访问内存
9.2 如何定义及引用指针
9.2.1 什么是指针
9.2.2 如何定义指针变量
9.2.3 指针相关的运算符
9.2.4 指针的引用
9.3 指针相关的运算
9.3.1 指针相关的赋值运算
9.3.2 指针相关的算术运算
9.3.3 指针相关的关系运算
9.4 数组与指针
9.4.1 数组元素的指针
9.4.2 以指针方式引用数组元素
9.4.3 数组指针作为函数参数
9.4.4 指向多维数组的指针变量
9.5 指针类型数组
9.5.1 什么是指针数组
9.5.2 指针数组使用实例
9.6 指针与字符串
9.6.1 指向字符的指针
9.6.2 字符指针使用实例
9.6.3 函数的字符串指针类型参数
9.6.4 字符串指针和字符数组的异同
9.7 函数与指针
9.7.1 函数指针
9.7.2 函数指针作为函数的参数
9.8 指针的指针
9.8.1 如何定义指针的指针
9.8.2 如何使用指针的指针
9.9 指针应用实例
9.10 小结
9.11 本章习题
第2篇 C语言编程进阶
第10章 构造数据类型及其应用( 教学视频:61分钟)
10.1 结构体数据类型
10.1.1 什么是结构体
10.1.2 如何定义结构体
10.2 结构体类型变量
10.2.1 如何定义结构体变量
10.2.2 如何引用结构体变量
10.2.3 如何初始化结构体变量
10.3 结构体数组
10.3.1 如何定义结构体数组
10.3.2 如何初始化结构体数组
10.3.3 如何引用结构体数组
10.4 结构体指针
10.4.1 结构体类型变量的指针
10.4.2 结构体类型数组指针
10.5 结构体变量与函数
10.5.1 结构体变量作为函数参数
10.5.2 结构体变量作函数的返回值
10.6 内存的动态存储分配技术
10.6.1 内存的动态存储分配
10.6.2 链表
10.6.3 动态存储分配函数
10.6.4 创建链表
10.6.5 查询链表
10.6.6 链表结点的插入
10.6.7 链表结点的删除
10.7 结构体应用实例
10.8 共用体
10.8.1 什么是共用体
10.8.2 如何声明共用体
10.8.3 如何引用共用体变量成员
10.8.4 共用体的使用注意事项
10.9 枚举
10.9.1 如何定义枚举类型
10.9.2 如何声明枚举类型变量
10.9.3 如何引用枚举类型变量
10.9.4 枚举类型的实用注意事项
10.10 自定义类型
10.11 小结
10.12 本章习题
第11章 C语言的最小数据单位——位( 教学视频:34分钟)
11.1 位运算基础
11.1.1 位与字节
11.1.2 原码
11.1.3 反码
11.1.4 补码
11.2 位运算
11.2.1 按位与运算
11.2.2 按位或运算
11.2.3 按位异或运算
11.2.4 按位取反运算
11.2.5 左移运算
11.2.6 右移运算
11.3 位运算实例
11.3.1 取一个二进制整数最右端第m位开始的n位
11.3.2 输出正整数的二进制形式
11.4 位段
11.4.1 位段基础知识
11.4.2 位段的引用
11.5 小结
11.6 本章习题
第12章 预处理( 教学视频:35分钟)
12.1 文件包含
12.1.1 文件包含宏基础
12.1.2 如何实用文件包含宏
12.1.3 文件包含宏的使用注意事项
12.2 宏定义
12.2.1 定义符号常量
12.2.2 定义不带参数
12.2.3 定义带参数的宏
12.2.4 带参数的宏注意事项
12.2.5 带参数的宏与函数的区别
12.2.6 宏定义的使用注意事项
12.3 条件编译
12.3.1 #ifdef形式的条件编译
12.3.2 #ifndef形式的条件编译
12.3.3 #if形式的条件编译
12.4 小结
12.5 本章习题
第13章 文件操作( 教学视频:48分钟)
13.1 文件操作基础
13.1.1 文件基础知识
13.1.2 文件指针
13.1.3 文件处理步骤
13.2 文件的打开和关闭
13.2.1 文件的打开
13.2.2 文件的关闭
13.3 文件的读写
13.3.1 字符的输入、输出
13.3.2 字符串的输入、输出
13.3.3 格式化数据的输入、输出文件
13.3.4 数据块的输入、输出文件
13.3.5 文件状态检查
13.4 文件定位
13.4.1 移动位置指针到文件头
13.4.2 随机移动文件位置指针
13.5 小结
13.6 本章习题
第3篇 实 例 篇
第14章 教务管理系统( 教学视频:55分钟)
14.1 教务管理系统主要数据结构设计
14.1.1 分析数据库中的表
14.1.2 数据库功能模块划分
14.1.3 需要的内存文件与头文件
14.2 程序界面设计
14.3 各个模块的实现
14.3.1 学生记录文件建立
14.3.2 学生成绩记录的录入
14.3.3 计算本学期课程平均成绩
14.3.4 成绩排序
14.3.5 分类统计成绩分布情况
14.3.6 成绩的输出
14.3.7 学生记录的保存
14.3.8 学生的查找操作
14.3.9 学生记录的追加
14.3.10 删除数据库中指定的学生记录
14.3.11 学生数据的修改
14.3.12 课程信息表的建立
14.3.13 安排课程的授课顺序
14.3.14 安排教学计划
14.3.15 教务管理系统实现
14.4 小结
內容試閱 :
第3章
C语言的变量
在第2章中已经对C语言变量的声明、定义及初始化进行了介绍,并简单介绍了C语言变量的作用域,本章将对变量的存储方式进行详细的介绍,不同存储方式的变量有不同的生命期,作用域也各不相同。通过对C语言变量存储方式的介绍,使更加深入的了解C语言变量的作用域的工作原理。
本章讲述的知识点包括:
* C语言变量的生存期和作用域;
* C语言局部变量与全局变量;
* C语言变量的存储方式。
3.1 变量的生存期和作用域
在C语言程序设计中,变量具有两个属性,即生存期和作用域。在程序执行时,所有的变量都有有限的生存期。它们从被声明的那一刻起存在,并在某一刻消失,最迟在程序结束时消失。变量的作用域决定了程序中的哪些语句可以使用它,换句话说,就是变量在程序其他部分的可见性。通常,变量的作用域都是通过它在程序中的位置隐式说明的。本节将详细介绍变量的生存期和作用域。
3.1.1 变量的生存期
变量可以在某特定的时刻被创建,或在不再需要时被删除。在创建和删除之间所经过的时间,被称为变量的生存期。变量只有在生存期中才被分配(占用)内存,也就是说,只要变量存在,在变量中存储的值就不会丢失。当变量被删除之后,它所占用的内存单元被标记为空闲,供创建其他变量时使用,这保证了内存空间的有效使用。
在C语言中,变量的生存期有两种:全局生存期和动态生存期。
1.全局生存期
全局生存期指变量在程序运行一开始就被建立,而在程序运行结束后才从内存中删除。具有全程生存期的变量是全局变量和静态变量,具有全局生存期的变量存储在程序的静态数据存储区中。例如:
static int a;
具有全局生存期的变量在定义时如有初始化,则初始化在程序刚开始运行建立静态数据区时会被执行一次,以后再也不会执行初始化操作。
?注意:具有全局生存期的变量在定义时如果没有初始化,则初值自动为0(上例中的a被自动赋值为0)。
2.动态生存期
变量在程序运行过程中,因需要使用才建立,而使用结束就被删除。具有动态生存期的变量有局部自动变量和寄存器变量,具有动态生存期的变量存储在程序的动态数据区中。
void f
{
…
int a=0;
…
}
对于复合语句中定义的auto型的局部变量,每当程序运行至该语句时,就会在动态数据区建立这些局部变量的存储空间,而一旦程序流程离开该复合语句时,该复合语句中的局部变量将被系统从内存中删除。例如:
forint i=1,i10,i++
{
int a=0;
….
}
具有动态生存期的变量未初始化时,初值为一随机数(一般动态生存期的变量在定义的时候同时被初始化)。动态生存期的变量在定义时如有初始化,则每当程序创建该变量时都会执行初始化。
下面举例说明变量的生存期在程序中的体现。
【例3-1】使用for循环连续打印变量值,目的是为了说明全程生存期和动态生存期的区别。
代码3-1 全程生存期和动态生存期的体现
01 #include
02 void fun
03 {
04 int a =0; 自动局部变量a
05 static int c; 静态局部变量c
06 a++; a执行自加操作
07 c++; c执行自加操作
08 printf"%d,%d,",a,c; 打印a和c的值
09 }
10 int main
11 {
12 int i;
13 fori=1;i=4;i++ 连续4次调用函数fun
14 fun;
15 return 0;
16 }
运行结果如下:
1,1,1,2,1,3,1,4
代码3-1中,由于a为动态生存期变量,所以每次调用函数fun时都要进行初始化,故每次输出都是1。而c为全局生存期变量,所以只是在第一次调用函数fun时进行初始化,在接下来对函数fun的调用中,c的值为上次函数结束时的值。
?注意:除了上述两种生存期变量之外,还有一种变量,它可以随时创建、随时删除。创建和删除是程序员用内存操作函数进行的,在介绍指针时将对这种变量进行
介绍。
3.1.2 变量的作用域
变量的作用域是变量的有效范围或者变量在程序中的可见性。变量定义的位置决定了变量的作用域。在C语言中,变量的作用域包括局部作用域、全局作用域和文件作用域
3种。
1.全局作用域
对于具有全局作用域的变量,可以在程序的任何位置访问它们。当一个变量是在所有函数的外部声明,也就是在程序的开头声明时,那么这个变量就是全局变量。例如:
int a;
void f1
{
…
a++;
…
}
int main
{
…
f1;
printf"%d",a;
…
}
在上面的例子中,由于整型变量a定义在main函数和f1函数之前,因此在函数main和f1函数中都可以访问它。
2.局部作用域
变量在复合语句内部或者函数内部声明,无法被复合语句外或者其他函数的代码所访问。例如:
int main
{
…
int a;
…
{
int b;
}
}
在上面的例子中,整型变量a在主函数内声明,因此主函数之外的代码都无法访问。整型变量b在主函数内的复合语句中声明,在复合语句外的代码无法访问。
3.文件作用域
变量仅在声明它的源代码文件中可见,一般用static修饰符指定变量具有文件作用域。例如:
^