扫描二维码,下载安卓APP
下载安卓APP箭头
客服QQ
箭头给我发消息

客服QQ:2698585038

C语言其实很简单 张宁编著

综合评级:
★★★★★

定价:
¥59.00

作者:
张宁 编著

出版社:
清华大学出版社

出版日期:
2015年7月

页数:
390

字数:
631000

ISBN:
9787302397519

书籍介绍

  本书是为零基础的C语言初学者量身定做的,特别适合非计算机专业的读者自学C语言。本书尽量避免使用专业术语,利用大量贴近生活的实例,用通俗易懂的方式讲解C语言的基本概念和基本编程方法,并提供许多独特的小窍门、小技巧、小口诀等,使读者在轻松的环境中花费很少的时间就能掌握C语言,并应用自如。

  本书兼顾了全国计算机等级考试二级C语言程序设计考试大纲的相关要求,可以作为等级考试辅导教材和培训班教材使用。对于大、中专院校师生、各类C语言应试备考人员、广大C语言编程爱好者,都具有很好的学习参考价值。

目录

第1章 从这里爱上编程——程序设计和C语言概述 1

1.1 水面下的冰山——计算机程序和计算机语言 1

1.2 第一次亲密接触——纵览C语言 3

1.2.1 一窥程序之美——C语言程序的结构 3

1.2.2 循序渐进,快乐学习——语句的光和影 4

1.2.3 程序里的说明书——注释 6

1.2.4 免费翻译服务——编译和链接 8

1.3 先其利器——Visual C++ 6.0上机指导 10

1.4 天平称物问题——进制转换 15

1.4.1 这些进制是哪来的——二进制、八进制、十六进制 15

1.4.2 你还应知道这几招——不同进制之间的转换 15

第2章 色彩斑斓的积木——数据类型、运算符和表达式 21

2.1 标识符、常量和变量 21

2.1.1 给我起个名字吧——标识符 21

2.1.2 有一说一——常量 22

2.1.3 程序里的储物盒——变量 23

2.2 追根“数”源——细说数据类型 25

2.2.1 整型数据用C语言怎样说 25

2.2.2 实型数据用C语言怎样说 28

2.2.3 字符型数据用C语言怎样说 32

2.2.4 字符串型常量用C语言怎样说 36

2.3 诸算达人——运算符和表达式 39

2.3.1 再谈加减乘除——算术运算 39

2.3.2 走,给我进去!——赋值 45

2.3.3 加加和减减——自增、自减 48

2.3.4 神秘的倒数第一——逗号运算 50

2.4 位在我心中——位运算 52

2.4.1 按位与& 52

2.4.2 按位或 | 52

2.4.3 按位异或 ^ 53

2.4.4 按位求反 ~ 54

2.4.5 按位左移 << 54

2.4.6 按位右移 >> 54

2.4.7 位运算的复合赋值 55

第3章 一战到底——顺序结构 56

3.1 整装待发——C语言中的语句 56

3.2 别急,一个一个来——单个字符的输出与输入 57

3.2.1 拿好了钥匙进仓库——输出与输入概述 57

3.2.2 向屏幕开火——单个字符的输出 58

3.2.3 饭要一口一口地吃——单个字符的输入 59

3.3 更过瘾的输出与输入——格式输出与输入 62

3.3.1 我有私人警察——格式输出函数printf 62

3.3.2 我是快乐的快递员——格式输入函数scanf 68

3.4 常用系统数学函数 73

3.5 是不是有点专业级软件的意思了——顺序结构程序举例 74

第4章 程序也能跑捷径——选择结构 76

4.1 计算机的判断力——关系运算和逻辑运算 76

4.1.1 判断真假的符号——关系运算符和逻辑运算符 76

4.1.2 火眼金睛断真假——关系表达式和逻辑表达式 78

4.1.3 挑剔的“吗+否则”——条件运算 82

4.2 如果——if语句 83

4.2.1 教室停电就不上课了——if语句的基本形式 83

4.2.2 一朝天子一朝臣——if语句的完整形式 88

4.2.3 如果里的如果——if语句的嵌套 94

4.3 多路开关——switch语句 98

4.3.1 司令的锦囊——switch语句的一般形式 99

4.3.2 我爱读小说——switch语句的执行过程 100

4.4 goto去哪?想去哪就去哪!——goto语句 105

第5章 不必亲手愚公移山——循环结构 107

5.1 看好了情况再下手——while语句 107

5.2 先下手干了再说——do...while语句 110

5.3 我勤奋?我劳动?我光荣——for语句 112

5.3.1 按劳分配——for语句的基本形式 112

5.3.2 劳动者的工作模式——for语句的常见应用 114

5.3.3 有人接班我偷懒——表达式的变化 119

5.4 循环里的循环——循环的嵌套 122

5.5 埋头干活中的抬头看路——continue语句和break语句 125

5.5.1 来源于生活——continue语句和break语句概述 125

5.5.2 下一个上——continue语句 127

5.5.3 前方施工请绕行——break语句 129

5.6 轻车熟路——程序控制结构小结和综合举例 130

第6章 把平房升级为高楼大厦——数组 137

6.1 直线升级——一维数组 137

6.1.1 一维数组的定义和引用 137

6.1.2 一维数组的初始化(定义时赋初值) 144

6.1.3 一维数组的应用 147

6.2 找东西和整理东西的艺术——查找和排序 152

6.2.1 这个经常有——查找技术 152

6.2.2 混乱之治——排序技术 156

6.3 立体升级——二维数组 163

6.3.1 二维数组的定义和引用 163

6.3.2 二维数组在内存中的存储形式 164

6.3.3 二维数组的初始化(定义时赋初值) 164

6.3.4 二维数组可被看做是由一维数组组成的 169

第7章 蒙着面干活——函数 171

7.1 从讲故事开始——函数概述 171

7.2 该是学写多段文章的时候了——函数定义和调用 173

7.2.1 自己创造函数——函数的定义 173

7.2.2 把自己写的“段落”用起来——函数的调用 175

7.2.3 你歇着,我劳动——函数调用的过程 177

7.2.4 做好的菜端出来——函数的返回值 179

7.3 喂!听到了吗——函数的声明 185

7.3.1 函数声明的形式 186

7.3.2 函数声明的位置 187

7.4 函数的嵌套调用和递归调用 189

7.4.1 函数里的函数——函数的嵌套调用 189

7.4.2 克隆函数——函数的递归调用 190

7.5 变量的时空范围——变量的作用域及存储类别 196

7.5.1 空间范围——局部变量和全局变量 196

7.5.2 时间范围——变量的存储类别 202

7.5.3 时空统一——局部变量和全局变量的存储类别 206

7.6 给编译做点儿手脚——预编译处理 207

7.6.1 潜伏代号——宏定义 207

7.6.2 程序的自动复制粘贴——文件包含 211

7.6.3 早知当初,何必如此——条件编译 212

第8章 璀璨的星星——指针 213

8.1 内存里的门牌号——地址和指针的基本概念 213

8.2 别拿地址不当值——指针变量 214

8.2.1 找张字条记地址——定义指针变量 215

8.2.2 这可不是说我——指针变量的基类型 217

8.2.3 把地址记下来——为指针变量赋值 218

8.2.4 指针运算俩兄弟——两个运算符 220

8.3 原来咱俩是一个朋友圈的——数组与指针 223

8.3.1 下一站到哪了——指针变量的运算 223

8.3.2 我原来是指针变量——一维数组的指针 227

8.3.3 我是你的上级——二维数组的指针和行指针 232

8.3.4 来自星星的数组——指针数组和指针的指针 238

8.3.5 指针三家人——指针小结 242

8.4 有了地址也可以找我帮忙啊——函数与指针 244

8.4.1 地址给我,我来帮忙——指针变量做函数参数 244

8.4.2 吃葡萄不抓葡萄粒,抓住葡萄的把柄——数组做函数参数 249

8.4.3 指针私房菜——返回地址值的函数 256

8.4.4 函数遥控器——函数的指针 256

8.5 一两拨千斤——字符串的指针 259

8.5.1 字符串的存储 259

8.5.2 字符串的输出和输入 263

8.5.3 字符串处理技术 267

8.6 另类运行程序——main函数的参数 286

第9章 我的类型我做主——结构体与共用体 289

9.1 多功能收纳盒——结构体 289

9.1.1 绘制收纳盒设计图——定义结构体类型 289

9.1.2 收纳盒制作——使用结构体变量 290

9.1.3 一本通讯录——结构体类型的数组 294

9.1.4 结构体的弓箭手——结构指针变量 296

9.1.5 重口味与轻口味——结构体类型数据做函数参数 297

9.1.6 大收纳盒里套小收纳盒——结构体类型的嵌套 301

9.2 公路桥洞——共用体 302

9.3 给类型起个“绰号”——类型定义符typedef 304

9.4 内存空间的批发和零售——动态存储分配 306

9.5 电影院里的座次问题——链表 310

9.5.1 链表的建立和遍历 311

9.5.2 链表结点的插入和删除 317

9.5.3 链表的高级兄弟——高级链表简介 320

第10章 得文件者得天下——文件 322

10.1 一针hold住全文件——文件指针 322

10.1.1 与文件牵手——文件的打开 322

10.1.2 与文件分手——文件的关闭 326

10.1.3 文件操作流程 326

10.2 搬运流水线——文件的读写 327

10.2.1 手指和笔尖——文件位置指针 327

10.2.2 文本文件的读写 328

10.2.3 二进制文件的读写 332

10.3 这是手工活儿——文件的随机读写 337

第11章 编程的经验财富——算法与数据结构基础 345

11.1 “一招鲜”——算法 345

11.1.1 何谓算法 345

11.1.2 算法的控制结构 346

11.1.3 算法复杂度 346

11.2 数据结构概述 347

11.2.1 何谓数据结构 347

11.2.2 数据结构的类型 348

11.3 早出晚归的勤快人——栈(堆栈) 349

11.3.1 何谓栈(堆栈) 349

11.3.2 堆栈的基本运算 350

11.3.3 堆栈的逻辑结构和存储结构 350

11.3.4 堆栈的应用 351

11.4 先来后到——队列 352

11.4.1 何谓队列 352

11.4.2 队列的逻辑结构和存储结构 352

11.4.3 循环队列的基本运算 353

11.5 倒置的树——树与二叉树 354

11.5.1 树和树的基本概念 354

11.5.2 二叉树的基本概念 355

11.5.3 二叉树的存储结构 356

11.5.4 二叉树的遍历 356

  第12章 程林高手武功秘籍——软件开发基础 360

12.1 编程之道——程序设计方法 360

12.1.1 编程Style——程序设计风格 360

12.1.2 组装零件——结构化程序设计 361

12.1.3 这个feel,爽!——面向对象程序设计 361

12.2 不懂门道看热闹,看完咱也吊一吊——软件工程基础 364

12.2.1 何谓软件 364

12.2.2 软件生命周期 365

12.2.3 需求分析及其方法 366

12.2.4 软件设计及其方法 367

12.2.5 我是来找茬的——软件测试 369

12.2.6 谁来改正——程序的调试 371

12.3 信息时代是怎样炼成的——数据库和数据库设计初步 371

12.3.1 关系型数据库及相关概念 372

12.3.2 关系代数 374

12.3.3 数据库系统 378

12.3.4 数据库设计者眼里的世界——E-R模型 380

12.3.5 数据库设计 381

附录一 常用字符ASCII码对照表 383

附录二 C语言中的关键字 384

附录三 C语言运算符的优先级和结合性 385

索引 386

参考文献 391

前言

你是否以前尝试学习过C语言但又放弃了,或者是学习得一知半解,或者还是一位对C语言“一窍不通”的初学者?那么本书正适合你!

 

C语言功能强大,内容繁多,最容易让初学者摸不到“门”。因此,本书并不像大多专业C语言教科书那样“板起面孔教人”,不罗列知识点,不使用专业术语来云山雾罩地分析问题,而是引用大量贴近生活的实例,用通俗易懂的方式与读者交流。同时,本书还提供了许多独特的小窍门、小技巧、小口诀、顺口溜等,用句流行话说,那是比较“接地气”的。目的只有一个:让不是科班出身的零基础初学者在轻松的环境中花费很少的时间来掌握C语言。

 

“大凡是讲编程的书,一定不好啃。”这恐怕是许多初学者和正在应对各种C语言考试的读者在学习道路上困惑的心声。笔者这里要告诉读者的是,本书拥有3个最显著的特点,那就是——不用啃,不用啃,真的不用啃!笔者已在C语言教学一线从教多年,深谙初学者的学习弱点。为此,从初学者角度出发,本书精炼了C语言教学的内容,在保证知识体系完整的基础上省去了许多无关紧要又晦涩难懂的专业知识,使本书内容既不过于复杂,又能满足一般编程的实际需要,更主要的是可以满足大多C语言考试(如全国计算机等级考试)的要求。尤其针对从一线教学中搜集到的许多初学者普遍认为的学习困难和容易误解的知识点,本书都用通俗易懂的方式做了大量的分析解读,尽最大努力帮助读者理清头绪、澄清概念,将对知识的误解消弭于无形。因此通过本书来学习C语言,读者会很快抓住知识的“根”,因而能达到事半功倍的效果!

 

学好C语言,方法是关键。本书会教给读者许多独特、有效的学习方法,但在这里笔者希望再强调一点:不少读者像学习英语一样来学习C语言,他们花大把的时间用来背诵程序,认为解决一个问题只对应着一个固定的程序:“熟读唐诗三百首,不会吟诗也会吟”,我“熟背程序三百篇,焉能还得不会编?”,这是大错特错的!因为实际问题千变万化,背诵的程序和实际问题不可能完全一样,因此纵使背下上千个程序,遇到实际问题还是难以下手。程序的运行是动态的,解决同一个问题不同的人编出的程序也不会完全相同。因此,学习程序设计实际是学习程序设计的思路和方法,完全没有必要背程序。而初学者的这种错误认识,究根溯源还是因为“照本宣科”的教科书。很多C语言的教科书,其中的程序例子确实很像“英文小短文”,一个问题对应着一个程序,并且在静态的纸上讲出程序运行的动态过程着实不易。为此,本书为典型程序例子都配有内存空间及变量值变化的插图,这些插图是比较“另类”的,以清晰反映程序的运行过程和变量值的变化为初衷,而不是只截个图给出程序的运行结果。这使读者可以更多地关注程序运行的过程,而不是只关注程序运行的结果。在“运动”中掌握程序,这也算是本书与大众化教科书所不同的另一个特点吧。

 

如何能掌握程序设计的方法,在遇到五花八门的实际问题时都能应对自如,编出对应的程序?不要和我讲“融会贯通”“灵活运用”,那是颇有经验的编程高手们的事,而本书所关注的是初学者。为此,本书提供了许多编程“套路”,从典型的程序例子中理出“套路”,就能应对一大批的实际问题。学习武术有套路,没想到学习编程也有套路吧!用套路学习编程,让初学者迅速掌握编程方法,很快就能具有解决实际问题的编程能力,这也算是本书与大众化教科书所不同的又一个特点。

 

本书还抛砖引玉地介绍了数据结构、软件设计、数据库等最基本的知识,使读者在C语言学习之后向更高层次迈进。这些内容兼顾了全国计算机等级考试二级《公共基础》的相关考点。由于公共基础的考试内容对各类科目的二级考试都是相同的,不只局限于二级C语言,因此它们也可作为参加各类科目二级考试的读者备考《公共基础》的复习参考资料。

 

在本书最后还配有索引,“索引在手,遗忘不愁”。纵使有些学过的知识忘记了,也可以通过索引很快地找回来并复习巩固。本书索引既可以对C语言的基本概念进行速查,也可以对C语言的语句、关键字、运算符进行速查,还可以对基本的程序设计方法进行速查。

 

希望读者读过本书后,真正能把C语言用起来,让它成为我们身边的好朋友、好伙伴。倘能达到这个目的,笔者就感到心满意足了。