学习任何程序设计语言的最佳方法都是创建良好的程序,C 语言也不例外。一旦决定编写程序我们就会发现,总是有至少两种方法可以实现。那么,如何才能找到最好的方法来实现程序? 《C语言程序设计》就能帮助读者解决此类问题。《C语言程序设计》是一本C 语言程序设计的经典教材。多年来,本书被很多工程和科学研究所及院校指定为学习教材。 (1)C语言程序设计的经典教材,目前英文原版更新至第17版。前16版被翻译为印地语、古吉拉特语、英语、日语、韩语,分别在印度、美国、日本、新加坡、韩国出版。
本书这一版本(第17 版)除了讲解C 语言中基本的函数、指针、控制指令、数据类型、数组、字符串、输入输出、位操作等内容外,还增加了C 语言程序设计的各个主题的实例和面试问题,以便读者尽快熟悉C 语言的实际应用。书中的实例和习题已经过作者认真挑选,集中体现了各个知识要点的具体用法。本书提供可供读者下载的程序源代码,并配套出版《C 语言程序设计 习题解答》。 目录第 1 章 起步 001 本章内容 002 1.1 什么是C 语言 003 1.2 C 语言的基础知识 003 1.2.1 字母、数字和特殊符号 004 1.2.2 常量、变量和关键字 004 1.2.3 C 语言的常量类型 004 1.2.4 整型常量的创建规则 005 1.2.5 浮点型常量的创建规则 005 1.2.6 字符型常量的创建规则 005 1.2.7 C 语言的变量类型 006 1.2.8 变量名的创建规则 006 1.2.9 C 语言的关键字 006 1.3 第 1 个C 语言程序 007 1.3.1 C 语言程序的格式 007 1.3.2 C 语言程序中的注释 007 1.3.3 什么是main() 008 1.3.4 变量及其用法 009 1.3.5 printf() 及其用法 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.1 if-else 语句 033 3.2 if-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.2 while 循环 061 5.2.1 提示和陷阱 062 5.2.2 其他操作符 063 5.3 程序 065 习题 066 课后笔记 068 第6 章 更复杂的循环控制 指令 069 本章内容 070 6.1 for 循环 071 6.1.1 循环的嵌套 073 6.1.2 for 循环的多重初始化 074 6.2 break 语句 074 6.3 continue 语句 075 6.4 do-while 循环 076 6.5 非常规循环 077 6.6 程序 078 习题 079 课后笔记 081 第7 章 case 控制指令 083 本章内容 084 7.1 使用switch 的决策 085 7.2 switch 与if-else 梯状结构的对比 088 7.3 goto 关键字 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、unsigned 135 11.2 字符型:signed、unsigned 136 11.3 浮点型:float、double、long double 136 11.4 一些其他问题 137 11.5 C 语言的存储类型 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.1 C 预处理器的特性 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.1 strlen() 201 15.4.2 strcpy() 202 15.4.3 strcat() 203 15.4.4 strcmp() 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.1 I O 的类型 239 18.2 控制台I O 函数 239 18.2.1 格式化的控制台I O 函数 240 18.2.2 sprintf() 和sscanf() 函数 244 18.2.3 未格式化的控制台I O 函数 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 文件中的字符串(行)I O 257 19.6 文本文件和二进制文件 259 19.7 文件中的记录I O 259 19.8 低层文件I O 262 19.9 程序 264 习题 266 课后笔记 267 第 20 章 关于输入输出的更多知识 271 本章内容 272 20.1 使用argc 和argv 273 20.2 在读取 写入时检测错误 275 20.3 标准文件指针 276 20.4 I O 重定向 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.5 AND、OR 和XOR 位操作符 287 21.5.1 & 操作符的用途 288 21.5.2 | 操作符的用途 289 21.5.3 ^ 操作符的用途 289 21.6 showbits() 函数 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.9 volatile 限定符 306 22.10 程序 306 习题 307 课后笔记 309 第 23 章 常见的C 语言面试问题 311 附录A 编译和运行 325 附录B 优先级表格 331 附录C 追踪缺陷 333 附录D ASCII 表 339 附录E 阶段测验 343 作者简介亚沙万特,.卡内特卡尔(Yashavant Kanetkar)是一位极受欢迎的IT 领域演说家,在TedEx、印度理工学院(IIT)、印度国家理工学院(NIT)、印度信息技术学院(IIIT)和一些全球软件公司举办过研讨会和讲习班。他的作品在世界范围内广受欢迎,数以百万计的学生和专业人员从中受益。他的作品被翻译为印地语、古吉拉特语、英语、日语、韩语和汉语,分别在印度、美国、日本、韩国和中国出版。由于在创业、专业以及教育方面的建树,他被印度理工学院坎普尔校区授予久负盛名的“杰出校友奖”(distinguished alumnus award)。连续5 年,他被微软公司授予“Z佳.NET 技术撰稿人”和“Z有价值专家”称号。 |
|