《C语言程序设计》是由人民邮电出版社出版的一本关于C语言方面的书籍,作者是亚沙万特·卡内特卡尔,主要介绍了关于C语言、程序设计方面的知识内容,目前在C语言类书籍综合评分为:9.1分。
书籍介绍
内容简介
学习任何程序设计语言的方法都是创建良好的程序,C语言也不例外。一旦决定编写程序我们就会发现,总是有至少两种方法可以实现。那么,如何才能找到好的方法来实现程序?本书就能帮助读者解决此类问题。本书是一本C语言程序设计的经典教材。多年来,本书被很多工程和科学研究所及院校指定为学习教材。
本书这一版本(第17版)除了讲解C语言中基本的函数、指针、控制指令、数据类型、数组、字符串、输入输出、位操作等内容外,还增加了C语言程序设计的各个主题的实例和面试问题,以便读者尽快熟悉C语言的实际应用。书中的实例和习题已经过作者认真挑选,集中体现了各个知识要点的具体用法。本书提供可供读者下载的程序源代码,并配套出版《C语言程序设计习题解答》。
本书结构合理,内容深入浅出,既适合用作高等学校本科和专科学生学习C语言程序设计的教材,也适合用作零基础的程序设计初学者的自学用书。
目录
- 第1章起步001
- 本章内容002
- 1.1什么是C语言003
- 1.2C语言的基础知识003
- 1.2.1字母、数字和特殊符号004
- 1.2.2常量、变量和关键字004
- 1.2.3C语言的常量类型004
- 1.2.4整型常量的创建规则005
- 1.2.5浮点型常量的创建规则005
- 1.2.6字符型常量的创建规则005
- 1.2.7C语言的变量类型006
- 1.2.8变量名的创建规则006
- 1.2.9C语言的关键字006
- 1.3第1个C语言程序007
- 1.3.1C语言程序的格式007
- 1.3.2C语言程序中的注释007
- 1.3.3什么是main()008
- 1.3.4变量及其用法009
- 1.3.5printf()及其用法009
- 1.3.6编译和运行010
- 1.4接收输入010
- 1.5程序011
- 习题012
- 课后笔记014
- 第2章C语言的指令017
- 本章内容018
- 2.1指令的类型019
- 2.2类型声明指令019
- 2.3算术指令019
- 2.4整型和浮点型的转换021
- 2.5赋值时的类型转换021
- 2.6操作符的优先层次022
- 2.7操作符的结合性024
- 2.8控制指令024
- 2.9程序024
- 习题026
- 课后笔记028
- 第3章决策控制指令031
- 本章内容032
- 3.1if-else语句033
- 3.2if-else中的多条语句034
- 3.3嵌套的if-else语句035
- 3.4一点告诫036
- 3.5程序037
- 习题038
- 课后笔记041
- 第4章更复杂决策的创建043
- 本章内容044
- 4.1使用逻辑操作符:检测范围045
- 4.2使用逻辑操作符:是否问题046
- 4.3!操作符048
- 4.4再论操作符的优先层次049
- 4.5条件操作符049
- 4.6程序050
- 习题052
- 课后笔记056
- 第5章循环控制指令059
- 本章内容060
- 5.1循环061
- 5.2while循环061
- 5.2.1提示和陷阱062
- 5.2.2其他操作符063
- 5.3程序065
- 习题066
- 课后笔记068
- 第6章更复杂的循环控制
- 指令069
- 本章内容070
- 6.1for循环071
- 6.1.1循环的嵌套073
- 6.1.2for循环的多重初始化074
- 6.2break语句074
- 6.3continue语句075
- 6.4do-while循环076
- 6.5非常规循环077
- 6.6程序078
- 习题079
- 课后笔记081
- 第7章case控制指令083
- 本章内容084
- 7.1使用switch的决策085
- 7.2switch与if-else梯状结构的对比088
- 7.3goto关键字088
- 7.4程序090
- 习题092
- 课后笔记095
- 第8章函数097
- 本章内容098
- 8.1什么是函数099
- 8.2在函数之间传递值101
- 8.3参数的传递顺序104
- 8.4使用库函数104
- 8.5一个不确定的问题105
- 8.6函数的返回类型105
- 8.7程序106
- 习题108
- 课后笔记109
- 第9章指针111
- 本章内容112
- 9.1传值调用和传引用调用113
- 9.2指针概述113
- 9.3再论函数调用116
- 9.4结论118
- 9.5程序118
- 习题120
- 课后笔记122
- 第10章递归125
- 本章内容126
- 10.1递归的概念127
- 10.2程序128
- 习题130
- 课后笔记131
- 第11章再论数据类型133
- 本章内容134
- 11.1整型:long、short、signed、unsigned135
- 11.2字符型:signed、unsigned136
- 11.3浮点型:float、double、longdouble136
- 11.4一些其他问题137
- 11.5C语言的存储类型138
- 11.5.1自动存储类型138
- 11.5.2寄存器存储类型139
- 11.5.3静态存储类型140
- 11.5.4外部存储类型140
- 11.5.5一些微妙的问题142
- 11.5.6何时何地使用存储类型143
- 习题143
- 课后笔记145
- 第12章C预处理器149
- 本章内容150
- 12.1C预处理器的特性151
- 12.2宏展开指令151
- 12.2.1带参数的宏152
- 12.2.2宏与函数的比较153
- 12.3文件包含指令153
- 12.4条件编译指令154
- 12.5#if和#elif指令155
- 12.6其他指令156
- 12.6.1#undef指令156
- 12.6.2#pragma指令156
- 12.7构建过程158
- 12.8程序159
- 习题161
- 课后笔记162
- 第13章数组165
- 本章内容166
- 13.1什么是数组167
- 13.2关于数组的其他信息168
- 13.2.1数组的初始化168
- 13.2.2内存中的数组元素168
- 13.2.3边界检查169
- 13.2.4向函数传递数组元素169
- 13.3指针和数组170
- 13.3.1使用指针访问数组元素171
- 13.3.2把数组传递给函数172
- 13.4可变长数组174
- 13.5程序175
- 习题176
- 课后笔记179
- 第14章多维数组181
- 本章内容182
- 14.1二维数组183
- 14.1.1二维数组的初始化183
- 14.1.2二维数组的内存映射184
- 14.1.3指针和二维数组184
- 14.1.4指向数组的指针186
- 14.1.5把二维数组传递给函数186
- 14.2指针数组187
- 14.3三维数组188
- 14.4程序189
- 习题191
- 课后笔记193
- 第15章字符串195
- 本章内容196
- 15.1什么是字符串197
- 15.2关于字符串的其他说明197
- 15.3指针和字符串199
- 15.4字符串处理函数200
- 15.4.1strlen()201
- 15.4.2strcpy()202
- 15.4.3strcat()203
- 15.4.4strcmp()203
- 15.5程序204
- 习题206
- 课后笔记208
- 第16章处理多个字符串211
- 本章内容212
- 16.1二维字符数组213
- 16.2字符串指针数组214
- 16.3字符串指针数组的限制216
- 16.4程序216
- 习题218
- 课后笔记219
- 第17章结构体221
- 本章内容222
- 17.1为什么要使用结构体223
- 17.2结构体数组224
- 17.3结构体的细节225
- 17.3.1结构体的声明225
- 17.3.2结构体元素的存储226
- 17.3.3复制结构体元素227
- 17.3.4嵌套的结构体227
- 17.3.5传递结构体元素结构体变量228
- 17.3.6结构体元素的对齐229
- 17.4结构体的应用230
- 17.5程序230
- 习题233
- 课后笔记234
- 第18章控制台输入输出237
- 本章内容238
- 18.1IO的类型239
- 18.2控制台IO函数239
- 18.2.1格式化的控制台IO函数240
- 18.2.2sprintf()和sscanf()函数244
- 18.2.3未格式化的控制台IO函数245
- 习题246
- 课后笔记249
- 第19章文件输入输出251
- 本章内容252
- 19.1文件操作253
- 19.1.1打开文件253
- 19.1.2读取文件254
- 19.1.3关闭文件255
- 19.2对字符、制表符、空格等进行计数255
- 19.3一个文件复制程序256
- 19.4文件打开模式257
- 19.5文件中的字符串(行)IO257
- 19.6文本文件和二进制文件259
- 19.7文件中的记录IO259
- 19.8低层文件IO262
- 19.9程序264
- 习题266
- 课后笔记267
- 第20章关于输入输出的更多知识271
- 本章内容272
- 20.1使用argc和argv273
- 20.2在读取写入时检测错误275
- 20.3标准文件指针276
- 20.4IO重定向276
- 20.4.1输出重定向276
- 20.4.2输入重定向277
- 20.4.3同时重定向278
- 习题278
- 课后笔记279
- 第21章对位进行操作281
- 本章内容282
- 21.1位的编号和转换283
- 21.2位操作284
- 21.3反码操作符284
- 21.4右移位和左移位操作符285
- 21.4.1警告286
- 21.4.2<<操作符的用途287
- 21.5AND、OR和XOR位操作符287
- 21.5.1&操作符的用途288
- 21.5.2|操作符的用途289
- 21.5.3^操作符的用途289
- 21.6showbits()函数290
- 21.7位复合赋值操作符290
- 21.8程序291
- 习题292
- 课后笔记294
- 第22章C语言的其他特性295
- 本章内容296
- 22.1枚举数据类型297
- 22.1.1枚举数据类型的用途297
- 22.1.2枚举真有必要吗298
- 22.2使用typedef对数据类型进行重命名299
- 22.3强制类型转换300
- 22.4位段300
- 22.5函数指针301
- 22.6返回指针的函数302
- 22.7接收可变数量参数的函数302
- 22.8联合体303
- 22.9volatile限定符306
- 22.10程序306
- 习题307
- 课后笔记309
- 第23章常见的C语言面试问题311
- 附录A编译和运行325
- 附录B优先级表格331
- 附录C追踪缺陷333
- 附录DASCII表339
- 附录E阶段测验343