本书是“零基础”读者的C语言教材。全书按照基本类型数据、结构化程序设计、模块化函数设计、指针、数组、字符串、结构体、文件的顺序阐述了C语言语法和句法规则,归纳了分支、循环算法设计思路和函数设计方法,并配以大量实例阐述了程序设计方法。本书习题包括选择题、填空题、编程题3种题型,覆盖范围广。 本书可作为高等院校计算机及相关专业的教材,也可作为自学参考书。
目录
- 第1章绪论1
- 1.1计算机基础知识1
- 1.1.1冯·诺依曼体系结构的计算机及工作原理1
- 1.1.2数制及数制间的转换3
- 1.1.3数据在内存中的存储7
- 1.1.4软件系统12
- 1.2程序设计基础14
- 1.2.1利用计算机解决实际问题的具体步骤15
- 1.2.2算法及其表示16
- 1.2.3结构化程序设计21
- 1.3C语言简介22
- 1.3.1C语言的发展22
- 1.3.2C语言的符号集24
- 1.3.3C程序结构25
- 习题27
- 第2章数据及运算29
- 2.1数据类型29
- 2.2C程序中数据的表示方法30
- 2.2.1常量30
- 2.2.2变量34
- 2.3运算符及其表达式37
- 2.3.1C运算符概述37
- 2.3.2算术运算符及算术表达式37
- 2.3.3赋值运算符和赋值表达式39
- 2.3.4自增自减运算符及含自增自减运算的表达式40
- 2.3.5逗号运算符和逗号表达式41
- 2.3.6表达式小结42
- 2.4类型转换42
- 2.4.1类型的自动转换42
- 2.4.2类型的强制转换47
- 习题48
- 第3章顺序结构程序设计50
- 3.1C语句概述50
- 3.2常用库函数使用51
- 3.2.1库函数的使用52
- 3.2.2输出函数53
- 3.2.3输入函数59
- 3.3顺序结构程序设计举例64
- 习题66
- 第4章选择结构程序设计69
- 4.1逻辑量69
- 4.1.1任意确定的值69
- 4.1.2关系表达式69
- 4.1.3逻辑表达式70
- 4.2if语句72
- 4.2.1if语句的格式72
- 4.2.2条件表达式75
- 4.2.3if语句的嵌套77
- 4.3switch语句81
- 4.4选择结构程序设计举例85
- 习题90
- 第5章循环结构程序设计94
- 5.1循环结构的概念94
- 5.2实现循环的语句95
- 5.2.1while语句95
- 5.2.2do~while语句99
- 5.2.3for语句102
- 5.3break和continue语句105
- 5.3.1break语句105
- 5.3.2continue语句107
- 5.4循环的嵌套108
- 5.5循环结构程序设计举例111
- 习题116
- 第6章函数122
- 6.1概述122
- 6.1.1函数概述122
- 6.1.2C程序结构124
- 6.1.3函数分类125
- 6.2函数的定义125
- 6.2.1函数定义的一般形式125
- 6.2.2关于函数定义的几点说明128
- 6.3函数的调用130
- 6.3.1函数声明130
- 6.3.2函数调用132
- 6.3.3函数调用的执行机制133
- 6.4函数的嵌套调用和递归调用134
- 6.4.1函数的嵌套调用134
- 6.4.2函数的递归调用135
- 6.5变量的作用域与生存期139
- 6.5.1变量的属性139
- 6.5.2局部变量140
- 6.5.3全局变量142
- 6.6函数举例147
- 习题151
- 第7章指针156
- 7.1指针的基本概念156
- 7.1.1变量的直接访问和间接访问156
- 7.1.2指针与指针变量157
- 7.2指向变量的指针变量158
- 7.2.1指针变量的定义158
- 7.2.2指向关系的建立159
- 7.2.3间接访问160
- 7.3指针变量做函数形参163
- 7.4指向函数的指针和返回指针值的函数166
- 7.4.1指向函数的指针166
- 7.4.2指向函数的指针变量167
- 7.4.3指向函数的指针变量做函数参数169
- 7.4.4返回指针值的函数171
- 7.5多级指针172
- 7.5.1二级指针172
- 7.5.2多级指针173
- 习题173
- 第8章数组176
- 8.1数组的基本概念176
- 8.2一维数组177
- 8.2.1一维数组的定义177
- 8.2.2一维数组元素的引用178
- 8.2.3一维数组元素的初始化180
- 8.2.4一维数组程序设计举例180
- 8.3指向数组元素的指针变量184
- 8.3.1指向数组元素的指针变量184
- 8.3.2指针变量做函数形参访问主调函数中的数组元素190
- 8.4二维数组195
- 8.4.1二维数组的定义195
- 8.4.2二维数组元素的引用196
- 8.4.3二维数组元素的初始化197
- 8.4.4二维数组程序设计举例198
- 8.5二维数组和指针200
- 8.5.1二维数组的指针200
- 8.5.2指向二维数组元素的指针变量201
- 8.5.3指向一维数组的指针变量202
- 8.5.4指向一维数组的指针变量做函数形参203
- 8.6指针数组204
- 8.6.1指针数组的定义205
- 8.6.2指针数组的引用与初始化205
- 8.6.3利用指针数组处理二维数组205
- 8.6.4一维指针数组和二级指针的关系206
- 习题206
- 第9章字符串210
- 9.1字符数组和字符串210
- 9.1.1一维字符数组表示字符串210
- 9.1.2二维字符数组表示字符串214
- 9.2指向字符的指针变量和字符串216
- 9.2.1指向字符的指针变量表示字符串216
- 9.2.2使用指针数组表示多个字符串224
- 9.3命令行参数227
- 习题228
- 第10章结构体、联合体与枚举232
- 10.1结构体类型及结构体变量232
- 10.1.1结构体类型的定义232
- 10.1.2结构体变量233
- 10.1.3结构体嵌套237
- 10.1.4结构体变量做函数形参239
- 10.2结构体数组240
- 10.2.1结构体数组的定义241
- 10.2.2结构体数组的引用241
- 10.2.3结构体数组的初始化242
- 10.3结构体指针243
- 10.3.1指向结构体变量的指针变量243
- 10.3.2指向结构体数组元素的指针245
- 10.3.3结构体指针变量做函数形参247
- 10.4链表248
- 10.4.1单向链表的概念248
- 10.4.2内存的动态分配与释放函数249
- 10.4.3单向链表算法251
- 10.5联合体260
- 10.5.1联合体类型的定义260
- 10.5.2联合体变量的定义261
- 10.5.3联合体变量的引用262
- 10.6枚举266
- 10.6.1枚举类型的定义266
- 10.6.2枚举变量的定义和引用266
- 10.7类型别名268
- 习题269
- 第11章位和位段273
- 11.1位运算273
- 11.1.1位运算符273
- 11.1.2位运算举例278
- 11.2位段280
- 11.2.1位段结构体类型的定义280
- 11.2.2位段结构体类型变量的定义281
- 11.2.3位段结构体变量成员的引用283
- 习题284
- 第12章文件287
- 12.1文件概述287
- 12.1.1文件的概念287
- 12.1.2缓冲文件系统288
- 12.2文件的使用288
- 12.2.1文件类型指针289
- 12.2.2文件的打开289
- 12.2.3文件的关闭291
- 12.2.4文件的读写291
- 12.2.5文件的定位297
- 12.2.6文件的检测299
- 12.3文件程序设计举例300
- 习题303
- 第13章编译预处理304
- 13.1宏定义304
- 13.1.1不带参数的宏定义304
- 13.1.2带参数的宏定义307
- 13.2文件包含309
- 13.3条件编译311
- 习题313
- 附录1常用字符的ASCII码表315
- 附录2C的运算符及优先级和结合性316
- 附录3Visual C++ 6.0集成开发环境317
- 附录3.1在Visual C++ 6.0环境下编写C语言程序318
- 附录3.2Visual C++ 6.0常用命令322
- 附录3.3常见错误提示信息及修改建议324
- 附录4常用标准库函数328