标题：21天学通C语言6.0
图书信息
书  名：21天学通C语言 
作　者：王正仲 等编著
出 版 社： 电子工业出版社
出版时间： 2009-1-1
页　数：416页
开　本： 16开
ISBN 9787121079023
分类： 图书 >> 计算机/程序设计>>C语言
定价：￥49.80元（含DVD光盘1张）
宣传语
        基础知识核心技术典型实例综合练习项目案例
        202个典型实例、1个项目案例、296个练习题
        一线开发人员全程贴心讲解，上手毫不费力
        21小时多媒体语音视频教学
        本书源代码 + 本书电子教案（PPT）
        1000余页编程参考宝典电子书（免费赠送）
内容简介
第一篇为C语言入门篇，该篇介绍了C语言程序的特点及编程的准备。第二篇为C语言基础篇，该篇介绍了常量与变量、整型、字符型与浮点型和表达式与操作符等内容。第三篇为结构编程篇，该篇通过两章的篇幅讲解了选择结构和循环结构两种常用的程序结构。第四篇为数组和字符串篇，该篇通过两章的篇幅分别讲解了C语言中数组和字符串的应用。第五篇为函数篇，该篇主要内容包括函数、函数与文件、函数中的变量和字符串处理函数等。第六篇为指针篇，该篇通过两章的篇幅介绍了指针的重要概念和应用。第七篇为高级应用篇，该篇内容主要包括堆管理、位运算操作符、结构体、共用体、枚举和位域，以及预处理等。第八篇为综合案例篇，该篇以图书管理系统开发为例，详细介绍了C语言和文件处理开发的过程。
本书附赠DVD光盘1张，内容包括超大容量手把手视频、电子教案（PPT）、编程参考宝典电子书、源代码及各章习题答案。
本书特点
千里之行，始于足下！
——老子
为什么要写这样一本书
C语言作为一门基础语言，从其诞生以来就受到编程爱好者的广泛关注并作为应用程序开发中的一把利器。同时，也被认为是最适合编程爱好者步入编程殿堂的一门编程语言。目前市面上关于学习C语言的书非常丰富，很多书都是大而全，但这类书籍很难做到从初学者的角度来讲解和介绍C语言的基本概念和编程技术。所以初学者阅读后都有种无从下手的感觉。
为了让初次接触C语言编程的爱好者能够快速而轻松地学会C语言编程，笔者总结自己学习C语言的经验，并结合多年的开发经验，编写了这本C语言基础教程。在本书中，笔者将从基本概念入手，循序渐进地将C语言编程技术展现在读者面前，让读者快速掌握C语言编程的基本概念及编程技术。
本书有何色
1．细致体贴的讲解
为了让读者更快地上手，本书特别设计了适合初学者的学习方式，用准确的语言总结概念#用直观的图示演示过程#用详细的注释解释代码#用形象的比方帮助记忆。
1)知识点介绍  准确、清晰是其显著特点，一般放在每一节开始位置，让零基础的读者了解相关概念，顺利入门。
2)范例  书中出现的完整实例，以章节顺序编号，便于检索和循序渐进地学习、实践，放在每节知识点介绍之后。
3)范例代码  与范例编号对应，层次清楚、语句简洁、注释丰富，体现了代码优美的原则，有利于读者养成良好的代码编写习惯。对于大段程序，均在每行代码前设定编号便于学习。
4)运行结果  对范例给出运行结果和对应图示，帮助读者更直观地理解范例代码。
5)代码解析  将范例代码中的关键代码行逐一解释，有助于读者掌握相关概念和知识。
6)综合练习  为了便于读者巩固所学内容，本书每章中均提供了综合练习，并给出了操作提示和结果，配合读者自己动手实践。
7)习题  每章最后提供专门的测试习题，供读者检验所学知识是否牢固掌握，题目的提示或答案放在光盘中。
8)贴心的提示  为了便于读者阅读，全书还穿插着一些技巧、提示等小贴士，体例约定如下：
—        提示：通常是一些贴心的提醒，让读者加深印象或提供建议，或者解决问题的方法。
—        注意：提出学习过程中需要特别注意的一些知识点和内容，或者相关信息。
—        警告：对操作不当或理解偏差将会造成的灾难性后果做警示，以加深读者印象。
经作者多年的培训和授课证明，以上讲解方式是最适合初学者学习的方式，读者按照这种方式，会非常轻松、顺利地掌握本书知识。
在本书中，大部分的内容是基于Turbo C 2.0编译器实现的，但是为了适应最新的C99语言标准，本书部分章节是基于Visual C++编译器实现的（两者主要的差别在于内存空间不同）。使用Visual C++编译器的章节是第3～5章，第8～9以及14～19章。
2．实用超值的DVD光盘
为了帮助读者比较直观地学习，本书附赠DVD光盘，内容包括多媒体视频、电子教案（PPT）、编程参考宝典电子书、各章习题答案和实例源代码等。
多媒体视频
赠送1GB，长达21小时手把手教学视频，讲解关键知识点界面操作和书中的一些综合练习题。作者亲自配音、演示，手把手教会读者使用。
电子教案（PPT）
本书可以作为高校相关课程的教材或课外辅导书，所以笔者特别为本书制作了电子教案（PPT），以方便老师教学使用。
编程参考宝典电子书
为方便广大读者学习，特别制作了编程开发参考电子书，供读者查阅和参考。
3．提供完善的技术支持
本书提供了论坛：http://www.rzchina.net，读者可以在上面提问交流。另外，论坛上还有一些小的教程、视频动画和各种技术文章，可帮助读者提高开发水平。
4．丰富的额外素材下载
相关的开发素材文件，在www.broadview.com.cn提供下载。
推荐的学习计划
本书作者在长期从事相关培训或教学实践过程中，归纳了最适合初学者的学习模式，并参考了多位专家的意见，为读者总结了合理的学习时间分配方式，
本书适合哪些读者阅读
本书非常适合以下人员阅读：
—        从未接触过C语言的自学人员；
—        有一定C语言基础，但还需要进一步学习的人员；
—        其他编程爱好者。
本书作者 
2009年1月
目  录
第一篇  C语言入门篇
第1章  C语言与程序概述（精彩视频：36分钟）        1
1.1  C语言历史        1
1.1.1  C语言的诞生        1
1.1.2  C语言的标准化        2
1.1.3  C语言的特点        2
1.1.4  Hello, world!        3
1.2  数据结构与算法        4
1.2.1  数据结构        4
1.2.2  算法简介        6
1.3  程序设计        7
1.3.1  结构化程序设计        7
1.3.2  三种基本结构        7
1.3.3  算法描述方法        9
1.4  综合练习        11
1.5  小结        13
1.6  习题        13
第2章  C语言编程准备（精彩视频：21分钟）        15
2.1  C程序介绍        15
2.1.1  两个简单的C程序        15
2.1.2  C程序的一些特点        17
2.1.3  标识符与关键字        17
2.1.4  编译、链接和运行        18
2.2  在不同的开发环境中开发C程序        19
2.2.1  Turbo C        19
2.2.2  Visual C++ 2005        21
2.2.3  GCC 3.2.2        23
2.3  综合练习        24
2.4  小结        24
2.5  习题        25
第二篇  C语言基础篇
第3章  常量与变量（精彩视频：39分钟）        26
3.1  常量与变量        26
3.1.1  常量        26
3.1.2  变量        27
3.2  变量的使用        28
3.2.1  声明变量        28
3.2.2  定义变量        29
3.2.3  使用extern声明变量        29
3.2.4  赋值和初始化        30
3.2.5  地址操作符和指针操作符        32
3.3  格式化输入输出        33
3.3.1  printf函数        33
3.3.2  scanf函数        34
3.4  数据类型        35
3.5  综合练习        35
3.6  小结        36
3.7  习题        37
第4章  整型、字符型与浮点型（精彩视频：89分钟）        38
4.1  整型数据类型        38
4.1.1  字节长度        38
4.1.2  修饰符signed和unsigned        39
4.1.3  整型常量        39
4.1.4  整型变量        40
4.1.5  整型的存储方式        41
4.1.6  整型的数值范围        42
4.2  字符型数据类型        45
4.2.1  字节长度        45
4.2.2  字符常量        46
4.2.3  字符变量        48
4.2.4  字符型的存储方式        49
4.3  浮点型数据类型        49
4.3.1  字节长度        49
4.3.2  浮点型常量        50
4.3.3  浮点型变量        50
4.3.4  浮点型的精度        50
4.3.5  浮点型的数值范围        51
4.3.6  浮点型的存储方式        53
4.4  使用typedef定义类型        55
4.4.1  typedef的标准形式        55
4.4.2  合理使用typedef        56
4.5  限定词const与volatile        57
4.5.1  使用const        57
4.5.2  使用volatile        58
4.6  综合练习        59
4.7  小结        60
4.8  习题        60
第5章  表达式与操作符（精彩视频：167分钟）        62
5.1  表达式和语句        62
5.1.1  表达式        62
5.1.2  语句        64
5.1.3  复合语句        64
5.1.4  C语言操作符        66
5.2  赋值操作符与赋值表达式        67
5.2.1  赋值操作符        67
5.2.2  赋值操作符的结合性        68
5.2.3  左值和右值        68
5.2.4  赋值表达式中的类型转换        69
5.2.5  类型转换操作符        71
5.3  运算操作符与运算表达式        72
5.3.1  运算操作符        72
5.3.2  符号操作符        74
5.3.3  优先级与结合性        75
5.3.4  数值运算中的类型转换        77
5.3.5  复合的赋值操作符        78
5.4  自增、自减操作符        80
5.4.1  自增操作符        80
5.4.2  自减操作符        82
5.4.3  优先级与结合性        83
5.4.4  词法分析：贪婪法        84
5.4.5  自增、自减操作符的副作用        86
5.5  关系操作符与关系表达式        87
5.5.1  使用关系操作符        87
5.5.2  关系表达式的值        89
5.5.3  优先级与结合性        90
5.6  逻辑操作符与逻辑表达式        91
5.6.1  使用逻辑操作符        91
5.6.2  逻辑表达式的值        92
5.6.3  优先级和结合性        93
5.6.4  化简逻辑表达式        94
5.7  逗号操作符与逗号表达式        94
5.7.1  使用逗号操作符        94
5.7.2  逗号表达式的值        95
5.8  操作符优先级和结合性        96
5.8.1  优先级和结合性        96
5.8.2  使用小括号        98
5.8.3  减少语句的副作用        99
5.9  综合练习        101
5.10  小结        102
5.11  习题        102
第三篇  结构编程篇
第6章  选择结构（精彩视频：66分钟）        104
6.1  if语句        104
6.1.1  使用if语句        104
6.1.2  else和if的配对使用        107
6.1.3  选择结构中的不平等分支        108
6.1.4  判断表达式中的＝与＝＝        109
6.2  switch语句        110
6.2.1  使用switch语句        111
6.2.2  break语句        111
6.2.3  else if语句和switch语句        114
6.2.4  switch中的标号        115
6.2.5  使用具名常量组成标号        116
6.3  条件操作符与条件表达式        118
6.3.1  使用条件操作符        118
6.3.2  条件表达式与if-else        118
6.3.3  条件表达式中的类型转换        119
6.3.4  条件表达式的嵌套        120
6.4  逻辑表达式的隐式选择        120
6.4.1  逻辑表达式的特点        120
6.4.2  隐式选择的作用        121
6.4.3  巧用隐式选择        122
6.5  综合练习        123
6.6  小结        124
6.7  习题        124
第7章  循环结构（精彩视频：86分钟）        126
7.1  for语句        126
7.1.1  使用for语句        126
7.1.2  for头中的三个表达式        126
7.1.3  for头中的逗号表达式        128
7.1.4  for语句的嵌套        129
7.1.5  for语句使用举例        129
7.2  while语句        131
7.2.1  使用while语句        131
7.2.2  while语句与for语句        132
7.2.3  while语句使用举例        133
7.3  do-while语句        135
7.3.1  使用do-while语句        135
7.3.2  do-while语句与while语句        135
7.3.3  do-while语句使用举例        136
7.4  continue语句与break语句        138
7.4.1  使用continue语句        138
7.4.2  continue语句与if语句        140
7.4.3  循环结构中的break语句        140
7.4.4  使用break语句终止多层循环        142
7.5  goto语句        143
7.5.1  goto语句的标准形式        143
7.5.2  搭配使用goto语句与if语句        144
7.5.3  慎用goto语句        145
7.6  基本结构的嵌套使用        147
7.6.1  if-while与while-if        147
7.6.2  使用选择结构包含循环结构        148
7.7  综合练习        149
7.8  小结        150
7.9  习题        150
第四篇  数组和字符串篇
第8章  数组（精彩视频：79分钟）        152
8.1  一维数组        152
8.1.1  定义一维数组        152
8.1.2  访问一维数组        153
8.1.3  未初始化的一维数组        154
8.1.4  初始化数组        155
8.1.5  数组元素地址        157
8.1.6  数组越界        158
8.1.7  一维数组使用举例        159
8.2  二维数组        162
8.2.1  定义二维数组        162
8.2.2  访问二维数组        163
8.2.3  二维数组的存储方式        164
8.2.4  初始化二维数组        164
8.2.5  二维数组使用举例        165
8.3  多维数组        167
8.3.1  定义多维数组        167
8.3.2  多维数组使用举例        167
8.4  综合练习        168
8.5  小结        169
8.6  习题        169
第9章  字符串（精彩视频：68分钟）        171
9.1  字符数组        171
9.1.1  定义和赋值字符数组        171
9.1.2  字符数组的初始化        173
9.1.3  二维字符数组        173
9.1.4  字符数组使用举例        175
9.2  字符串常量与字符串变量        178
9.2.1  字符串常量        178
9.2.2  字符串变量        180
9.2.3  格式化输出字符串        180
9.2.4  字符终止符的作用        181
9.2.5  格式化输入字符串        182
9.3  字符串应用举例        182
9.3.1  使用strlen函数        182
9.3.2  统计单词数        183
9.3.3  颠倒单词顺序        185
9.3.4  颠倒单词顺序——改进        186
9.4  综合练习        188
9.5  小结        189
9.6  习题        189
第五篇  函数篇
第10章  函数（精彩视频：63分钟）        191
10.1  什么是函数        191
10.1.1  模块化编程        191
10.1.2  定义函数        194
10.1.3  调用函数        194
10.1.4  函数使用举例        196
10.1.5  范例的改进        197
10.2  函数声明        198
10.2.1  声明的形式        199
10.2.2  声明与定义        199
10.3  函数值与形参列表        200
10.3.1  函数值类型        200
10.3.2  形参列表        202
10.3.3  函数值        203
10.3.4  使用const形参        206
10.4  函数体        208
10.4.1  定义变量        208
10.4.2  检查形参        209
10.4.3  return语句        209
10.5  main函数        211
10.5.1  main函数的声明        211
10.5.2  函数值类型        211
10.5.3  向main函数传递参数        212
10.6  综合练习        215
10.7  小结        216
10.8  习题        216
第11章  函数与文件（精彩视频：47分钟）        218
11.1  多文件的程序        218
11.1.1  源文件和头文件        218
11.1.2  C工程的组织结构        219
11.1.3  一个简单的多文件工程        220
11.2  创建和运行多文件工程        222
11.2.1  Turbo C        222
11.2.2  Visual C++ 2005        223
11.2.3  GCC 3.2.2        223
11.3  函数的调用        223
11.3.1  嵌套调用        223
11.3.2  递归调用        225
11.3.3  递归调用使用举例        226
11.4  内部函数与外部函数        230
11.4.1  外部函数        230
11.4.2  内部函数        231
11.4.3  应用举例        231
11.5  综合练习        233
11.6  小结        234
11.7  习题        234
第12章  函数中的变量（精彩视频：60分钟）        236
12.1  生存期和作用域        236
12.1.1  生存期        236
12.1.2  作用域        237
12.2  局部变量和全局变量        239
12.2.1  局部变量        239
12.2.2  全局变量        240
12.2.3  初始化全局变量        242
12.2.4  合理使用全局变量        243
12.2.5  同名变量和变量屏蔽        244
12.3  变量的存储类别        247
12.3.1  内存存储区        247
12.3.2  auto变量        247
12.3.3  static局部变量        248
12.3.4  register变量        250
12.3.5  extern变量        251
12.3.6  static全局变量        251
12.4  综合练习        252
12.5  小结        253
12.6  习题        253
第13章  字符串处理函数（精彩视频：38分钟）        255
13.1  输入和输出函数        255
13.1.1  putchar函数和getchar函数        255
13.1.2  puts函数和gets函数        256
13.2  复制和拼接        257
13.2.1  strcpy函数        257
13.2.2  strncpy函数        258
13.2.3  strcat函数和strncat函数        260
13.3  比较和转换        261
13.3.1  strncmp函数和strcmp函数        261
13.3.2  strupr函数和strlwr函数        263
13.4  综合练习        264
13.5  小结        264
13.6  习题        265
第六篇  指针篇
第14章  指针（精彩视频：60分钟）        266
14.1  什么是指针        266
14.1.1  访问内存的两种方式        266
14.1.2  指针的概念        267
14.1.3  指针变量的定义        267
14.2  指针的使用        268
14.2.1  指针变量的一次赋值        268
14.2.2  指针变量的多次赋值        270
14.2.3  将指针变量赋值为整数        272
14.2.4  初始化指针变量        273
14.2.5  使用const声明指针变量        273
14.3  指针与函数        274
14.3.1  指针形参        274
14.3.2  指针型函数值        276
14.3.3  函数型指针        277
14.4  void型指针        279
14.4.1  void型指针的含义        279
14.4.2  void指针型形参        279
14.4.3  void指针型函数值        280
14.5  综合练习        280
14.6  小结        281
14.7  习题        281
第15章  再论指针（精彩视频：68分钟）        283
15.1  指针与数组        283
15.1.1  指向数组元素的指针        283
15.1.2  使用指针访问数组        283
15.1.3  数组元素型指针和数组变量        285
15.1.4  声明数组形参的三种方式        287
15.1.5  使用三种声明方式        288
15.1.6  调用含数组形参的函数        288
15.2  指针与二维数组        289
15.2.1  二维数组的地址        289
15.2.2  指针法访问二维数组        292
15.2.3  二维数组形参        293
15.3  指针与字符        297
15.3.1  字符指针        297
15.3.2  使用字符指针        299
15.3.3  字符串数组和字符指针数组        301
15.4  综合练习        302
15.5  小结        303
15.6  习题        303
第七篇  高级应用篇
第16章  堆管理（精彩视频：24分钟）        305
16.1  分配和释放        305
16.1.1  malloc函数和memset函数        305
16.1.2  free函数        306
16.2  其他分配函数        307
16.2.1  calloc函数        307
16.2.2  realloc函数        308
16.3  动态数组的实现        310
16.4  综合练习        311
16.5  小结        312
16.6  习题        312
第17章  位运算操作符（精彩视频：50分钟）        313
17.1  位运算        313
17.1.1  字节与位        313
17.1.2  补码        313
17.2  位运算操作符        314
17.2.1  取反操作符（~）        314
17.2.2  位或操作符（|）        315
17.2.3  位与操作符（&）        317
17.2.4  异或操作符（^）        320
17.2.5  右移操作符（>>）        322
17.2.6  左移操作符（<<）        323
17.2.7  位运算赋值操作符        325
17.3  位运算操作符使用举例        325
17.3.1  循环移位        325
17.3.2  使用子网掩码        327
17.4  综合练习        328
17.5  小结        328
17.6  习题        328
第18章  结构体（精彩视频：46分钟）        330
18.1  结构体        330
18.1.1  结构体类型的概念        330
18.1.2  定义结构体变量        331
18.1.3  结构体的字节长度        332
18.2  结构体的使用        334
18.2.1  访问结构体成员        334
18.2.2  初始化结构体变量        335
18.2.3  浅复制和深复制        337
18.3  结构体数组        339
18.3.1  定义结构体数组        339
18.3.2  初始化结构体数组        340
18.3.3  结构体数组使用举例        341
18.4  结构体指针        342
18.4.1  指向结构体变量的指针        342
18.4.2  指向堆空间的结构体指针        343
18.4.3  指向结构体数组元素的指针        344
18.5  综合练习        345
18.6  小结        346
18.7  习题        347
第19章  共用体、枚举和位域（精彩视频：33分钟）        348
19.1  共用体        348
19.1.1  共用体类型        348
19.1.2  共用体变量        349
19.2  枚举        351
19.2.1  定义枚举类型        351
19.2.2  枚举类型的使用        352
19.3  位域        354
19.3.1  位域的概念        354
19.3.2  位域的字长        355
19.3.3  位域成员的内存分布        356
19.4  综合练习        358
19.5  小结        360
19.6  习题        360
第20章  预处理（精彩视频：61分钟）        362
20.1  宏定义        362
20.2  宏对象        363
20.2.1  使用宏对象        363
20.2.2  代替常用字符串        364
20.2.3  说明形参属性        366
20.2.4  宏定义的作用域        367
20.2.5  标准宏对象        368
20.3  宏函数        368
20.3.1  使用宏函数        368
20.3.2  宏函数与函数        369
20.4  条件编译        370
20.4.1  #ifdef命令        371
20.4.2  #ifndef命令        373
20.4.3  #if命令        374
20.4.4  defined宏函数        375
20.5  文件包含        375
20.5.1  使用文件包含        375
20.5.2  重复包含和循环包含        377
20.6  综合练习        377
20.7  小结        378
20.8  习题        378
第八篇  综合案例篇
第21章  图书管理系统开发实例（精彩视频：46分钟）        380
21.1  需求分析        380
21.2  系统设计        380
21.2.1  系统架构        380
21.2.2  数据结构        381
21.3  main模块        382
21.4  用户界面模块        383
21.4.1  程序流程        383
21.4.2  代码实现        383
21.4.3  编写menu_main函数：打印主界面和第一级菜单        384
21.4.4  编写menu_choice函数        385
21.4.5  编写menu_add函数：打印增加书籍的二级菜单        385
21.4.6  编写menu_delete函数：输出删除书籍的二级菜单        386
21.4.7  编写menu_search函数：输出搜索书籍的二级菜单        388
21.4.8  编写menu_reload函数：输出载入书籍数据的二级菜单        388
21.4.9  编写menu_exit函数：退出所有二级菜单        388
21.5  日志模块        388
21.5.1  打开和关闭文件        389
21.5.2  文件的格式化读写        389
21.5.3  打开和关闭日志文件        390
21.5.4  log_error函数和log_activity函数        390
21.6  数据管理模块        391
21.6.1  处理TimeInfor数据        391
21.6.2  处理BookInfor数据        392
21.6.3  增加书籍        393
21.6.4  删除书籍        394
21.6.5  查询书籍        395
21.6.6  从文件导入数据        395
21.7  小结        396