标题：C语言必须知道的300个问题
作者：明日科技
图书详细信息：ISBN：9787302276678  [1]定价：49.8元
印次：1-1
装帧：平装
印刷日期：2011-12-28图书简介：本书以基础知识为框架，介绍了C语言各部分知识所对应的常见开发疑难问题，并作了透彻地解析。本书内容包括初识C语言，一个简单的C程序，算法入门，常用数据类型，运算符与表达式，输入/输出函数，选择、分支结构程序设计，循环结构，数组，函数编程基础，指针解析，常用数据结构，位运算操作符，存储管理，预处理和函数类型，文件的读写操作和图形图像处理。
书中列出的300个疑难问题，都是一线开发人员在实际项目中经常会遇到的。针对这些问题，本书给出了详尽的解决方案，并作了技术上的解析。通过对本书的学习，读者能够迅速提高解决实际问题的能力。
本书提供了源程序、素材，提供了相关的模块库、案例库、素材库、题库等多种形式的辅助学习资料，还提供迅速及时的微博、QQ、论坛等技术支持。
本书涉及内容丰富经典，讲解细致，适合各种水平的C语言学习者进行学习查阅，还可以作为软件开发人员的参考资料。
前言：学会站在巨人的肩膀上！
程序员在求职时，经常会被问到有关开发经验的问题。例如，“从事了多少年的开发？”、“参与了哪些大型项目？”……为何面试官对项目经验丰富的求职者青睐有加？究其根源，是由于程序开发是一门实践性非常强的学科。正所谓“纸上得来终觉浅，绝知此事要躬行”。编程经验是程序开发者在长期的实践中逐步积累的宝贵的技术资源库，其中包含各种习惯用法、知识理论、代码片段和应用技巧等。要想成为经验丰富的编程高手，除了勤学苦练，也要学会站在前人的肩膀上，通过分析别人的代码而有所领悟，或者借鉴他人的经验技巧形成自己的技能，在认识错误与解决问题中不断进步。这也是每个编程者的必由之路。
本书汇集了300个一线开发人员常见的疑难问题，每个问题都给出了详细的解答与点评，图文并茂、难易并举，通过对本书的学习，读者可以尽享前人的开发经验，迅速提升个人的开发能力。
本书内容
本书以基础知识为框架，介绍了C语言各部分知识所对应的常见开发疑难问题，并作了透彻地解析。全书共分为17章，主要内容包括初识C语言，一个简单的C程序，算法入门，常用数据类型，运算符与表达式，输入/输出函数，选择、分支结构程序设计，循环结构，数组，函数编程基础，指针解析，常用数据结构，位运算操作符，存储管理，预处理和函数类型，文件的读写操作和图形图像处理。
为了更清晰地阐述问题并给出详尽的解决方案，本书设置了以下栏目。
? 问题阐述
对问题进行详细阐述，对复杂问题给出问题产生的条件，并对问题中需要解决的部分作出说明。
? 专家解答
根据问题进行具体分析，给出相应的解题思路及正确答案，并提供该问题涉及的技术知识。
? 专家点评
对问题及解答进行总结，为以后的问题解决提供思路；此外，还会列出一些有关此问题应该注意的事项，以及对该问题的一些拓展。
本书特色
? 贴近应用
本书精选的疑难问题都是在实际项目开发中经常会遇到的，主要目的就是为读者答疑解惑。
? 横向链接
本书知识框架与《C语言开发入门及项目实战》一书相对应，可以在使用《C语言开发入门及项目实战》一书进行基础学习之后，使用本书丰富并提高技能。
? 解析透彻
本书对每个问题的相关知识都作了细致地讲解，并进行知识拓展，使读者不仅知其然而且知其所以然。
? 授人以渔
本书在讲解技术的同时，还注重对读者能力的培养，使读者真正掌握分析问题与解决问题的能力。
本书配套资源
本书提供了内容丰富的配套资源，包括源程序、素材，以及模块库、案例库、题库、素材库等多项辅助内容，读者可以通过如下方式获取。
第1种方式：
（1）登录清华大学出版社的网站，在网页右上角的搜索文本框中输入本书书名（注意区分大小写和留出空格），或者输入本书关键字，或者输入本书ISBN号（注意去掉ISBN号间隔线“-”），单击“搜索”按钮。
（2）找到本书后单击超链接，在该书的网页下侧单击“网络资源”超链接，即可下载。
第2种方式：
访问本书的新浪微博：C语言图书，找到配套资源的链接地址进行下载。
读者人群
本书非常适合以下人员阅读：
? 从事C语言编程的开发人员
? 有一定语言基础，想进一步提高技能的人员
? 大中专院校的老师和学生
? 即将走上相关工作岗位的大学毕业生
? 相关培训机构的老师和学员
? C语言编程爱好者目录：第1章  初识C语言 1
问题1  C语言是如何发展起来的？ 2
问题2  什么是ANSI标准？ 2
问题3  C语言编写程序的优点有哪些？ 3
问题4  如何规避C语言的不足之处？ 4
问题5  C语言的应用领域有哪些？ 5
问题6  什么是C99标准？与C89标准
相比，C99标准有哪些
新特性？ 6
问题7  C语言是C++的子集吗？ 10
问题8  C语言程序的开发过程是
怎样的？ 11
问题9  什么是编译程序和解释程序？ 12
问题10  ANSI C的编译限制有哪些？ 13
第2章  一个简单的C程序 14
问题11  C语言的入口函数是什么？ 15
问题12  C语言程序由哪些部分组成？ 16
问题13  如何在Turbo C 2.0中输入一个
程序？ 16
问题14  如何在Visual C++ 6.0中运行
一个C程序？ 18
问题15  如何在Visual C++ 2008中运行
一个C程序？ 22
问题16  如何提高程序的可读性？ 26
问题17  什么是关键字？C语言的关键
字有哪些？ 27
问题18  什么是标识符？使用标识符的
注意事项是什么？ 29
问题19  void关键字都有哪些用途？ 30
问题20  什么是匈牙利命名约定？它是否
是好的约定？ 31
第3章  算法入门 33
问题21  为什么说算法是程序设计的
灵魂？ 34
问题22  算法的特性有哪些？ 34
问题23  如何评价一个算法的好坏？ 35
问题24  算法的表示方法都有哪些？ 36
问题25  算法的基本结构是什么？ 40
问题26  算法有哪几类？ 42
问题27  算法的效率度量方法有哪些？ 42
问题28  什么是算法的时间复杂度？ 43
问题29  什么是算法的空间复杂度？ 44
问题30  什么是分治法算法思想？ 45
第4章  常用数据类型 46
问题31  声明变量和定义变量的区别
是什么？ 47
问题32  在开发时如何决定使用哪种
数据类型？ 48
问题33  什么是常量？如何区分常量
和变量？ 48
问题34  各种数据类型所占的内存是
多少？ 49
问题35  字符与字符串的差别有
哪些？ 50
问题36  变量是否必须初始化？ 51
问题37  为什么会发生数据溢出？如何
避免数据溢出？ 52
问题38  局部变量和全局变量能否
重名？ 53
问题39  全局变量可不可以定义在可被
多个.C文件包含的头文件中？
为什么？ 53
问题40  如何引用一个已经定义过的
外部变量？ 54
问题41  全局变量和局部变量的存储
方式有什么区别？ 55
问题42  整型常量的存储形式是
怎样的？ 55
问题43  整型常量的表示形式有
哪几种？ 56
问题44  使用了没定义的变量会有什么
现象？ 56
问题45  static关键字有什么作用？ 57
问题46  const关键字有什么作用？ 59
问题47  const与#define相比有何
优点？ 60
问题48  sizeof不是函数吗？ 61
问题49  float类型数如何与0值
比较？ 63
问题50  静态变量与自动变量的区别
有哪些？ 64
第5章  运算符与表达式 66
问题51  运算符的优先级和结合性是
怎样的？ 67
问题52  如何区分“，”是运算符还是
分隔符？ 68
问题53  C语言如何解释x=a+=b+c？ 69
问题54  x=x+1，x+=1，x++，哪个效率
最高？ 70
问题55  什么是运算符的目？怎样进行
区分？ 70
问题56  使用“++”和“--”运算符需要
注意些什么？ 71
问题57  如何理解i+++j？ 71
问题58  赋值表达式中什么是左值和右值？数组名作为左右值时又具有怎样的意义？ 72
问题59  如何确定条件表达式的结果的
数据类型？ 73
问题60  “%”运算符是否可以对小数
进行运算？ 74
问题61  “/”运算符得到的结果一定为
整数吗？ 75
问题62  在进行多种数据类型混合运算
的时候，数据类型自动转换有
哪些规则？ 76
问题63  C语言中有哪些简化的运算
表达式？ 77
问题64  使用逻辑表达式需要注意哪
几点问题？ 77
问题65  i++*i++这样的表达式为什么
不能得到预期的结果？ 78
问题66  a[i]=i++;这样的代码正确吗？ 79
问题67  编写表达式时需要注意
什么？ 79
问题68  如何理解c=a,b;？ 80
问题69  为无符号类型变量赋值时，数据
类型应怎样转换？ 81
问题70  C语言表达式的求值顺序总是
按照运算符的结合性保证
“自左至右”或者“自右
至左”吗？ 81
第6章  输入/输出函数 83
问题71  函数printf()的基本格式
是什么？ 84
问题72  如何认识printf()函数的格式
字符？ 85
问题73  函数printf()的标志有几种？
如何使用？ 91
问题74  如何控制输出最小宽度？ 91
问题75  如何控制输出精度？ 92
问题76  如何控制输出长度？ 93
问题77  如何动态设置输出宽度和
精度？ 94
问题78  printf()函数的返回值是
什么？ 95
问题79  如何理解输出列表？ 96
问题80  函数scanf()的基本格式是
什么？ 96
问题81  scanf()函数的格式字符是
什么？ 97
问题82  使用scanf()函数应注意的问题
是什么？ 100
问题83  scanf()函数的返回值是
什么？ 101
问题84  如何使用getchar()函数？ 102
问题85  getch()函数如何使用？ 104
问题86  如何应用gets()函数？ 104
问题87  如何应用putch()函数？ 105
问题88  puts()函数该如何应用？ 106
问题89  如何控制多数值的输入？ 107
问题90  如何输入字符数组？ 108
第7章  选择、分支结构程序设计 110
问题91  5>4>3为什么不成立——谈谈
关系表达式的值 111
问题92  =和==如何区分？ 112
问题93  什么叫逻辑短路？ 113
问题94  if语句的基本形式有哪些？
如何应用？ 114
问题95  浮点数的相等比较是否可以
用==？ 116
问题96  关系运算符和数学不等号有
什么区别？ 117
问题97  if语句后面一定不能写
分号吗？ 118
问题98  这个程序为什么多执行了好多
语句？ 119
问题99  不用关系表达式和逻辑表达式
做条件 120
问题100  怎样理解复合语句中的
变量？ 122
问题101  如何进行if语句的嵌套？ 123
问题102  条件运算符“? :”怎样
应用？ 124
问题103  switch语句的基本格式是
什么？ 125
问题104  if语句与switch语句的优缺
点是什么？ 127
问题105  switch语句中的default关键字
是否必须？ 128
问题106  break关键字在switch语句中
应注意什么？ 128
问题107  如何正确判断if和else的
匹配？ 130
问题108  switch和case后的表达式值的
类型是否可以是浮点型？ 132
问题109  区段划分型条件有什么
技巧？ 133
问题110  default必须写在所有case
之后吗？ 134
第8章  循环结构 136
问题111  循环结构的基本概念是
什么？ 137
问题112  while语句的基本格式是
什么？ 138
问题113  while循环应注意什么
问题？ 139
问题114  for循环语句的基本格式
是什么？ 140
问题115  for语句的三个表达式都是
必须的吗？ 142
问题116  do…while语句的基本格式
是什么？ 144
问题117  分号在循环体中的作用？ 146
问题118  while与do…while的
区别？ 148
问题119  什么是循环嵌套？ 149
问题120  循环嵌套的结构是
怎样的？ 151
问题121  如何正确使用循环嵌套？ 153
问题122  死循环是怎样产生的？ 154
问题123  怎样提高循环语句的
效率？ 156
问题124  continue语句的基本作用
是什么？ 158
问题125  break语句的基本作用是
什么？ 159
问题126  goto语句的基本格式是什么？
如何使用？ 161
问题127  goto语句的缺陷是什么？ 163
问题128  如何选择循环语句？ 165
问题129  如何判定循环结束和提前
结束？ 165
问题130  如何避免循环中的初值错误
问题？ 167
第9章  数组 170
问题131  什么是数组？其存储有何
特点？ 171
问题132  数组的维数该如何理解？ 171
问题133  一维数组是怎样定义的？ 172
问题134  如何引用一维数组元素？ 173
问题135  如何初始化一维数组？ 174
问题136  如何设计数组的排序
算法？ 175
问题137  如何定义二维数组？ 176
问题138  如何引用二维数组元素？ 178
问题139  如何初始化二维数组？ 179
问题140  如何定义字符数组？ 180
问题141  如何初始化字符数组？ 180
问题142  如何引用字符数组？ 181
问题143  如何进行字符数组的
复制？ 182
问题144  如何进行字符数组的
连接？ 183
问题145  如何进行字符串的比较？ 185
问题146  如何测定字符串的长度？ 187
问题147  如何进行字符串大小写的
相互转换？ 188
问题148  如何计算字符串中有多少个
单词？ 190
问题149  gets()函数和scanf()函数在输入
字符串时有何区别？ 191
问题150  puts()函数和printf()函数在输出
字符串时有何区别？ 192
问题151  数组与指针的区别是什么？ 193
问题152  为什么作为函数形参的数组和
指针可以互换？ 195
问题153  为什么数组名作参数传递给子
函数时，子函数可以改变主
函数中数组的值？ 196
问题154  C语言中有动态数组吗？ 197
问题155  如何实现动态二维数组？ 199
问题156  strcpy()函数可以复制字符串的
一部分吗？ 201
问题157  字符串和字符数组有什么
区别？ 202
问题158  ‘\0’和“\0”有什么区别？ 203
问题159  字符数组占用内存
怎样算？ 204
问题160  用字符数组和指针两种方式
定义的字符串有什么
不同？ 204
第10章  函数编程基础 206
问题161  什么是函数？如何分类？ 207
问题162  如何定义无参函数？ 209
问题163  如何定义有参函数？ 210
问题164  什么是空函数？作用是
什么？ 210
问题165  什么是形参和实参？如何
使用？ 211
问题166  如何从函数返回？ 213
问题167  函数返回值你了解多少？ 214
问题168  如何进行函数的一般
调用？ 215
问题169  函数调用的基本方式有几种？
各是什么？ 216
问题170  函数调用应具备哪些
条件？ 216
问题171  如何进行函数的嵌套
调用？ 218
问题172  什么是递归调用？如何
实现？ 219
问题173  函数如何将数组元素作为
实参？ 222
问题174  如何将数组名作为函数
参数？ 224
问题175  如何将多维数组名作为函数
参数？ 227
问题176  什么是局部变量？ 228
问题177  什么是全局变量？如何
应用？ 229
问题178  存储方式有哪几种？分别
是什么？ 232
问题179  如何使用auto关键字？ 233
问题180  什么是静态变量？如何
实现？ 236
问题181  什么是寄存器变量？如何
实现？ 238
问题182  如何声明外部变量？ 239
问题183  如何调用编译后的函数？ 240
问题184  如何限定外部变量的使用
范围？ 241
问题185  如何使用函数调用实现对字
符串的统计？ 242
问题186  main()函数有什么作用？ 243
问题187  什么是内部函数？ 243
问题188  什么是外部函数？
怎么用？ 244
问题189  static()函数与普通函数有什么
区别？ 245
问题190  形参和实参有什么区别？ 246
第11章  指针解析 248
问题191  什么是指针？什么是指针
变量？ 249
问题192  如何创建指针？ 250
问题193  如何初始化指针？ 251
问题194  如何使用指针？ 252
问题195  函数中如何传递指针？ 254
问题196  指针、数组和地址之间的关系
是什么？ 255
问题197  如何进行指针运算？ 256
问题198  如何使用指针操作数组？ 258
问题199  如何用指针表示多维
数组？ 260
问题200  如何使用指针操作多维
数组？ 261
问题201  如何用指针为函数传递
数组？ 263
问题202  如何用指针表示字符串？ 264
问题203  如何使用字符串指针作为函数
参数？ 265
问题204  字符数组和字符指针的区别
是什么？ 266
问题205  什么是指针数组？ 267
问题206  如何使用指针数组处理
字符串？ 268
问题207  如何将指针数组作为函数的
参数？ 269
问题208  什么是指向指针的指针？ 270
问题209  二级指针如何应用于一维
数组？ 271
问题210  如何实现二级指针对二维数组
的操作？ 272
问题211  二级指针如何操作字符串数组
（指针数组）？ 273
问题212  如何理解返回指针的
函数？ 275
问题213  什么是指向函数的指针？ 277
问题214  如何用const控制指针？ 278
问题215  什么是“野指针”？ 279
问题216  main()函数的指针数组形参
是怎么回事？ 279
问题217  void指针就是空指针吗？它
有什么作用？ 281
问题218  指针是一种特殊的变量，只能
用来保存地址。这句话
对吗？ 282
问题219  字符指针、浮点数指针以及
函数指针这三种类型的变量
哪个占用的内存最大？
为什么？ 282
问题220  一个32位的机器，该机器的
指针是多少位？ 283
第12章  常用数据结构 284
问题221  空结构体所占的内存是
多少？ 285
问题222  在C语言中，一个结构体可以
包含指向自己的指针吗？ 286
问题223  struct person{...};person a;
为什么编译出错？ 287
问题224  怎样从/向数据文件读/写
结构？ 289
问题225  枚举与#define宏的区别有
哪些？ 290
问题226  如何看待枚举类型，枚举类型
的优点是什么？ 291
问题227  关键字typedef的功能是
什么？ 292
问题228  类型定义是否允许嵌套？ 294
问题229  typedef与#define宏的相似之处
与不同之处是什么？ 295
问题230  什么是散列法？ 296
问题231  大小端模式对union类型数据
有什么影响？ 297
问题232  如何为联合体变量赋
初值？ 298
问题233  如何证明联合体变量的所有成员是共享一个内存单元的？ 300
问题234  堆和栈的区别是什么？ 301
问题235  举例说明，什么是静态链表？
什么是动态链表？ 302
问题236  单向链表、双向链表和循环链
表有什么区别？ 304
问题237  如何在链表中的指定位置插入
结点？ 305
问题238  如何删除链表中指定位置的
结点？ 306
问题239  如何创建一个动态链表？ 308
问题240  指向结构体数组的指针如何
应用？ 310
第13章  位运算操作符 312
问题241  什么是位运算？位运算符包括
哪些？ 313
问题242  移位运算中如何补位？ 314
问题243  移位运算符与加减运算符的
优先级哪个较高？ 315
问题244  什么是循环移位？ 316
问题245  什么是位段？其优点是
什么？ 317
问题246  如何正确使用位段？ 318
问题247  数据在计算机中的存储单位有
哪些？有几种存储形式？ 320
第14章  存储管理 322
问题248  与内存息息相关的重要概念
有哪些？ 323
问题249  指针指向不合法引起了哪些
内存问题？ 324
问题250  内存分配与释放引起的常见
问题有哪些？ 325
问题251  什么是内存越界？什么是内存
泄露？二者是如何产生的？ 326
问题252  C语言提供了哪些动态内存
分配函数？ 327
问题253  malloc()函数与calloc()函数有
什么区别？ 328
问题254  内存耗尽怎么办？ 328
问题255  动态内存会被自动释
放吗？ 330
问题256  高位优先与低位优先的不同
之处是什么？ 330
问题257  free()和delete()怎样处理
指针？ 331
问题258  怎样利用好敏感的内存
资源？ 333
第15章  预处理和函数类型 335
问题259  在头文件中#if、_STDC_等字符
起什么作用？ 336
问题260  如何书写多条语句宏？ 337
问题261  预处理中#和##运算符是什么
意思？ 338
问题262  一个头文件可以包含另一个头
文件吗？ 339
问题263  #include<>和#include“”有什么
区别？ 340
问题264  什么是无参宏定义？ 341
问题265  什么是带参宏定义？ 342
问题266  怎样写参数个数可变
的宏？ 343
问题267  #pragma预处理的作用
是什么？ 345
问题268  条件编译的表达形式有
哪些？ 346
问题269  如何应用内部函数？ 347
问题270  如何应用外部函数？ 348
第16章  文件的读写操作 351
问题271  各个读写操作的区别是
什么？ 352
问题272  C语言文件有哪几类？ 354
问题273  怎样写数据文件，使之可以在
不同字大小、字节顺序或浮点
格式的机器上读入？ 355
问题274  能否使用fflush()函数清除多余
的输入？ 356
问题275  fopen()函数打开文件失败的
原因是什么？ 357
问题276  为什么打开文件后要及时
关闭？ 358
问题277  文件的打开方式有哪些？ 358
问题278  如何正确使用putchar()函数和getchar()函数？ 360
问题279  getchar()函数、getch()函数和getche()函数的区别是
什么？ 361
问题280  使用printf()函数和scanf()函数
需要注意什么？ 362
问题281  printf()函数有哪些参数？ 363
问题282  scanf()函数的格式控制包括
哪些？ 364
问题283  printf()函数和scanf()函数格式
符的修饰符“*”有什么
作用？ 366
问题284  fscanf()函数、fprintf()函数与scanf()函数和printf()函数有什么
不同？ 367
问题285  如何判断文件的结束？ 368
第17章  图形图像处理 371
问题286  为什么在使用图形函数时要
首先初始化图形模式？ 372
问题287  怎样初始化图形模式？ 372
问题288  初始化时提示“BGI Error: Graphics not initialized
(use 'initgraph')”怎么办？ 374
问题289  怎样利用C语言建立独立的
图形运行程序？ 375
问题290  TC中有几个画线函数？怎么
使用？ 376
问题291  TC中有几个画矩形函数？怎么
使用？ 377
问题292  TC中有几个画圆函数？怎么
使用？ 379
问题293  如何使用C语言填充封闭
图形？ 380
问题294  TC中有几个和光标有关的
函数？怎样使用？ 382
问题295  如何在图形模式下输出
文本？ 383
问题296  背景色、线条颜色和填充颜色
有什么区别？何时使用？ 386
问题297  怎样记住那么多的颜色？ 387
问题298  线条样式和填充样式都有
哪些？怎样设置？ 388
问题299  怎样复制图形？ 392
问题300  怎样在C语言中制作
动画？ 394