C语言程序设计 现代方法 第2版·修订版
全新正版 假一赔十 可开发票
¥
68.6
5.3折
¥
129.8
全新
库存198件
作者 (美)K.N.金 著 吕秀锋,黄倩 译
出版社 人民邮电出版社
ISBN 9787115565198
出版时间 2021-07
装帧 平装
开本 16开
定价 129.8元
货号 1202416696
上书时间 2024-12-29
商品详情
品相描述:全新
商品描述
作者简介 【作者简介】 K. N. 金(K. N. King) 世界知名的计算机程序设计教育家。他拥有耶鲁大学计算机科学硕士学位,加州大学伯克利分校计算机科学博士学位,曾任教于佐治亚理工学院和佐治亚州立大学。除本书外,他还撰写了广受欢迎的著作Modula-2: A Complete Guide和Java Programming: From the Beginning。 【译者简介】 吕秀锋 曾任教于北京理工大学软件学院,讲授过多门计算机课程,包括“计算机基础(双语)”“C语言程序设计(双语)”“数据结构”“程序设计开发与实践”。 黄倩 河海大学计算机科学与技术系主任,兼任中国人工智能学会深度学习专委会委员、中国计算机学会多媒体技术专委会委员。博士毕业于中国科学院计算技术研究所,译有《编程珠玑(第2版)》等。 【审校简介】 李忠 资深C语言专家。著有《穿越计算机的迷雾》《X86汇编语言:从实模式到保护模式》《C语言非常道》和《标准C语言指南》等。 目录 第1章 C语言概述1 1.1C语言的历史1 1.1.1起源1 1.1.2标准化1 1.1.3基于C的语言2 1.2C语言的优缺点3 1.2.1C语言的优点3 1.2.2C语言的缺点4 1.2.3高效地使用C语言5 问与答5 第2章 C语言基本概念7 2.1编写一个简单的C程序7 2.1.1编译和链接8 2.1.2集成开发环境9 2.2简单程序的一般形式9 2.2.1指令9 2.2.2函数9 2.2.3语句10 2.2.4显示字符串11 2.3注释11 2.4变量和赋值13 2.4.1类型13 2.4.2声明13 2.4.3赋值14 2.4.4显示变量的值15 2.4.5初始化16 2.4.6显示表达式的值17 2.5读入输入17 2.6定义常量的名字18 2.7标识符19 2.8C程序的书写规范21 问与答23 练习题25 编程题26 第3章 格式化输入/输出28 3.1printf函数28 3.1.1转换说明29 3.1.2转义序列31 3.2scanf函数31 3.2.1scanf函数的工作方法32 3.2.2格式串中的普通字符34 3.2.3易混淆的printf函数和scanf函数34 问与答35 练习题37 编程题38 第4章 表达式40 4.1算术运算符40 4.2赋值运算符44 4.2.1简单赋值44 4.2.2左值45 4.2.3复合赋值45 4.3自增运算符和自减运算符46 4.4表达式求值47 4.5表达式语句50 问与答50 练习题52 编程题54 第5章 选择语句56 5.1逻辑表达式56 5.1.1关系运算符56 5.1.2判等运算符57 5.1.3逻辑运算符57 5.2if语句58 5.2.1复合语句59 5.2.2else子句59 5.2.3级联式if语句61 5.2.4“悬空else”的问题63 5.2.5条件表达式63 5.2.6C89中的布尔值64 5.2.7C99中的布尔值65 5.3switch语句66 问与答69 练习题72 编程题74 第6章 循环77 6.1while语句77 6.2do语句80 6.3for语句82 6.3.1for语句的惯用法83 6.3.2在for语句中省略表达式83 6.3.3C99中的for语句84 6.3.4逗号运算符84 6.4退出循环86 6.4.1break语句87 6.4.2continue语句87 6.4.3goto语句88 6.5空语句90 问与答92 练习题94 编程题95 第7章 基本类型97 7.1整数类型97 7.1.1C99中的整数类型99 7.1.2整型常量99 7.1.3C99中的整型常量100 7.1.4整数溢出100 7.1.5读/写整数101 7.2浮点类型102 7.2.1浮点常量103 7.2.2读/写浮点数103 7.3字符类型104 7.3.1字符操作104 7.3.2有符号字符和无符号字符105 7.3.3算术类型105 7.3.4转义序列106 7.3.5字符处理函数107 7.3.6用scanf和printf读/写字符108 7.3.7用getchar和putchar读/写字符108 7.4类型转换110 7.4.1常规算术转换111 7.4.2赋值过程中的转换112 7.4.3C99中的隐式转换113 7.4.4强制类型转换114 7.5类型定义115 7.5.1类型定义的优点115 7.5.2类型定义和可移植性116 7.6sizeof运算符117 问与答117 练习题120 编程题121 第8章 数组124 8.1一维数组124 8.1.1数组下标124 8.1.2数组初始化126 8.1.3指示器127 8.1.4对数组使用sizeof运算符129 8.2多维数组130 8.2.1多维数组初始化131 8.2.2常量数组132 8.3C99中的变长数组134 问与答135 练习题136 编程题138 第9章 函数141 9.1函数的定义和调用141 9.1.1函数定义144 9.1.2函数调用145 9.2函数声明147 9.3实际参数149 9.3.1实际参数的转换150 9.3.2数组型实际参数151 9.3.3变长数组形式参数153 9.3.4在数组参数声明中使用static154 9.3.5复合字面量155 9.4return语句155 9.5程序终止156 9.6递归157 9.7泛型选择161 问与答163 练习题166 编程题169 第10章 程序结构171 10.1局部变量171 10.1.1静态局部变量172 10.1.2形式参数172 10.2外部变量172 10.2.1示例:用外部变量实现栈172 10.2.2外部变量的利与弊173 10.3程序块177 10.4作用域178 10.5构建C程序179 问与答185 练习题185 编程题186 第11章 指针188 11.1指针变量188 11.2取地址运算符和间接寻址运算符189 11.2.1取地址运算符189 11.2.2间接寻址运算符190 11.3指针赋值191 11.4指针作为参数192 11.5指针作为返回值195 问与答196 练习题198 编程题199 第12章 指针和数组201 12.1指针的算术运算201 12.1.1指针加上整数202 12.1.2指针减去整数202 12.1.3两个指针相减203 12.1.4指针比较203 12.1.5指向复合字面量的指针203 12.2指针用于数组处理204 12.3用数组名作为指针206 12.3.1数组型实际参数(改进版)207 12.3.2用指针作为数组名208 12.4指针和多维数组209 12.4.1处理多维数组的元素209 12.4.2处理多维数组的行210 12.4.3处理多维数组的列210 12.4.4用多维数组名作为指针210 12.5C99中的指针和变长数组211 问与答212 练习题213 编程题215 第13章 字符串217 13.1字面串217 13.1.1字面串中的转义序列217 13.1.2延续字面串218 13.1.3如何存储字面串218 13.1.4字面串的操作219 13.1.5字面串与字符常量219 13.2字符串变量220 13.2.1初始化字符串变量220 13.2.2字符数组与字符指针221 13.3字符串的读和写222 13.3.1用printf函数和puts函数写字符串222 13.3.2用scanf函数读字符串223 13.3.3逐个字符读字符串224 13.4访问字符串中的字符225 13.5使用C语言的字符串库226 13.5.1strcpy函数226 13.5.2strlen函数227 13.5.3strcat函数228 13.5.4strcmp函数229 13.6字符串惯用法231 13.6.1搜索字符串的结尾232 13.6.2复制字符串233 13.7字符串数组235 问与答238 练习题241 编程题243 第14章 预处理器246 14.1预处理器的工作原理246 14.2预处理指令248 14.3宏定义248 14.3.1简单的宏249 14.3.2带参数的宏250 14.3.3#运算符252 14.3.4##运算符253 14.3.5宏的通用属性254 14.3.6宏定义中的圆括号254 14.3.7创建较长的宏255 14.3.8预定义宏256 14.3.9C99中新增的预定义宏257 14.3.10空的宏参数258 14.3.11参数个数可变的宏259 14.3.12__func__标识符260 14.4条件编译260 14.4.1#if指令和#endif指令260 14.4.2defined运算符261 14.4.3#ifdef指令和#ifndef指令261 14.4.4#elif指令和#else指令262 14.4.5使用条件编译262 14.5其他指令263 14.5.1#error指令263 14.5.2#line指令264 14.5.3#pragma指令265 14.5.4_Pragma运算符265 问与答266 练习题268 第15章 编写大型程序272 15.1源文件272 15.2头文件273 15.2.1#include指令273 15.2.2共享宏定义和类型定义274 15.2.3共享函数原型275 15.2.4共享变量声明277 15.2.5嵌套包含278 15.2.6保护头文件278 15.2.7头文件中的#error指令279 15.3把程序划分成多个文件279 15.4构建多文件程序285 15.4.1makefile285 15.4.2链接期间的错误287 15.4.3重新构建程序287 15.4.4在程序外定义宏289 问与答289 练习题291 编程题292 第16章 结构、联合和枚举293 16.1结构变量293 16.1.1结构变量的声明293 16.1.2结构变量的初始化295 16.1.3指示器295 16.1.4对结构的操作296 16.2结构类型296 16.2.1结构标记的声明297 16.2.2结构类型的定义298 16.2.3结构作为参数和返回值298 16.2.4复合字面量299 16.2.5匿名结构300 16.3嵌套的数组和结构301 16.3.1嵌套的结构301 16.3.2结构数组302 16.3.3结构数组的初始化302 16.4联合309 16.4.1用联合来节省空间310 16.4.2用联合来构造混合的数据结构312 16.4.3为联合添加“标记字段”312 16.4.4匿名联合313 16.5枚举314 16.5.1枚举标记和类型名315 16.5.2枚举作为整数315 16.5.3用枚举声明“标记字段”316 问与答316 练习题318 编程题323 第17章 指针的高级应用324 17.1动态存储分配324 17.1.1内存分配函数325 17.1.2空指针325 17.2动态分配字符串326 17.2.1使用malloc函数为字符串分配内存326 17.2.2在字符串函数中使用动态存储分配327 17.2.3动态分配字符串的数组327 17.3动态分配数组329 17.3.1使用malloc函数为数组分配存储空间329 17.3.2calloc函数330 17.3.3realloc函数330 17.4释放存储空间331 17.4.1free函数332 17.4.2“悬空指针”问题332 17.5链表332 17.5.1声明结点类型333 17.5.2创建结点333 17.5.3->运算符334 17.5.4在链表的开始处插入结点335 17.5.5搜索链表337 17.5.6从链表中删除结点338 17.5.7有序链表339 17.6指向指针的指针344 17.7指向函数的指针345 17.7.1函数指针作为参数345 17.7.2qsort函数346 17.7.3函数指针的其他用途347 17.8受限指针350 17.9弹性数组成员351 问与答352 练习题355 编程题358 第18章 声明359 18.1声明的语法359 18.2存储类型360 18.2.1变量的性质361 18.2.2auto存储类型361 18.2.3static存储类型362 18.2.4extern存储类型363 18.2.5register存储类型363 18.2.6函数的存储类型364 18.2.7小结365 18.3类型限定符366 18.4声明符366 18.4.1解释复杂声明368 18.4.2使用类型定义来简化声明369 18.5初始化器369 18.6内联函数371 18.6.1内联定义371 18.6.2对内联函数的限制372 18.6.3在GCC中使用内联函数372 18.7函数指定符_Noreturn和头<stdnoreturn.h>373 18.8静态断言373 问与答374 练习题377 第19章 程序设计379 19.1模块379 19.1.1内聚性与耦合性381 19.1.2模块的类型381 19.2信息隐藏381 19.3抽象数据类型385 19.3.1封装385 19.3.2不完整类型386 19.4栈抽象数据类型386 19.4.1为栈抽象数据类型定义接口386 19.4.2用定长数组实现栈抽象数据类型388 19.4.3改变栈抽象数据类型中数据项的类型389 19.4.4用动态数组实现栈抽象数据类型390 19.4.5用链表实现栈抽象数据类型392 19.5抽象数据类型的设计问题394 19.5.1命名惯例394 19.5.2错误处理394 19.5.3通用抽象数据类型394 19.5.4新语言中的抽象数据类型395 问与答395 练习题396 编程题397 第20章 底层程序设计398 20.1位运算符398 20.1.1移位运算符398 20.1.2按位取反运算符、按位与运算符、按位异或运算符和按位或运算符399 20.1.3用位运算符访问位400 20.1.4用位运算符访问位域401 20.2结构中的位域403 20.3其他底层技术405 20.3.1定义依赖机器的类型405 20.3.2用联合来提供数据的多个视角405 20.3.3将指针作为地址使用407 20.3.4volatile类型限定符409 20.4对象的对齐410 20.4.1对齐运算符_Alignof410 20.4.2对齐指定符_Alignas和头<stdalign.h>410 问与答411 练习题411 编程题413 第21章 标准库414 21.1标准库的使用414 21.1.1对标准库中所用名字的限制415 21.1.2使用宏隐藏的函数415 21.2C89标准库概述416 21.3C99标准库更新417 21.4<stddef.h>:常用定义418 21.5<stdbool.h>:布尔类型和值419 21.6C11标准库更新419 21.7<stdalign.h>:地址的对齐420 21.8<stdnoreturn.h>:宏noreturn的定义420 问与答420 练习题421 编程题422 第22章 输入/输出423 22.1流423 22.1.1文件指针424 22.1.2标准流和重定向424 22.1.3文本文件与二进制文件425 22.2文件操作426 22.2.1打开文件426 22.2.2模式427 22.2.3关闭文件428 22.2.4为打开的流附加文件428 22.2.5从命令行获取文件名429 22.2.6临时文件430 22.2.7文件缓冲431 22.2.8其他文件操作432 22.3格式化的输入/输出433 22.3.1…printf函数433 22.3.2…printf转换说明433 22.3.3C99对…printf转换说明的修改435 22.3.4…printf转换说明示例436 22.3.5…scanf函数438 22.3.6…scanf格式串438 22.3.7…scanf转换说明439 22.3.8C99对…scanf转换说明的改变441 22.3.9scanf示例441 22.3.10检测文件末尾和错误条件442 22.4字符的输入/输出444 22.4.1输出函数444 22.4.2输入函数444 22.5行的输入/输出446 22.5.1输出函数446 22.5.2输入函数447 22.6块的输入/输出447 22.7文件定位448 22.8字符串的输入/输出451 22.8.1输出函数451 22.8.2输入函数452 问与答452 练习题455 编程题458 第23章 库对数值和字符数据的支持462 23.1<float.h>:浮点类型的特性462 23.2<limits.h>:整数类型的大小464 23.3<math.h>:数学计算(C89)465 23.3.1错误465 23.3.2三角函数466 23.3.3双曲函数466 23.3.4指数函数和对数函数467 23.3.5幂函数467 23.3.6就近舍入函数、绝对值函数和取余函数468 23.4<math.h>:数
— 没有更多了 —
本店暂时无法向该地区发货
以下为对购买帮助不大的评价