新書推薦:
《
街头健身训练指南
》
售價:NT$
1214.0
《
留学早规划
》
售價:NT$
347.0
《
文化的演化:民众动机正在重塑世界
》
售價:NT$
403.0
《
布鲁克林有棵树(孩子喜欢的阅读经典读本 基于真实生活的全球经典成长小说 走出成长困境 追逐梦想 人生励志 自我塑造小说)
》
售價:NT$
347.0
《
构建未来教育图景:实践以学生为中心的育人模式
》
售價:NT$
398.0
《
中考热点作家孙道荣2024年散文精选集三册
》
售價:NT$
581.0
《
全球城市案例研究2023:基于网络的合作与竞争国际经验借鉴
》
售價:NT$
908.0
《
引爆:炸药、硝酸盐和现代世界的形成
》
售價:NT$
388.0
編輯推薦:
1.内容全面,讲解详细 2.语言通俗,图表丰富 3.层次清晰,结构合理 4.实例丰富、典型,深入剖析讲解5.实用性强,延伸知识
內容簡介:
本书从最基本的C语言概念入手,由浅入深,综合典型的实例,引导初学者由浅入深地掌握C语言知识。全书共17章。其中,第1~6章是入门篇,包括C语言概述和Visual Studio 2008开发工具的介绍,数据类型,运算符与表达式,顺序结构、选择结构和循环结构程序设计等内容。第7~13章是提高篇,包括数组、函数、指针、预处理、结构体和联合体、链表与文件等内容。第14~17章是技术篇,包括常用算法、网络编程、综合应用案例──图书管理系统和C语言调试技术等内容。本书内容全面,不仅涵盖了C语言的基本语法与程序设计知识,还较为深入介绍了相关常用算法知识和实用案例、调试技术。本书在讲解知识的同时,指出了编程时一些应注意的地方和易犯的错误,给出了不少关于C语言方面的调试经验。全书案例丰富,讲解非常细致,语言通俗易懂,所有实例代码均在Visual Studio 2008开发环境下运行通过。本书配套资源:PPT、源代码。技术支持QQ群:2345500678。
關於作者:
陈锐,软件设计师,研究兴趣和方向:人机交互、自然语言处理、数据结构与算法,熟悉CC++、VC++、Visual Basic等开发语言和工具。在中文核心期刊论文多篇,已出版图书有:《零基础学数据结构》、《最新CC++函数与算法速查速用大辞典》、《CC++数据结构与算法速学速用大辞典》、《C语言入门与提高》、《Visual Basic多功能教材》等,不少作品已经多次再版或重印。
目錄 :
第1章 C语言的前世今生1
1.1 C语言的前世今生1
1.1.1 计算机语言的发展阶段1
1.1.2 C语言的产生3
1.2 为什么要选择C语言4
1.2.1 选择C语言的好处4
1.2.2 C语言的特点5
1.2.3 如何学好C语言6
1.3 第一个C语言程序7
1.4 小结8
习题9
第2章 C程序开发步骤及开发环境10
2.1 C程序的开发步骤10
2.2 Visual Studio 2008开发环境介绍11
2.2.1 使用Visual Studio 2008
新建项目11
2.2.2 在Visual Studio 2008的项目中
新建程序文件13
2.2.3 使用Visual Studio 2008开发
C语言程序14
2.3 小结16
习题16
第3章 基本数据类型17
3.1 另一个简单的C语言程序17
3.2 C语言中的数据类型19
3.3 变量与常量21
3.3.1 变量21
3.3.2 常量23
3.4 整型变量24
3.4.1 整型变量的定义24
3.4.2 整型变量占用的字节数与
表示范围25
3.4.3 整型变量的存储26
3.4.4 整型变量的赋值27
3.4.5 一个简单的C程序——输出
整型变量的值27
3.5 实型变量28
3.5.1 实型变量的定义与赋值28
3.5.2 实型变量的表示范围28
3.5.3 一个简单的C程序——输出
实型变量的值28
3.6 字符型变量29
3.6.1 字符型变量的定义与赋值29
3.6.2 字符型数据的存储形式29
3.6.3 字符数据与字符串数据的
区别31
3.7 小结31
习题32
第4章 运算符与表达式33
4.1 常见运算符初识33
4.2 算术运算符与算术表达式34
4.2.1 +、-、*、、%——双目
运算符34
4.2.2 算术表达式34
4.2.3 多种类型的数据混合运算——
自动类型转换35
4.2.4 强制类型转换37
4.2.5 ++与--、+与- ——单目
运算符37
4.3 赋值运算符与赋值表达式39
4.3.1 直接赋值运算符与直接赋值
表达式39
4.3.2 赋值表达式中的类型转换40
4.3.3 复合算术赋值运算符与
表达式45
4.4 关系运算符与关系表达式46
4.4.1 关系运算符46
4.4.2 关系表达式46
4.5 逻辑运算符与逻辑表达式48
4.5.1 逻辑运算符48
4.5.2 逻辑表达式48
4.6 逗号运算符与逗号表达式50
4.6.1 逗号运算符50
4.6.2 逗号表达式50
4.6.3 逗号运算符应用举例51
4.7 小结52
习题52
第5章 结构化程序开发(一)54
5.1 算法及描述方法54
5.1.1 什么是算法54
5.1.2 伪码55
5.1.3 流程图56
5.2 控制结构57
5.2.1 什么是语句57
5.2.2 语句的分类57
5.2.3 顺序结构程序设计59
5.2.4 选择结构程序设计——
if选择结构64
5.2.5 选择结构程序设计——
switch选择结构72
5.2.6 条件运算符与条件表达式77
5.2.7 选择结构程序设计应用举例79
5.3 小结82
习题83
第6章 结构化程序设计(二)86
6.1 为什么要有循环结构86
6.1.1 如何重复输出100以内的
整数86
6.1.2 如何求连续的n个自然数
的和87
6.2 goto语句88
6.2.1 goto语句——无条件转移
语句88
6.2.2 goto语句构成的循环语句——
向前跳转88
6.3 while循环语句90
6.4 do-while循环语句92
6.5 for循环语句94
6.6 break语句和continue语句98
6.6.1 为什么要有break语句98
6.6.2 break语句98
6.6.3 为什么要有continue语句100
6.6.4 continue语句100
6.7 循环结构的嵌套102
6.8 循环结构程序设计应用举例106
6.9 小结110
习题110
第7章 数组114
7.1 为什么引入数组114
7.1.1 多变量的解决之路——
引入数组114
7.1.2 认识数组115
7.2 一维数组116
7.2.1 声明一维数组116
7.2.2 引用一维数组117
7.2.3 初始化一维数组的几种
方式118
7.2.4 一维数组应用举例118
7.3 二维数组124
7.3.1 为什么引入二维数组——
维度的出现124
7.3.2 声明二维数组127
7.3.3 引用二维数组127
7.3.4 初始化二维数组的几种
方式128
7.3.5 二维数组应用举例130
7.4 字符数组与字符串134
7.4.1 声明字符数组与初始化134
7.4.2 引用字符数组135
7.4.3 字符数组与字符串135
7.4.4 字符数组的输入与输出136
7.4.5 字符串的相关函数137
7.4.6 字符串应用举例141
7.5 小结145
习题145
第8章 函数150
8.1 函数初识与函数的分类150
8.1.1 为什么要有函数150
8.1.2 函数的分类151
8.2 函数的定义152
8.2.1 无参函数的定义152
8.2.2 有参函数的定义152
8.2.3 有参函数传统的定义方式153
8.3 函数的参数与函数返回值153
8.3.1 实际参数与形式参数154
8.3.2 函数返回值155
8.4 函数的调用156
8.4.1 函数的一般调用157
8.4.2 函数原型159
8.4.3 函数的嵌套调用161
8.5 函数的递归调用163
8.5.1 递归调用的定义164
8.5.2 递归调用应用举例164
8.6 数组作为函数的参数167
8.6.1 数组元素作为函数参数167
8.6.2 数组名作为函数参数169
8.6.3 多维数组名作为函数参数172
8.7 变量的作用域173
8.7.1 局部变量173
8.7.2 全局变量175
8.8 变量的存储类别178
8.8.1 自动变量178
8.8.2 静态变量178
8.8.3 寄存器变量180
8.8.4 外部变量180
8.9 内部函数与外部函数183
8.9.1 内部函数183
8.9.2 外部函数183
8.10 小结184
习题185
第9章 指针190
9.1 地址和指针190
9.1.1 什么是地址190
9.1.2 什么是指针——间接存取191
9.2 指针与变量192
9.2.1 定义指针变量192
9.2.2 引用指针变量193
9.2.3 指针变量作为函数参数196
9.3 指针与数组198
9.3.1 指向数组元素的指针与指向
数组的指针198
9.3.2 指向多维数组的指针变量201
9.3.3 数组名(指针)作为函数
参数205
9.3.4 指针数组212
9.3.5 二级指针213
9.4 指针与字符串214
9.4.1 字符串指针214
9.4.2 字符串指针作为函数参数215
9.4.3 字符指针数组217
9.4.4 指针数组作为main的参数218
9.5 指针与函数220
9.5.1 函数指针——指向函数的
指针220
9.5.2 函数指针作为函数参数221
9.5.3 指针函数——返回指针值的
函数224
9.5.4 void指针225
9.6 指针与const226
9.6.1 常量指针——指向常量的
指针226
9.6.2 指针常量——指针不可以
改变227
9.6.3 常量指针常量——指向常量的
指针常量227
9.7 小结228
习题229
第10章 预处理命令233
10.1 宏定义——#define233
10.1.1 不带参数的宏定义233
10.1.2 带参数的宏定义235
10.1.3 条件编译命令中的运算符——
#和##237
10.2 文件包含命令——#include238
10.2.1 文件包含命令的两种方式238
10.2.2 文件包含命令应用举例239
10.3 条件编译命令240
10.3.1 条件编译命令——#ifdef240
10.3.2 条件编译命令——#ifndef242
10.3.3 条件编译命令——#if242
10.4 小结243
习题243
第11章 结构体与联合体246
11.1 结构体246
11.1.1 为什么要有结构体246
11.1.2 定义结构体类型247
11.1.3 定义结构体变量248
11.1.4 引用结构体变量249
11.1.5 初始化结构体变量250
11.2 结构体数组252
11.2.1 定义结构体数组252
11.2.2 初始化结构体数组253
11.2.3 结构体数组应用举例254
11.3 指针与结构体256
11.3.1 指向结构体变量的指针257
11.3.2 指向结构体数组的指针258
11.3.3 结构体变量作为函数的
参数260
11.3.4 指向结构体变量的指针作为
函数的参数261
11.4 用typedef定义类型262
11.4.1 使用typedef定义类型262
11.4.2 typedef应用举例264
11.5 联合体265
11.5.1 定义联合体类型及变量265
11.5.2 引用联合体266
11.5.3 使用联合体应注意的问题266
11.5.4 联合体的应用举例267
11.6 枚举类型269
11.6.1 定义枚举类型及变量269
11.6.2 使用枚举类型的一些说明270
11.6.3 枚举类型应用举例270
11.7 小结272
习题273
第12章 链表276
12.1 链表的相关概念276
12.1.1 为什么要有链表——节省
内存单元,不用事先定义
空间大小276
12.1.2 什么是链表277
12.1.3 动态内存分配278
12.2 链表的操作279
12.2.1 创建链表279
12.2.2 输出链表281
12.2.3 链表的查找操作282
12.2.4 链表的插入操作282
12.2.5 链表的删除操作284
12.3 链表应用举例286
12.3.1 直接插入排序——使用链表
实现286
12.3.2 一元多项式的相加292
12.4 小结297
习题298
第13章 文件301
13.1 文件的相关概念301
13.1.1 为什么要有文件301
13.1.2 文件的分类302
13.1.3 文件类型指针302
13.2 打开文件与关闭文件303
13.2.1 打开文件303
13.2.2 关闭文件304
13.3 文件的读取与写入304
13.3.1 fgetc函数与fputc函数304
13.3.2 fread函数与fwrite函数306
13.3.3 fscanf函数与fprintf函数——
格式化读写函数309
13.3.4 fgets函数与fputs函数——
字符串读写函数312
13.4 文件的定位312
13.4.1 rewind函数——重置文件
指针312
13.4.2 fseek函数——定位文件
指针313
13.4.3 ftell函数——得到文件指
內容試閱 :
第2版前言
C语言是目前国内外使用最为广泛的程序设计语言之一。它具有功能丰富、表达能力强、使用方便灵活、执行效率高、可移植性好等优点,可用于几乎所有领域。C语言既具有高级语言的特点,也具有汇编语言的功能,具有很强的系统处理能力,可以直接对硬件和外部接口进行控制。C语言被广泛应用于系统软件和应用软件的开发。
使用C语言进行程序设计和软件开发,可以熟悉并理解计算机内部的工作原理,对于深入学习计算机技术是大有裨益的。C语言是计算机科学与技术专业的基础课程,它是今后学习数据结构与算法的基础,也为以后选择Visual C或Java软件开发奠定了基础。因此,只有熟练地掌握了C语言,才能更加深入地掌握计算机技术。
C语言是一门实践性很强的课程,要想真正掌握C语言,除了学习C语言课程,大量阅读C语言程序之外,还要多上机调试程序。只有自己亲自调试了程序,才能真正对程序代码进行深入理解,并能发现其中隐藏的错误,通过调试程序还可以提高自己的调试程序能力,从而成为一名真正的程序员。只有不断调试程序,才能真正对编程开发有所体会,即使对C语言已经比较熟悉,也难免会在调试中遇到一些问题,比如笔者完成0-1背包问题的程序代码编写后,运行程序却发现运行结果不对,于是又仔细阅读了程序,对程序的思想进行深入理解,并修改了程序,重新运行程序,却还是发现一个二维数组中的数据有问题,表面上看没有问题,就是数据不正确,最后单步逐条语句进行调试,马上就发现是数组越界了,将代码作修改后,重新运行终于得到了正确的结果。因此,笔者总结多年学习和调试C语言的经验,认为程序调试很重要,特别是对于初学者一定要尽量多上机调试程序。
有不少读者朋友对指针的使用存在疑惑,曾经有好几个学生学数据结构时问,为什么有时候要用二级指针?,他们的疑惑在于为什么要用二级指针作为函数的参数,而不用一级指针。说明有不少读者对指针的理解还不是很透彻,比如在主函数中创建一个指针,同时想通过另外一个函数去创建一个链表,于是希望在主函数中能使用这个已经创建的链表,但是又不想用return去返回链表的头指针,那么此时就需要使用二级指针作为函数的参数,是不是这个道理呢?二级指针的作用就在于此。其实笔者是想通过这些例子来说明对于许多读者来说,看的书太少,上机实践得更少,如果能够多看些算法方面的书,多上机调试程序,有任何疑惑就去上机调试一下,那么疑惑就会尽释,否则心理总存在疑惑,对问题理解得不够透彻。
本书共17章,其中第1~6章是入门篇,第7~13章是提高篇,第14~17章是技术篇。本书知识结构可用下图所示的思维导图来表示。
本书由陈锐、辽源职业技术学院的王慧博、西北大学的耿国华、南阳理工学院的赵娟编著,许昌学院的夏政伟、运城学院的张雷、山西水利职业技术学院的赵志华、西安财经学院的高妮、西北大学的高全力、郑州职业技术学院的邢金萍参编。
修订后本书特点
1.内容全面,讲解详细
本书不仅介绍了数据类型、结构化程序设计、数组、指针、结构体等,还介绍了链表、文件、常用算法、网络编程,接着给出了一个图书管理系统的综合案例,以加强C语言的综合实践能力的培养,最后还提供了C语言调试技术,针对具体的例子进行讲解,这些常见的错误也是笔者多年来遇到的问题,希望有助于提高大家的C语言调试能力。改版后,书中去掉了图形界面设计、键盘与鼠标操作、位操作等不常用的技术。
2.语言通俗,图表丰富
本书用非常通俗的语言,针对C语言中每个知识点,进行了详细的讲解,以便读者能快速理解并掌握每个知识点。C语言概念较多,知识点零碎,为便于读者学习,在概念出现之后都给出了相应的例子和图表进行详细讲解,每个知识点都配有案例,便于读者领会其含义。
3.层次清晰,结构合理
本书内容结构设计合理,按照章、节和小节进行划分,将每一小节作为一个知识点,这样的设计使重点更加突出,结构层次感强,使读者在学习中容易抓住重点,通过将概念与例子结合,对知识更加容易理解与消化。
4.实例丰富、典型,深入剖析讲解
本书案例丰富,每章的每一个知识点都有配套案例,全书大约160个案例,均有完整代码实现。本书在案例选择上非常有代表性,有的是考研题目,有的是程序员考试题目,这些题目很有技巧性,通过这些典型案例,可以提高读者程序设计的技巧,有助于熟练理解编程思想,对于以后学习数据结构、算法等内容很有好处。书中针对每一个程序都进行了详细的讲解,特别是对于关键代码行,都进行了深入的分析,最后给出了运行结果。
5.实用性强,延伸知识
除了介绍基本的语法知识外,本书还介绍了链表、常用算法技术、网络编程等知识,特别是常用算法涉及迭代、递归、分治、贪心等算法思想。本书最后以一个综合案例和程序调试技术作为结束内容。在内容的讲解上也渗透了一些程序调试技术知识,通过学习本书,真正使读者能熟练掌握C语言,并且熟练调试C语言程序。通过这些知识点的介绍,使读者能进一步理解计算机相关技术的实现原理,具有很强的引导性,也为今后的继续深入学习奠定了基础。
本书代码全部在Visual Studio 2008开发环境下运行通过。
适合的读者
●没有任何基础,准备学习C语言的初学者
●有一定C语言基础,想进一步掌握C语言的中高级读者
●大中专院校学生
●软件开发人员
●计算机相关的科研工作者
应该感谢的人
在本书出版的过程中,许多热心的读者朋友提出了改进意见,特别是puppypyb(网名)很认真地提供了具体的修改意见,感谢中国科学院大学的胡英鹏,中国科学技术大学的王启,华中科技大学的杨梨花,西安电子科技大学的杜坚,西安交通大学的郝昊天,华东师范大学的牛颖楠,南京航空航天大学的韩琦文,南京理工大学的邓裕彬,北京工业大学的潘姝妤,电子科技大学的丁亮,上海海事大学的左伟康,福州大学的李川,湘潭大学的王乾,天津职业技术师范大学的董春妹,桂林电子科技大学的曹礼,郑州大学的张杨、张冬冬,成都理工大学的张良,西华师范大学的刘富腾,衡水学院的杨帅,重庆电子工程职业学院的冯博,湖南女子学院的李奇,湖北汽车工业学院的李兴海,黄淮学院的于景波,九江学院的樊美林,信阳师范学院的周亚林,云南大学的袁宏磊,广东技术师范学院的欧阳镇,江苏省扬州中学的张佑杰,浙江工业大学的陈文邦,电子科技大学的吕鑫垚,北京邮电大学世纪学院的昂超,兴义民族师范学院的鲜一峰,新乡学院的方湘豫,西安航空职业技术学院的王少波,赶集网的康钦谋,济南趣维网络科技有限公司的刘晓倩,中国航空计算研究所的王泉,中兴通讯公司的杨柯,华为科技有限公司的卢春俊,浪潮集团的郭鹏,大唐电信的张天广,三星电子的欧小哲,腾讯科技(北京)有限公司的杨凡,云南昆船设计研究院的夏翔,此外还有很多网友也提出了宝贵建议,这里不再一一列举。
由于时间仓促,加上本人水平有限,书中难免会存在一些不足和错误,希望读者朋友通过邮箱vc-study@163.com来联系,也可通过QQ群(234500678)沟通交流。祝愿各位读者在阅读本书的过程中有一个愉快的体验。
编者