C 语言程序设计-(第2版) 本书特色
本书是c语言程序设计的入门教程,针对没有程序设计基础的读者,详细介绍了c语言的基本概念、语法及编程技术。全书共分为12章,内容包括:程序设计有关的基本知识、常量与变量、运算符与表达式、流程控制、函数、数组、指针、文件、多文件工程等;*后通过一个成绩管理系统综合实例,全面应用了c语言中几乎所有的知识点,充分体现了结构化程序设计的思想和方法,便于读者通过模仿学会综合程序的编程。
本书的配套教材《c语言程序设计习题解析与实验指导(第2版)》,包含了主教材思考题的解析、主教材后的习题解答、补充习题与答案、10个配套实验,可以与本书配合使用。
本书可作为高等学校本专科各专业程序设计课程相关教材,也可作为编程爱好者自学c语言的参考书。
C 语言程序设计-(第2版) 内容简介
内容和写法上比较有特色之处是:
(1)**章开篇从机器语言程序的设计及执行过程解释了计算机程序设计和执行的本质,尤其是子程序调用的解释,这是本教材区别于其他教材的一种独特思路。因为,长期以来,学生在学完了c语言之后,对函数调用的原理不清楚,什么叫断点地址、如何能返回原调用点等等都不清楚,这从本质上解释了程序执行的过程。
(2)解释了字面值常量问题,统一了常量与变量存储空间的标识与存储空间里面的内容的区别。
(3)将一维数组与一级指针放在同一章中同时讲解,因为在实际编程中,一级指针常用来访问一维数组的元素,而且一维数组形式参数的本质就是一级指针参数,两部分内容整合在一起,不仅缩减了篇幅,而且很自然地给出很多应用的实例。更主要的,给出了一维数组名的两种意义解释,从而使得二维数组中的行列指针的知识非常容易掌握,这是很多教材中我法讲解得很清楚的问题,也是教师教学过程中的一个难点。
(4)对函数的返回值为什么能赋值给主调函数的变量这一问题作了深入分析,通过简单的三句话的总结解决了一直困扰学生的返回值存放在哪里,为什么能传出被调函数这一疑问。这是目前其他教材中几乎都没有解释的问题。并且对于函数的参数,尤其是指针参数的应用原理作了深入分析。
(5)全书大量采用表格对比的形式引出了新的知识点,用学生已经掌握的老知识介绍新的内容,自然过渡,降低了学习的难度,也使同样页码的教材含有比同类教材更丰富的信息。
(6)实用的附录信息。将主教材中一些总结性的表格、内容以附录形式出现,这样,使得主教材需要主讲的内容部分简明清晰,教师不会觉得负担重,学生看的时候也会感觉轻松。特别值得一提的是:作者总结多年的教学经验将初学者编程易出错的现象及解决方案,分门别类地给出了示例、报错或告警信息及解决方案,这是其他教材中没有的亮点。
(7)动态演示程序执行过程的配套课件。提供两种版本的多媒体课件:教学版和自学版,教学版为ppt加程序动态演示整合版(authorware制作),从出版社网站供教师下载;自学版为整本教材的动态演示整合版(authorware制作),方便读者根据课件更好地理解程序执行的过程,增强了趣味性和直观性。
总之,该教材从内容的组织及配套资源的提供上都是从有利于教学、有利于自学出发的,期待着经得起读者检验。
C 语言程序设计-(第2版) 目录
目 录
第1章 计算机、c语言与二进制 1
1.1 计算机、程序与程序设计语言 1
1.1.1 电子计算机概述 2
1.1.2 程序与程序设计 4
1.1.3 程序设计语言简介 5
1.2 初识c语言 6
1.2.1 c语言的传奇身世 6
1.2.2 为什么选择c语言 7
1.2.3 c语言程序及其开发 9
1.3 信息的存储及进制问题 10
1.3.1 内存的基本知识 10
1.3.2 二进制、八进制及十六进制 11
1.3.3 进制间的相互转换 12
习题 13
第2章 初识c语言源程序及其数据类型 15
2.1 c语言源程序及其符号 15
2.1.1 c语言源程序的组成 15
2.1.2 c语言源程序中的6种基本符号 17
2.2 c语言中的数据类型 18
2.2.1 c语言数据类型的种类 18
2.2.2 基本数据类型及其修饰符 19
2.3 常量 19
2.3.1 整型常量 20
2.3.2 实型常量 20
2.3.3 字符常量 20
2.3.4 字符串常量 21
2.3.5 符号常量 21
2.4 变量 22
2.4.1 变量的定义及初始化 22
2.4.2 变量的输入和输出 23
2.4.3 用const修饰符限定变量 28
*2.5 基本数据类型在计算机内部的表示 29
2.5.1 整型数据在内存中的存储形式 29
2.5.2 字符型数据在内存中的存储形式 30
2.5.3 实型数据在内存中的存储形式 30
2.6 本章常见错误及解决方案 30
习题 32
第3章 运算符与表达式 35
3.1 什么是运算符与表达式 35
3.2 运算符的优先级与结合性 36
3.3 常用运算符 36
3.3.1 算术运算符 36
3.3.2 关系运算符 38
3.3.3 逻辑运算符 38
3.3.4 条件运算符 40
3.3.5 赋值及复合赋值运算符 40
3.3.6 逗号运算符 41
3.3.7 自增、自减运算符 41
3.4 运算过程中的数据类型转换 43
3.4.1 表达式中的自动类型转换 43
3.4.2 赋值中的自动类型转换 43
3.4.3 强制类型转换 44
*3.5 位运算符 44
3.6 本章常见错误及解决方案 46
习题 47
第4章 程序流程控制 50
4.1 语句与程序流程 50
4.1.1 语句的分类 50
4.1.2 程序流程及其表示 51
4.2 顺序结构 52
4.3 选择结构 53
4.3.1 if语句 53
4.3.2 switch语句 56
4.4 循环结构 58
4.4.1 while语句 58
4.4.2 do~while语句 59
4.4.3 for语句 60
4.4.4 循环嵌套 61
4.5 break与continue 63
4.6 应用举例——判断质数、百钱百鸡 64
4.7 本章常见错误及解决方案 66
习题 67
第5章 函数的基本知识 71
5.1 函数与模块化程序设计 71
5.2 函数的定义 73
5.3 函数的调用 75
5.3.1 函数调用的基本形式 76
5.3.2 函数调用的完整过程 77
5.4 函数的原型声明 79
5.5 函数的递归 81
5.6 变量的作用域与存储类型 85
5.6.1 变量的作用域 85
5.6.2 变量的存储类型 88
5.7 应用举例——二次项定理求值 91
5.8 本章常见错误及解决方案 94
习题 95
第6章 数组 100
6.1 一维数组 100
6.1.1 一维数组的定义 101
6.1.2 一维数组的初始化 101
6.1.3 一维数组的访问 102
6.1.4 一维数组应用举例——求和及fibonacci数列 103
6.2 二维数组 105
6.2.1 二维数组的定义 105
6.2.2 二维数组的初始化 106
6.2.3 二维数组的访问 107
6.3 向函数传递数组 109
6.3.1 向函数传递一维数组 109
6.3.2 向函数传递二维数组 111
6.4 数组常用算法介绍 112
6.4.1 数组元素查找 112
6.4.2 插入数组元素 114
6.4.3 数组元素删除 115
6.4.4 数组排序 117
6.5 本章常见错误及解决方案 119
习题 120
第7章 指针 125
7.1 指针变量 125
7.1.1 变量地址和变量的值 125
7.1.2 指针变量的定义和访问 126
7.1.3 指针变量的运算 129
7.2 指针与函数 131
7.2.1 传值与传地址 131
7.2.2 指针作形参返回多个值 134
*7.2.3 返回指针的函数 135
7.3 指针与数组 136
7.3.1 指针与一维数组 137
7.3.2 指针和二维数组 139
7.4 应用举例 143
7.4.1 批量数据的统计 144
7.4.2 进制转换 145
7.4.3 选择法排序 147
7.4.4 矩阵中的运算 149
*7.5 指针进阶 151
7.5.1 const与指针的结合 151
7.5.2 二级指针和指针数组 152
7.5.3 行指针与二维数组 154
7.5.4 指针与动态空间 156
7.5.5 指向函数的指针 161
7.6 本章常见错误及解决方案 163
习题 164
第8章 字符串 169
8.1 字符串的定义与初始化 169
8.2 字符串的常用操作 172
8.2.1 字符串的输入/输出 172
8.2.2 指向字符串的指针 174
8.2.3 字符串处理的常用函数 176
8.3 应用举例 180
8.3.1 回文的判断 180
8.3.2 统计单词出现次数 182
8.3.3 密码问题 183
8.3.4 字符串的排序 185
8.4 带参数的main函数 188
8.5 综合应用实例——单词本管理 189
8.6 本章常见错误及解决方案 195
习题 196
第9章 编译预处理与多文件工程程序 201
9.1 编译预处理 201
9.1.1 文件包含 201
9.1.2 宏定义 202
9.1.3 条件编译 204
9.2 多文件工程程序 205
9.2.1 多文件工程程序的组织结构 206
9.2.2 外部变量与外部函数 208
9.2.3 静态全局变量与静态函数 210
9.3 应用举例——多文件结构处理数组问题 210
9.4 本章常见错误及解决方案 216
习题 217
第10章 结构、联合、枚举 219
10.1 结构 219
10.1.1 结构的定义 219
10.1.2 结构体变量 221
10.1.3 结构体指针 224
10.1.4 结构体数组 225
10.1.5 结构体应用 226
*10.2 链表 229
10.2.1 链表的概念 229
10.2.2 链表的基本操作 231
*10.3 联合 240
*10.4 枚举 242
10.5 本章常见错误及解决方案 244
习题 245
第11章 文件 247
11.1 文件与文件指针 247
11.2 文件的打开和关闭 248
11.2.1 文件打开操作 248
11.2.2 文件关闭操作 249
11.3 文件读写 249
11.3.1 字符读写 250
11.3.2 字符串读写 251
11.3.3 格式化读写 252
11.3.4 块数据读写 253
11.4 位置指针的定位 255
11.5 应用举例——文件的复制 257
11.6 本章常见错误及解决方案 258
习题 258
第12章 学生成绩管理系统的设计与实现 260
12.1 系统概述 260
12.2 数据类型的定义 261
12.3 为结构体类型定制的基本操作 262
12.4 用二进制文件实现数据的永久保存 268
12.5 用两级菜单四层函数实现系统 269
习题 280
附录a 常用字符与ascii码对照表 281
附录b c语言的关键字 283
附录c visual c++下各数据类型所占字节数及取值范围 284
附录d c语言运算符的优先级与结合性 285
附录e 常用的ansi c标准库函数 287
附录f c语言程序设计常见错误及解决方案 292
附录g 命名规则 300
附录h c语言的发展简史 302
附录i 函数printf的格式转换说明符 303
附录j 函数printf的格式修饰符 304
参考文献 305