本书以C语言的基本语法、语句为基础,深入浅出地讲述了C语言程序设计的基本概念、设计思想与方法。本书文字严谨、流畅,例题丰富,注重程序设计技能的训练。全书共10章,主要内容包括程序设计基础及C语言概述、C语言的数据类型及运算、顺序结构程序设计、选择结构程序设计、循环结构程序设计、数组、函数、指针、结构体与共用体、文件。
本书可作为高等院校非计算机专业学生学习C语言程序设计的教材,也可作为程序设计爱好者学习C语言程序设计的参考书。
本书在编写过程中,力求做到概念准确、内容简洁、由浅入深、循序渐进、繁简适当、题型丰富,注重常用算法的介绍,有助于培养学生设计程序和分析问题的能力。
书中全部实例都已上机调试通过。
文字严谨、流畅,例题丰富,文档规范,注重程序设计技能训练。
周虹,佳木斯大学计算机学院副院长,教授。1989年毕业,2004晋教授硕士导师,2007年《工科计算机基础的改革与实践》获佳木斯大学优秀教学成果一等奖,2007年《计算机基础教学改革与实践》获黑龙江省高等教育学会优秀教学成果一等奖。2009年《高等学校计算机基础教学的改革与实践》获省优秀教学成果二等奖2009年c语言程序设计获黑龙江省精品课。主要讲授《c语言程序设计》《数据结构》《数据库原理》《软件工程》《计算机基础》等课程。
第 1章 程序设计及C语言概述 1
1.1 算法及表示 1
1.1.1 算法的特性 1
1.1.2 算法的表示 1
1.2 程序设计及结构化程序设计方法 4
1.2.1 程序 4
1.2.2 程序设计的步骤 5
1.2.3 结构化程序设计 6
1.3 C语言的发展及特点 7
1.3.1 C 语言出现的历史背景 7
1.4 C语言程序的构成 9
1.5 程序的书写格式和程序的书写风格 11
1.6 C语言的编程环境 11
本章小结 15
练习与提高 15
第 2章 C语言的基本数据及其运算 17
2.1 C语言数据类型简介 17
2.2 标识符 18
2.2.1字符集 18
2.2.2标识符 18
2.2.3标识符的分类 18
2.3 常量与变量 19
2.3.1 常量 19
2.3.2 符号常量 19
2.3.3变量 19
2.3.4 变量的初始化 19
2.4 整型数据 20
2.4.1 整型数据在内存中的存储形式 20
2.4.2整型常量 20
2.4.3整型变量 20
2.5实型数据 21
2.5.1实型常量 21
2.5.2实型变量 22
2.6 字符型数据 22
2.6.1 字符常量 22
2.6.2字符串常量 24
2.6.3字符变量 24
2.7 运算符和表达式 25
2.7.1 C运算符简介 25
2.7.2 表达式的求值规则 25
2.7.3混合运算中的类型转换 25
2.8 算术运算符和算术表达式 27
2.8.1 基本算术运算符 27
2.8.2 算术表达式和运算符的优先级与结合性 27
2.8.3 自增、自减运算符 27
2.9 赋值运算与赋值表达式 28
2.9.1 赋值运算符 28
2.9.2 类型转换 28
2.9.3 复合的赋值运算符 29
2.9.4 赋值表达式 29
2.10 逗号运算符和逗号表达式 29
2.11 关系运算符和关系表达式 30
2.11.1关系运算符及其优先次序 30
2.11.2 关系表达式 30
2.12 逻辑运算符及逻辑表达式 31
2.12.1逻辑运算符及其优先次序 31
2.12.2 逻辑表达式 31
2.13 条件运算符与条件表达式 33
2.13.1 条件运算符与条件表达式 33
2.13.2 条件运算符的优先级与结合性 33
2.14 位运算符与位运算 34
2.14.1 按位与运算符(&) 34
2.14.2 按位或运算符(|) 35
2.14.3 按位异或运算符(^) 35
2.14.4 按位取反运算符(~) 36
2.14.5 左移运算符(<<) 36
2.14.6 右移运算符(>>) 36
2.15 应用举例 37
本章小结 38
练习与提高 39
第3章 顺序程序设计 43
3.1 C语句概述 43
3.2 赋值语句 45
3.3 字符数据的输入输出 46
3.3.1 字符输出函数putchar 46
3.3.2 字符输入函数getchar 47
3.4 格式输入与输出 48
3.4.1 格式输出函数printf 48
3.4.2 格式输入函数scanf 54
3.5 应用举例 58
本章小结 60
练习与提高 61
第4章 选择结构程序设计 64
4.1 if语句 64
4.1.1 简单if语句 64
4.1.2 双分支if语句 65
4.1.3 多分支if语句 66
4.1.4 if语句使用说明 69
4.2 if语句的嵌套 70
4.3 switch语句 74
4.4 应用举例 76
练习与提高 82
第5章 循环结构程序设计 92
5.1 while语句 92
5.2 do-while语句 95
5.3 for语句 97
5.4 几种循环的比较 102
5.5 循环嵌套 102
5.6 continue语句 105
5.7 break语句 106
5.8 应用举例 106
本章小结 114
练习与提高 115
第6章 数组 120
6.1 数组和数组元素 120
6.2 一维数组 121
6.2.1 一维数组的定义和使用 121
6.2.2 一维数组的初始化 122
6.2.3一维数组应用举例 123
6.3 多维数组 130
6.3.1 二维数组的定义和引用 130
6.3.2 二维数组的初始化 132
6.3.3 二维数组程序举例 133
6.4 字符数组 136
6.4.1 字符数组的定义和使用 136
6.4.2 字符数组的初始化 137
6.4.3字符串的输入和输出 137
6.4.4 用于字符处理的库函数 139
6.4.5 字符数组应用举例 141
6.5 应用举例 143
练习与提高 146
第7章 函数 150
7.1 模块化程序设计 150
7.1.1 模块化程序设计 150
7.1.2 函数概述 151
7.2 函数的定义 154
7.2.1 函数的定义形式 154
7.2.2 空函数的定义 155
7.2.3 函数的返回值 155
7.3 函数的调用 156
7.3.1 函数调用的一般形式 156
7.3.2 函数的声明 157
7.4 函数的嵌套调用与递归调用 159
7.4.1 函数的嵌套调用 159
7.4.2 函数的递归调用 160
7.5 数组作函数参数 162
7.5.1 数组元素作函数实参 162
7.5.2 数组名作函数参数 163
7.5.3 多维数组名作函数参数 164
7.6 变量的作用域 164
7.7 变量的存储类别 168
7.7.1 变量的生存期 168
7.7.2 局部变量的存储类别 169
7.7.3 全局变量的存储类别 171
7.7.4 存储类别小结 173
7.8 内部函数和外部函数 174
7.8.1 内部函数 174
7.8.2 外部函数 174
7.9 应用举例 174
本章小结 178
练习与提高 179
第8章 指针 187
8.1 相关概念 187
8.1.1 变量的地址 187
8.1.2 数据的访问方式 187
8.1.3 指针和指针变量 188
8.2 指针变量的定义和使用 188
8.2.1 指针变量的定义 188
8.2.2 指针变量的初始化和赋值 189
8.2.3 指针变量的引用 190
8.2.4 指针的运算 191
8.3 指针变量作函数参数 192
8.4 数组的指针和指向数组的指针变量 194
8.4.1 指向数组元素的指针 195
8.4.2 通过指针引用数组元素 195
8.4.3 数组名作函数参数 198
8.5 字符串的指针和指向字符串的指针变量 209
8.5.1 字符串的表示形式 209
8.5.2 对字符指针变量与字符数组的使用 210
8.5.3 字符指针做函数参数 212
8.6函数的指针和指向函数的指针变量 215
8.6.1 通过函数的指针调用函数 215
8.6.2 指向函数的指针变量做函数参数 216
8.7 返回指针值的函数 217
8.8 指针数组和指向指针的指针 217
8.8.1 指针数组的概念 218
8.8.2 指向指针的指针 219
8.8.3 main()函数的命令行参数 220
8.9 应用举例 220
本章小结 226
练习与提高 227
第9章 结构体与共用体 229
9.1 结构体类型 229
9.1.1 结构体概述 229
9.1.2 结构体类型的定义 229
9.1.3 结构体变量的定义 230
9.2 结构体变量的初始化和引用 232
9.2.1结构体变量的初始化 232
9.2.2 结构体变量的引用 233
9.3 结构体数组 233
9.3.1 定义结构体数组 233
9.3.2 结构体数组的初始化 234
9.3.3 结构体数组应用 235
9.4 指向结构体类型数据的指针 236
9.4.1 指向结构体变量的指针 236
9.4.2 指向结构体数组的指针 237
9.4.3 结构体变量和指向结构体的指针做函数参数 238
9.5 用指针处理链表 240
9.5.1 链表概述 240
9.5.2 处理动态链表所需的函数 241
9.5.3 链表的基本操作 242
9.6 共用体 248
9.6.1 共用体变量的引用方式 248
9.6.2 共用体类型数据的特点 249
9.7 枚举类型 249
9.8 用typedef定义类型 252
9.9应用举例 254
本章小结 257
练习与提高 257
第 10章 文件 262
10.1 文件的概念 262
10.2 文件的打开和关闭 263
10.2.1 文件类型指针 263
10.2.2 文件的打开 263
10.2.3 文件的关闭 264
10.3 文件的读写操作 265
10.3.1 读写字符函数:fgetc()、fputc() 265
10.3.2 读写字符串函数:fgets()、fputs() 267
10.3.3 读写数据块函数:fwrite()、fread() 269
10.3.4 格式化读写函数:fprintf()、fscanf() 273
10.4 文件的其他常用函数 273
10.4.1 文件的定位 273
10.4.2 文件检测函数 276
10.5 应用举例 277
本章小结 279
练习与提高 279