图书简介:
目 录
第1章 C语言与程序设计 1
1.1 C语言发展简史 2
1.2 C语言的特点 3
1.3 计算机解题过程 4
1.4 算法及其表示 5
1.4.1 算法的概念 7
1.4.2 算法的描述 8
1.5 常用算法策略介绍 11
1.5.1 穷举法 11
1.5.2 递推法 12
1.5.3 递归法 12
1.6 结构化程序设计方法 13
1.6.1 结构化程序设计基本思想 13
1.6.2 三种基本程序结构 14
本章小结 14
习题一 15
第2章 C语言基础知识 16
2.1 简单的C语言程序 16
2.2 关键字和标识符 19
2.2.1 字符集 19
2.2.2 关键字 19
2.2.3 标识符 20
2.3 数据类型 20
2.3.1 C语言的数据类型 21
2.3.2 整数类型 22
2.3.3 浮点类型 23
2.3.4 字符类型 24
2.4 常量和变量 25
2.4.1 常量 25
2.4.2 变量 27
2.5 运算符和表达式 29
2.5.1 算术运算符 30
2.5.2 赋值运算符 32
2.5.3 其他运算符 34
2.5.4 运算符的优先级和结合性 36
2.6 数据类型转换 37
本章小结 39
习题二 39
第3章 程序控制结构 42
3.1 C语言语句概述 42
3.2 顺序结构 44
3.2.1 赋值语句 44
3.2.2 数据输入/输出 44
3.2.3 格式输入/输出 46
3.2.4 程序举例 51
3.3 选择结构 52
3.3.1 关系运算符与关系表达式 53
3.3.2 逻辑运算符与逻辑表达式 53
3.3.3 if语句 55
3.3.4 switch语句 59
3.3.5 程序举例 62
3.4 循环结构 64
3.4.1 while循环语句 64
3.4.2 do-while循环语句 66
3.4.3 for循环语句 67
3.4.4 循环的嵌套 70
3.4.5 goto、break和continue语句 71
3.4.6 程序举例 74
本章小结 79
习题三 80
第4章 数组和字符串 94
4.1 一维数组 94
4.1.1 一维数组的定义 94
4.1.2 一维数组的初始化 95
4.1.3 一维数组元素的引用 96
4.1.4 一维数组应用举例 98
4.2 二维数组及多维数组 103
4.2.1 二维数组的定义 103
4.2.2 二维数组的初始化 104
4.2.3 二维数组元素的引用 104
4.2.4 二维数组应用举例 105
4.2.5 多维数组 106
4.3 字符数组和字符串 107
4.3.1 用字符数组存放字符序列 107
4.3.2 用字符数组存放字符串 108
4.3.3 字符串处理函数 110
4.3.4 字符数组应用举例 113
本章小结 116
习题四 117
第5章 指针 123
5.1 指针的概念及运算 123
5.1.1 指针的概念 123
5.1.2 指针变量的定义和初始化 124
5.1.3 与指针有关的运算 125
5.2 数组中的指针 128
5.2.1 一维数组中的指针 128
5.2.2 二维数组中的指针 131
5.3 用指针处理字符串 133
5.4 指针数组和指针的指针 135
5.4.1 指针数组 135
5.4.2 指向指针的指针 137
5.5 程序举例 139
本章小结 140
习题五 141
第6章 函数 145
6.1 模块化程序设计方法 145
6.2 函数的定义、调用和声明 147
6.2.1 函数定义 147
6.2.2 函数调用 150
6.2.3 函数声明 151
6.3 函数参数及其传递方式 153
6.3.1 函数的参数 153
6.3.2 函数参数的传递方式 155
6.4 函数的嵌套调用和递归调用 161
6.4.1 函数的嵌套调用 161
6.4.2 函数的递归调用 164
6.5 函数指针和指向函数的指针变量 167
6.5.1 函数指针和指向函数的指针变量的定义 167
6.5.2 指向函数的指针作为函数的参数 168
6.6 main()函数的参数 170
6.7 exit()函数 172
6.8 变量的作用域规则与存储类别 172
6.8.1 局部变量和全局变量 173
6.8.2 变量的存储类别 176
6.8.3 内部函数和外部函数 181
6.9 程序举例 183
本章小结 186
习题六 187
第7章 用户自定义类型 193
7.1 结构体 193
7.1.1 结构体类型定义 193
7.1.2 结构体类型变量、数组和指针的定义 195
7.1.3 结构体类型变量、数组和指针的初始化 197
7.1.4 结构体类型变量的引用 198
7.1.5 结构体应用举例 200
7.1.6 结构体指针与函数 204
7.1.7 位域 206
7.2 动态存储分配 207
7.2.1 内存的分配与释放 208
7.2.2 内存动态分配应用举例 210
7.3 共用体 216
7.3.1 共用体类型的定义 217
7.3.2 共用体变量定义 217
7.4 枚举类型 219
7.4.1 枚举类型的定义 219
7.4.2 枚举类型数据的使用 220
7.5 类型标识符的定义 221
本章小结 221
习题七 222
第8章 文件 225
8.1 文件概述 225
8.1.1 文件的基本概念 225
8.1.2 文件类型和常用函数 226
8.1.3 文件类型指针 227
8.2 文件的打开与关闭 228
8.2.1 文件的打开 228
8.2.2 文件的关闭 229
8.3 文件的读/写 229
8.3.1 顺序文件的读/写 230
8.3.2 随机文件的读/写 236
8.4 程序举例 239
本章小结 242
习题八 243
第9章 编译预处理 245
9.1 宏定义 245
9.1.1 不带参数的宏定义 246
9.1.2 带参数的宏定义 248
9.2 文件包含 251
9.3 条件编译 253
本章小结 255
习题九 256
第10章 上机实验 258
实验一 C语言程序的运行环境和运行过程 259
实验二 简单程序设计 263
实验三 分支结构和循环结构程序设计(1) 263
实验四 分支结构和循环结构程序设计(2) 264
实验五 数组应用和字符串处理程序设计 265
实验六 指针应用程序设计 266
实验七 模块化程序设计 266
实验八 结构体应用和文件操作程序设计 267
附录A ASCII码字符表 269
附录B C语言运算符 270
附录C 位运算 271
附录D 常用的C库函数 273
附录E 实验报告 279
附录F Visual C++常见错误 280
参考文献 284
展开
前 言
近年来,学习计算机程序设计的人几乎都将C语言作为首选语言。它功能丰富、表达能力强、使用方便灵活、可移植性好。“C语言程序设计”不仅是计算机类专业的一门专业基础课,也是大多数理工类专业的必修课。
为什么要学习C语言?大致有以下几个理由:
C语言可以作为学习计算机程序设计语言的入门语言;
C语言是编写操作系统的首选语言,在与计算机硬件打交道时灵巧且高效;
C语言具有现代高级程序设计语言的基本语法特征;
常用的面向对象程序设计语言如C++和Java,其基本语法来源于C语言;
许多用C语言编写的系统需要维护;
用于要求程序高速运行领域的编程,如嵌入式系统、通信程序等;
游戏设计者和黑客少不了C语言;
C语言使用者和爱好者众多。
学习C语言,需要理解和掌握C语言中诸如关键字、标识符、数据类型、常量、变量、运算符和表达式等基本概念,也需要掌握语句、数组、函数、指针、结构体、文件的使用。同时需要了解和掌握计算机的解题过程、算法的设计和表示、结构化程序设计方法等内容。
本书全面、系统地介绍了C语言的语法、语义和程序设计技术,内容丰富,结构完整,力求精练实用。对抽象概念的叙述通俗易懂,内容安排突出重点、分散难点、实例充实。全书共分10章。第1章介绍C语言的简史、特点,计算机解题过程和算法的概念。第2章介绍C语言的基本数据类型、常量、变量、运算符和表达式。第3章介绍结构化程序设计的三种基本结构及其控制语句。第4章介绍数组的使用及其程序设计方法。第5章介绍指针的使用及其程序设计方法。第6章介绍用户自定义函数的定义、调用和声明方法,以及变量的作用域规则。第7章介绍C语言的复杂数据类型结构体和动态数据结构。第8章介绍文件的基本概念和操作方法。第9章介绍宏、文件包含、条件编译等预处理命令的使用。第10章为上机实验指导。每章均给出了几乎覆盖所有知识点的习题供学生练习。最后还提供非常实用的附录,如常用库函数简介、编译、链接常见错误信息等。
根据教材第1版的使用情况,我们对教材的部分内容做了调整,主要体现在对例题的分析、对例题程序的解释和对指针内容的精简,并充实了习题和上机实验内容。本书将结构化程序设计方法和常用的算法思想融入程序设计中。实例先易后难、先简后繁,通过习题和上机实验训练学生的C语言程序设计能力,达到掌握C语言和应用C语言开发程序的目的。
本书所有例题程序均在Visual C++6.0集成开发环境中调试通过,便于教师上课演示。本书作为教材使用时,建议讲授学时不少于40课时,实验学时不少于16课时。
本书配有电子课件、源代码和习题解答,读者可登录华信教育资源网(www.hxedu.com.cn),免费注册、下载。
参加本书编写的人员都是长期工作在教学第一线的教师,从事计算机专业课程教学多年,有丰富的教学经验。本书由太原理工大学呼克佑老师主编并编写第4、8、9章,第1、2章由林福平老师编写,第3章由邓红霞老师编写,第5、10章由李丹丹老师编写,第6章由曹棣老师编写,第7章由山西水利职业技术学院王红霞老师编写,全书由呼克佑老师统稿。
在本书的编写过程中得到了太原理工大学相关领导的大力支持和帮助,在此表示衷心的感谢。由于作者水平有限,书中疏漏在所难免,殷切盼望读者和专家批评指正。
编 者
展开