c语言 ¥字符串,C语言程序设计:现代方法

【内容简介】

时至今日,C语言仍然是计算机领域的通用语言之一,但今天的C语言已经和最初的时候大不相同了。本书主要的一个目的就是通过一种“现代方法”来介绍C语言,书中强调标准C,强调软件工程,不再强调“手工优化”。这一版中紧密结合了C99标准,并与C89标准进行对照,补充了C99中的全新特性。本书分为C语言的基础特性、C语言的高级特性、C语言标准库和参考资料4个部分。每章末尾都有一个“问与答”小节给出一系列与该章内容相关的问题及答案,此外还包含适量的习题。

《C语言程序设计:现代方法(第2版)》是为大学本科阶段的C语言课程编写的教材,同时也非常适合作为其他课程的辅助用书。

【作者简介】

K.N.King世界知名的计算机程序设计教育家,现为佐治亚州立大学数学与计算机科学系副教授。他拥有耶鲁大学计算机科学硕士学位,加州大学伯克利分校计算机科学博士学位,曾任教于佐治亚理工学院。除本书外,他还撰写了广受欢迎的著作Modula-2:ACompleteGuide和JavaProgramming:FromtheBeginning,并在Dr.DobbsJournal等专业杂志上发表了许多文章。业余时间,King教授还在多部电影中扮演过角色。

吕秀锋,亚洲理工大学(AIT)计算机软件硕士,现为北京理工大学软件学院教师。多年来一直从事“计算机基础(双语)”、“C语言程序设计(双语)”以及“程序设计开发与实践”等本科生课程的教学工作,深受学生欢迎。她还译有《数据结构与算法:C#语言描述》一书。

黄倩,中国科学院计算技术研究所工学博士,中国计算机学会会员。研究方向包括视频处理、视频监控等,已在知名的国际期刊和国际会议论文集上发表10篇论文。译有《编程珠玑(第2版)》一书,受到读者欢迎。

【目录】

第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语言的缺点3

1.2.3高效地使用C语言4

问与答5

第2章C语言基本概念7

2.1编写一个简单的C程序7

程序显示双关语7

2.1.1编译和链接8

2.1.2集成开发环境8

2.2简单程序的一般形式9

2.2.1指令9

2.2.2函数9

2.2.3语句10

2.2.4显示字符串10

2.3注释11

2.4变量和赋值12

2.4.1类型12

2.4.2声明13

2.4.3赋值13

2.4.4显示变量的值14

程序计算箱子的空间重量14

2.4.5初始化15

2.4.6显示表达式的值16

2.5读入输入16

程序计算箱子的空间重量(改进版)16

2.6定义常量的名字17

程序华氏温度转换为摄氏温度17

2.7标识符18

2.8C程序的书写规范19

问与答21

练习题23

编程题24

第3章格式化输入/输出26

3.1printf函数26

3.1.1转换说明27

程序用printf函数格式化数28

3.1.2转义序列28

3.2scanf函数29

3.2.1scanf函数的工作方法30

3.2.2格式串中的普通字符31

3.2.3易混淆的printf函数和scanf函数32

程序分数相加32

问与答33

练习题34

编程题35

第4章表达式36

4.1算术运算符36

程序计算通用产品代码的校验位38

4.2赋值运算符39

4.2.1简单赋值40

4.2.2左值41

4.2.3复合赋值41

4.3自增运算符和自减运算符42

4.4表达式求值43

4.5表达式语句45

问与答45

练习题47

编程题49

第5章选择语句50

5.1逻辑表达式50

5.1.1关系运算符50

5.1.2判等运算符51

5.1.3逻辑运算符51

5.2if语句52

5.2.1复合语句53

5.2.2else子句53

5.2.3级联式if语句54

程序计算股票经纪人的佣金55

5.2.4“悬空else”的问题56

5.2.5条件表达式57

5.2.6C89中的布尔值58

5.2.7C99中的布尔值58

5.3switch语句59

程序显示法定格式的日期61

问与答62

练习题65

编程题67

第6章循环69

6.1while语句69

程序显示平方表71

程序数列求和71

6.2do语句72

程序计算整数的位数73

6.3for语句73

6.3.1for语句的惯用法74

6.3.2在for语句中省略表达式75

6.3.3C99中的for语句75

6.3.4逗号运算符76

程序显示平方表(改进版)77

6.4退出循环78

6.4.1break语句78

6.4.2continue语句78

6.4.3goto语句79

程序账簿结算80

6.5空语句81

问与答83

练习题84

编程题85

第7章基本类型88

7.1整数类型88

7.1.1C99中的整数类型90

7.1.2整数常量90

7.1.3C99中的整数常量91

7.1.4整数溢出91

7.1.5读/写整数91

程序数列求和(改进版)92

7.2浮点类型93

7.2.1浮点常量94

7.2.2读/写浮点数94

7.3字符类型94

7.3.1字符操作95

7.3.2有符号字符和无符号字符95

7.3.3算术类型96

7.3.4转义序列96

7.3.5字符处理函数97

7.3.6用scanf和printf读/写字符98

7.3.7用getchar和putchar读/写字符98

程序确定消息的长度99

7.4类型转换100

7.4.1常用算术转换101

7.4.2赋值过程中的转换102

7.4.3C99中的隐式转换103

7.4.4强制类型转换103

7.5类型定义105

7.5.1类型定义的优点105

7.5.2类型定义和可移植性105

7.6sizeof运算符106

问与答107

练习题109

编程题110

第8章数组113

8.1一维数组113

8.1.1数组下标113

程序数列反向115

8.1.2数组初始化115

8.1.3指定初始化式116

程序检查数中重复出现的数字116

8.1.4对数组使用sizeof运算符117

程序计算利息118

8.2多维数组119

8.2.1多维数组初始化120

8.2.2常量数组121

程序发牌121

8.3C99中的变长数组122

问与答123

练习题124

编程题125

第9章函数129

9.1函数的定义和调用129

程序计算平均值129

程序显示倒计数130

程序显示双关语(改进版)131

9.1.1函数定义132

9.1.2函数调用133

程序判定素数134

9.2函数声明135

9.3实际参数136

9.3.1实际参数的转换137

9.3.2数组型实际参数138

9.3.3变长数组形式参数140

9.3.4在数组参数声明中使用static141

9.3.5复合字面量141

9.4return语句142

9.5程序终止143

9.6递归144

程序快速排序146

问与答147

练习题150

编程题153

第10章程序结构155

10.1局部变量155

10.1.1静态局部变量156

10.1.2形式参数156

10.2外部变量156

10.2.1示例:用外部变量实现栈156

10.2.2外部变量的利与弊157

程序猜数158

10.3程序块161

10.4作用域162

10.5构建C程序163

程序给一手牌分类163

问与答169

练习题169

编程题170

第11章指针172

11.1指针变量172

11.2取地址运算符和间接寻址运算符173

11.2.1取地址运算符173

11.2.2间接寻址运算符174

11.3指针赋值174

11.4指针作为参数176

程序找出数组中的最大元素和最小元素177

11.5指针作为返回值179

问与答180

练习题181

编程题182

第12章指针和数组184

12.1指针的算术运算184

12.1.1指针加上整数185

12.1.2指针减去整数185

12.1.3两个指针相减186

12.1.4指针比较186

12.1.5指向复合常量的指针186

12.2指针用于数组处理186

12.3用数组名作为指针188程序数列反向(改进版)189

12.3.1数组型实际参数(改进版)189

12.3.2用指针作为数组名191

12.4指针和多维数组191

12.4.1处理多维数组的元素191

12.4.2处理多维数组的行192

12.4.3处理多维数组的列192

12.4.4用多维数组名作为指针192

12.5C99中的指针和变长数组193

问与答194

练习题195

编程题197

第13章字符串198

13.1字符串字面量198

13.1.1字符串字面量中的转义序列198

13.1.2延续字符串字面量199

13.1.3如何存储字符串字面量199

13.1.4字符串字面量的操作200

13.1.5字符串字面量与字符常量200

13.2字符串变量200

13.2.1初始化字符串变量201

13.2.2字符数组与字符指针202

13.3字符串的读和写203

13.3.1用printf函数和puts函数写字符串203

13.3.2用scanf函数和gets函数读字符串203

13.3.3逐个字符读字符串204

13.4访问字符串中的字符205

13.5使用C语言的字符串库206

13.5.1strcpy函数207

13.5.2strlen函数208

13.5.3strcat函数208

13.5.4strcmp函数209程序显示一个月的提醒列表209

13.6字符串惯用法211

13.6.1搜索字符串的结尾211

13.6.2复制字符串213

13.7字符串数组214

程序核对行星的名字217

问与答218

练习题220

编程题222

第14章预处理器225

14.1预处理器的工作原理225

14.2预处理指令227

14.3宏定义227

14.3.1简单的宏227

14.3.2带参数的宏229

14.3.3#运算符231

14.3.4##运算符231

14.3.5宏的通用属性232

14.3.6宏定义中的圆括号233

14.3.7创建较长的宏233

14.3.8预定义宏234

14.3.9C99中新增的预定义宏235

14.3.10空的宏参数236

14.3.11参数个数可变的宏236

14.3.12__func__标识符237

14.4条件编译237

14.4.1#if指令和#endif指令238

14.4.2defined运算符238

14.4.3#ifdef指令和#ifndef指令239

14.4.4#elif指令和#else指令239

14.4.5使用条件编译240

14.5其他指令240

14.5.1#error指令240

14.5.2#line指令241

14.5.3#pragma指令242

14.5.4_Pragma运算符242

问与答243

练习题245

第15章编写大型程序248

15.1源文件248

15.2头文件249

15.2.1#include指令249

15.2.2共享宏定义和类型定义250

15.2.3共享函数原型251

15.2.4共享变量声明252

15.2.5嵌套包含253

15.2.6保护头文件253

15.2.7头文件中的#error指令254

15.3把程序划分成多个文件254程序文本格式化255

15.4构建多文件程序260

15.4.1makefile260

15.4.2链接期间的错误262

15.4.3重新构建程序262

15.4.4在程序外定义宏264

问与答264

练习题265

编程题266

第16章结构、联合和枚举267

16.1结构变量267

16.1.1结构变量的声明267

16.1.2结构变量的初始化269

16.1.3指定初始化269

16.1.4对结构的操作270

16.2结构类型270

16.2.1结构标记的声明271

16.2.2结构类型的定义272

16.2.3结构作为参数和返回值272

16.2.4复合字面量273

16.3嵌套的数组和结构274

16.3.1嵌套的结构274

16.3.2结构数组274

16.3.3结构数组的初始化275程序维护零件数据库275

16.4联合281

16.4.1用联合来节省空间282

16.4.2用联合来构造混合的数据结构284

16.4.3为联合添加“标记字段”284

16.5枚举285

16.5.1枚举标记和类型名286

16.5.2枚举作为整数286

16.5.3用枚举声明“标记字段”286

问与答287

练习题289

编程题293

第17章指针的高级应用294

17.1动态存储分配294

17.1.1内存分配函数294

17.1.2空指针295

17.2动态分配字符串296

……

第18章声明327

第19章程序设计345

第20章底层程序设计363

第21章标准库377

第22章输入/输出384

第23章库对数值和字符数据的支持419

第24章错误处理446

第25章国际化特性456

第26章其他库函数482

第27章C99对数学计算的新增支持503

附录AC语言运算符524

附录BC99与C89的比较525

附录CC89与经典C的比较529

附录D标准库函数532

附录EASCII字符集569

参考文献570

索引573

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值