本书由浅入深地介绍什么是程序,怎样编写程序,怎样调试和运行程序。以程序设计贯穿始终,使学生掌握程序设计的基本知识和方法。本书将算法与C语言的语法紧密结合,而不是孤立地介绍语法。作者精心考虑怎样将算法与语法紧密而巧妙地结合起来。按照“算法是程序的灵魂,语言是编程的工具”的思路组织全书。
目录
- 第1章程序设计和C语言1
- 1.1什么是计算机程序1
- 1.2什么是计算机语言1
- 1.3C语言的发展及其特点3
- 1.4最简单的C语言程序5
- 1.4.1最简单的C语言程序举例5
- 1.4.2C语言程序的结构9
- 1.5运行C程序的步骤与方法11
- 1.6程序设计的任务13
- 习题14
- 第2章算法——程序的灵魂15
- 2.1程序=算法+数据结构15
- 2.2什么是算法16
- 2.3简单的算法举例17
- 2.4算法的特性20
- 2.5怎样表示一个算法21
- 2.5.1用自然语言表示算法21
- 2.5.2用流程图表示算法21
- 2.5.3三种基本结构和改进的流程图25
- 2.5.4用NS流程图表示算法28
- 2.5.5用伪代码表示算法31
- 2.5.6用计算机语言表示算法32
- 2.6结构化程序设计方法33
- 习题35
- 第3章最简单的C程序设计——顺序程序设计37
- 3.1顺序程序设计举例37
- 3.2数据的表现形式及其运算39
- 3.2.1常量和变量39
- 3.2.2数据类型42
- 3.2.3整型数据44
- 3.2.4字符型数据47
- 3.2.5浮点型数据49
- 3.2.6怎样确定常量的类型50
- 3.3运算符和表达式51
- 3.3.1C运算符52
- 3.3.2基本的算术运算符52
- 3.3.3自增(++)、自减(--)运算符53
- 3.3.4算术表达式和运算符的优先级与结合性53
- 3.3.5不同类型数据间的混合运算54
- 3.3.6强制类型转换运算符55
- 3.4C语句56
- 3.4.1C语句的作用和分类56
- 3.4.2最基本的语句——赋值语句58
- 3.5数据的输入输出64
- 3.5.1输入输出举例64
- 3.5.2有关数据输入输出的概念65
- 3.5.3用printf函数输出数据67
- 3.5.4用scanf函数输入数据74
- 3.5.5字符输入输出函数76
- 习题80
- 第4章选择结构程序设计83
- 4.1选择结构和条件判断83
- 4.2用if语句实现选择结构85
- 4.2.1用if语句处理选择结构举例85
- 4.2.2if语句的一般形式 87
- 4.3关系运算符和关系表达式89
- 4.3.1关系运算符及其优先次序90
- 4.3.2关系表达式90
- 4.4逻辑运算符和逻辑表达式90
- 4.4.1逻辑运算符及其优先次序91
- 4.4.2逻辑表达式92
- 4.5条件运算符和条件表达式94
- 4.6选择结构的嵌套96
- 4.7用switch语句实现多分支选择结构99
- 4.8选择结构程序综合举例102
- 习题107
- 第5章循环结构程序设计110
- 5.1为什么需要循环控制110
- 5.2用while语句实现循环111
- 5.3用do…while语句实现循环113
- 5.4用for 语句实现循环116
- 5.5循环的嵌套120
- 5.6几种循环的比较121
- 5.7改变循环执行的状态121
- 5.7.1用break语句提前终止循环122
- 5.7.2用continue语句提前结束本次循环123
- 5.7.3break语句和continue语句的区别124
- 5.8循环程序举例127
- 习题137
- 第6章利用数组处理批量数据139
- 6.1怎样定义和引用一维数组139
- 6.1.1怎样定义一维数组140
- 6.1.2怎样引用一维数组元素140
- 6.1.3一维数组的初始化142
- 6.1.4一维数组程序举例142
- 6.2怎样定义和引用二维数组145
- 6.2.1怎样定义二维数组146
- 6.2.2怎样引用二维数组的元素147
- 6.2.3二维数组的初始化148
- 6.2.4二维数组程序举例149
- 6.3字符数组151
- 6.3.1怎样定义字符数组151
- 6.3.2字符数组的初始化152
- 6.3.3怎样引用字符数组中的元素152
- 6.3.4字符串和字符串结束标志153
- 6.3.5字符数组的输入输出156
- 6.3.6使用字符串处理函数157
- 6.3.7字符数组应用举例162
- 习题165
- 第7章用函数实现模块化程序设计167
- 7.1为什么要用函数167
- 7.2怎样定义函数169
- 7.2.1为什么要定义函数169
- 7.2.2定义函数的方法170
- 7.3调用函数171
- 7.3.1函数调用的形式171
- 7.3.2函数调用时的数据传递172
- 7.3.3函数调用的过程174
- 7.3.4函数的返回值174
- 7.4对被调用函数的声明和函数原型176
- 7.5函数的嵌套调用179
- 7.6函数的递归调用181
- 7.7数组作为函数参数189
- 7.7.1数组元素作函数实参189
- 7.7.2一维数组名作函数参数191
- 7.7.3多维数组名作函数参数194
- 7.8局部变量和全局变量196
- 7.8.1局部变量196
- 7.8.2全局变量197
- 7.9变量的存储方式和生存期201
- 7.9.1动态存储方式与静态存储方式201
- 7.9.2局部变量的存储类别202
- 7.9.3全局变量的存储类别205
- 7.9.4存储类别小结209
- 7.10关于变量的声明和定义211
- 7.11内部函数和外部函数212
- 7.11.1内部函数212
- 7.11.2外部函数213
- 习题215
- 第8章善于利用指针217
- 8.1指针是什么217
- 8.2指针变量219
- 8.2.1使用指针变量的例子219
- 8.2.2怎样定义指针变量220
- 8.2.3怎样引用指针变量222
- 8.2.4指针变量作为函数参数224
- 8.3通过指针引用数组229
- 8.3.1数组元素的指针229
- 8.3.2在引用数组元素时指针的运算229
- 8.3.3通过指针引用数组元素231
- 8.3.4用数组名作函数参数236
- 8.3.5通过指针引用多维数组243
- 8.4通过指针引用字符串254
- 8.4.1字符串的引用方式 254
- 8.4.2字符指针作函数参数258
- 8.4.3使用字符指针变量和字符数组的比较262
- 8.5指向函数的指针265
- 8.5.1什么是函数的指针265
- 8.5.2用函数指针变量调用函数265
- 8.5.3怎样定义和使用指向函数的指针变量267
- 8.5.4用指向函数的指针作函数参数269
- 8.6返回指针值的函数273
- 8.7指针数组和多重指针276
- 8.7.1什么是指针数组 276
- 8.7.2指向指针数据的指针变量279
- 8.7.3指针数组作main函数的形参281
- 8.8动态内存分配与指向它的指针变量284
- 8.8.1什么是内存的动态分配284
- 8.8.2怎样建立内存的动态分配284
- 8.8.3void指针类型 286
- 8.9有关指针的小结288
- 习题291
- 第9章用户自己建立数据类型293
- 9.1定义和使用结构体变量293
- 9.1.1自己建立结构体类型293
- 9.1.2定义结构体类型变量 295
- 9.1.3结构体变量的初始化和引用296
- 9.2使用结构体数组300
- 9.2.1定义结构体数组300
- 9.2.2结构体数组的应用举例301
- 9.3结构体指针303
- 9.3.1指向结构体变量的指针303
- 9.3.2指向结构体数组的指针304
- 9.3.3用结构体变量和结构体变量的指针作函数参数306
- 9.4用指针处理链表309
- 9.4.1什么是链表 309
- 9.4.2建立简单的静态链表310
- 9.4.3建立动态链表311
- 9.4.4输出链表315
- 9.5共用体类型317
- 9.5.1什么是共用体类型317
- 9.5.2引用共用体变量的方式318
- 9.5.3共用体类型数据的特点319
- 9.6使用枚举类型322
- 9.7用typedef声明新类型名326
- 习题330
- 第10章对文件的输入输出331
- 10.1C文件的有关基本知识331
- 10.1.1什么是文件331
- 10.1.2文件名332
- 10.1.3文件的分类332
- 10.1.4文件缓冲区333
- 10.1.5文件类型指针333
- 10.2打开与关闭文件334
- 10.2.1用fopen函数打开数据文件335
- 10.2.2用fclose函数关闭数据文件337
- 10.3顺序读写数据文件338
- 10.3.1怎样向文件读写字符338
- 10.3.2怎样向文件读写一个字符串341
- 10.3.3用格式化的方式读写文本文件345
- 10.3.4用二进制方式向文件读写一组数据345
- 10.4随机读写数据文件350
- 10.4.1文件位置标记及其定位350
- 10.4.2随机读写 353
- 10.5文件读写的出错检测355
- 习题355
- 附录357
- 附录A常用字符与ASCII代码对照表357
- 附录BC语言中的关键字358
- 附录C运算符和结合性359
- 附录DC语言常用语法提要361
- 附录EC库函数365
- 参考文献371