新書推薦:
《
身体自愈力:解决内在病因的身体智慧指南
》
售價:NT$
449.0
《
非言语沟通经典入门:影响人际交往的重要力量(第7版)
》
售價:NT$
560.0
《
山西寺观艺术壁画精编卷
》
售價:NT$
7650.0
《
中国摄影 中式摄影的独特魅力
》
售價:NT$
4998.0
《
山西寺观艺术彩塑精编卷
》
售價:NT$
7650.0
《
积极心理学
》
售價:NT$
254.0
《
自由,不是放纵
》
售價:NT$
250.0
《
甲骨文丛书·消逝的光明:欧洲国际史,1919—1933年(套装全2册)
》
售價:NT$
1265.0
|
編輯推薦: |
《C语言程序设计基础(第2版)》基于Visual Studio 2010平台,包含丰富的实例和习题,并提供部分算法的数学证明。
|
內容簡介: |
本书全面介绍标准C语言的相关知识,内容包括:C语言概述,基本数据类型、运算符和表达式,标准设备的输入输出,C语言的流程控制,函数,编译预处理,数组,结构体、共用体和枚举类型,指针,链表及其算法,数据文件的使用等。 本书力求概念严谨,同时做到深入浅出、通俗易懂;通过大量的例题和习题帮助程序设计初学者掌握必需的基本语法和常用算法。 本书适合作为高等学校计算机专业和非计算机的理工科各专业的程序设计基础课程教材,也可以作为广大计算机爱好者的自学教材。
|
目錄:
|
目录
第1章 C语言概述 1
1.1 计算机语言与程序 1
1.1.1 机器语言与程序 1
1.1.2 汇编语言与程序 1
1.1.3 高级语言与程序 2
1.2 C语言的发展及其特点 3
1.3 简单的C程序 4
1.4 程序开发的步骤 6
习题1 7
第2章 数据类型、运算符和表达式 8
2.1 保留字和标识符 8
2.1.1 保留字 8
2.1.2 标识符 8
2.2 C语言的基本数据类型 9
2.3 常量和变量 10
2.3.1 常量 10
2.3.2 符号常量 13
2.3.3 变量 14
2.4 基本运算符和表达式 15
2.4.1 C语言运算符及表达式简介 15
2.4.2 算术运算符和算术表达式 16
2.4.3 运算符的优先级和结合性 16
2.4.4 关系运算符和关系表达式 16
2.4.5 逻辑运算符和逻辑表达式 17
2.4.6 位运算符和位运算表达式 18
2.4.7 自增、自减运算符和表达式 21
2.4.8 赋值运算符和赋值表达式 21
2.4.9 逗号运算符和逗号表达式 22
2.4.10 sizeof运算符和表达式 23
2.4.11 逻辑表达式运算优化的副作用 23
2.5 类型转换 23
2.5.1 赋值时的自动类型转换 23
2.5.2 各种类型运算量混合运算时的自动类型转换 26
2.5.3 强制类型转换 26
习题2 27
第3章 标准设备的输入输出 29
3.1 输入输出的基本概念 29
3.2 格式化输入输出函数的使用 29
3.2.1 格式化输出函数printf 29
3.2.2 格式化输入函数scanf 35
3.3 字符输入输出函数的使用 40
3.4 顺序结构程序设计举例 41
习题3 43
第4章 C语言的流程控制 47
4.1 算法概述 47
4.1.1 算法及其效率 47
4.1.2 算法的设计原则 48
4.1.3 算法的表示工具 49
4.1.4 结构化程序设计中基本结构的表示 51
4.2 C程序的结构和语句概述 53
4.3 选择结构语句 55
4.3.1 if语句 55
4.3.2 if语句的嵌套使用 59
4.3.3 条件运算符 61
4.3.4 switch语句 62
4.4 循环结构语句 67
4.4.1 goto语句及标号的使用 67
4.4.2 while语句 68
4.4.3 for语句 69
4.4.4 do-while语句 71
4.4.5 break语句和continue语句 72
4.4.6 循环的嵌套 74
4.5 控制语句应用举例 75
习题4 84
第5章 函数 86
5.1 函数概述 86
5.2 函数的定义与调用 87
5.2.1 函数的定义 87
5.2.2 函数的调用 89
5.2.3 函数的参数 91
5.3 函数的原型声明 92
5.4 函数的嵌套调用和递归调用 94
5.4.1 函数的嵌套调用 94
5.4.2 函数的递归调用 99
5.5 使用C系统函数 103
5.6 作用域和存储类别 106
5.6.1 作用域 106
5.6.2 存储类别 109
5.6.3 全局变量的作用域的扩展和限制 113
5.7 程序的多文件组织 116
5.7.1 内部函数和外部函数 116
5.7.2 多文件组织的编译和连接 118
习题5 118
第6章 编译预处理 121
6.1 宏定义 121
6.1.1 不带参数的宏定义 121
6.1.2 带参数的宏定义 123
6.2 文件包含 126
*6.3 条件编译 127
习题6 130
第7章 数组 132
7.1 数组的定义及应用 132
7.1.1 一维数组的定义及使用 132
7.1.2 一维数组作函数参数 136
7.1.3 多维数组的定义及使用 148
7.1.4 二维数组作函数参数 151
7.2 字符数组的定义及应用 157
7.2.1 字符数组的定义 158
7.2.2 字符数组的初始化 158
7.2.3 字符数组的使用 159
7.2.4 字符串和字符串结束标志 160
7.2.5 字符数组的输入输出 161
7.2.6 字符串处理函数 163
7.2.7 字符数组应用举例 167
习题7 170
第8章 结构体、共用体和枚举类型 172
8.1 结构体的定义及应用 172
8.1.1 结构体类型的定义 172
8.1.2 结构体类型变量的定义 173
8.1.3 结构体类型变量及其成员的引用 175
8.1.4 结构体数组 178
8.2 共用体的定义及应用 181
8.2.1 共用体类型及其变量的定义 181
8.2.2 共用体类型变量的引用 182
8.2.3 共用体类型数据的特点 183
8.3 枚举类型 185
8.3.1 枚举类型的定义 185
8.3.2 枚举类型变量的定义 185
8.3.3 枚举类型变量的使用 185
8.4 用typedef定义类型 189
习题8 191
第9章 指针 193
9.1 指针和指针变量 193
9.1.1 指针的概念 193
9.1.2 指针变量的定义 193
9.1.3 与指针有关的运算符&和* 194
9.1.4 指针变量赋值 194
9.1.5 直接访问和间接访问 194
9.1.6 地址值的输出 198
9.2 指针作函数参数 198
9.2.1 基本类型量作函数参数 199
9.2.2 指针变量作函数参数 200
9.3 指针和指向数组的指针 202
9.3.1 指针和一维数组 202
9.3.2 一维数组元素指针作函数参数 206
9.3.3 指针和字符串 211
9.3.4 二维数组与指针 216
9.3.5 获得函数处理结果的几种方法 222
9.4 指针数组 224
9.4.1 指针数组的定义和使用 224
9.4.2 使用指针数组处理二维数组 225
9.4.3 利用字符指针数组处理字符串 227
9.4.4 main函数的参数 229
9.5 指向指针的指针 231
9.6 指针和函数 232
9.6.1 函数指针 232
9.6.2 返回指针的函数(指针函数) 236
9.7 指针小结 237
习题9 240
第10章 链表及其算法 243
10.1 存储空间的动态分配和释放 243
10.2 结构体及指针 245
10.3 链表及算法 247
10.3.1 链表概念的引入 247
10.3.2 不带头结点的链表的常用算法 249
*10.3.3 带头结点的链表的常用算法 257
习题10 263
第11章 数据文件的使用 265
11.1 输入输出概述 265
11.2 文件的基本概念和分类 265
11.3 缓冲的概念 266
11.4 文件的读写过程 267
11.4.1 文件和数据流 267
11.4.2 文件类型指针 267
11.4.3 文件的打开与关闭 268
11.5 文件的读写 270
11.5.1 fgetc函数、fputc函数和feof函数 271
11.5.2 fgets函数和fputs函数 274
11.5.3 fscanf函数和fprintf函数 279
11.5.4 fread函数和fwrite函数 281
11.5.5 getw函数和putw函数 284
11.6 文件的随机读写 285
11.6.1 文件读写位置指针的定位 285
11.6.2 文件的随机读写 287
11.7 文件的出错检测 290
*11.8 输入输出重定向 291
*11.9 通过命令行参数指定待读写的文件名 293
习题11 294
附录A ASCII码表 297
附录B 常用库函数 298
参考文献 304
|
內容試閱:
|
前言
C语言是在由UNIX的研制者(美国贝尔实验室的Dennis Ritchie和Ken Thompson)于1970年研制出的B语言的基础上发展和完善起来的。1972年,在DEC PDP-11计算机上实现了最初的C语言,此后C语言伴随着计算机的发展一直走到了今天。
C语言是一种支持过程化的、实用的程序设计语言,是高校学生学习程序设计的一门必修基础课程,同时也是编程人员广泛使用的工具。学好C语言,可以触类旁通其他语言,如C、Java、C#和VB等。本书是编者在总结过去20多年的教学和实践经验的基础上编写而成的,适合用作高等学校计算机专业和非计算机的理工科专业的程序设计基础课程教材,也可供读者自学使用。本书目前被用作南京航空航天大学理工科各专业的程序设计语言课程教材。
本书作者主张的教学理念是注重程序设计算法的教学,注重对学生算法思路的逻辑训练。本书讲述力求概念严谨,同时做到深入浅出、通俗易懂。各章节配有大量的例题和习题,主要是针对各章的教学难点和重点以及各种算法而设计的。在选择例题和习题时,尽量涵盖目前程序设计语言课程的各种算法类型,使初学者见到习题后,能够在教材的例题中找到相似的例子,这样对初学者来说,解题就不是一件非常困难的事情。建议教师在进行课本教学外,根据实际情况安排课程设计,选用适合不同层次学生的课程设计题目,强化训练学生动手编写较大规模程序的能力。
2007年本书的第1版《程序设计语言C》出版,至今已使用多年,在学生中取得了良好的反响。第1版的程序运行环境是Turbo C 2.0,为了适应计算机软硬件环境的变化,
本书的程序运行环境改为Visual Studio 2010(简称VS2010)。在教材内容上,本书在第1版的基础上,修正了部分不足,文字描述更加准确;本书对第1版全部源程序例子做了少量增删,并对源程序主函数的书写格式做了调整,调整前和调整后的格式如下:
main调整前的程序书写格式,主函数没有明确指定返回值
{
语句
}
int main调整后的程序书写格式,主函数的返回值类型指定为int
{
语句
return 0;调整后,增加return语句
}
本书主要具有以下几点特色。
(1)整体考虑计算机和非计算机专业的教学要求,适用于计算机专业和非计算机的理工科各专业。
(2)本书比较瘦,页码相对较少。笔者曾调研过一些高校,该课程的课时约为40~56。既然学时有限,那么书的厚度也应相应配套。
(3)在内容顺序的安排上更加合理,方便计算机专业和非计算机专业的学生在学习时进行内容上的取舍。例如提前讲解结构体、枚举等内容,这为学生在后续的学习中使用这些内容进行实验做了铺垫。此部分内容在其他许多同类教材中都是最后讲解。又如,在介绍链表时分别讲解了不带头结点和带头结点的链表算法,满足不同专业的教学需要。
(4)给出部分算法的来历和数学证明(如筛选法求素数以及汉诺塔问题),增加趣味性。
(5)在作业安排上,从易到难,环环相扣。有许多学生学过C语言,却不会编程。编者在教学中认识到了这一点,因此设计了许多与实际有关的习题,并且这些习题都是彼此相关的。
(6)本书通俗易懂,深入浅出,将复杂的概念采用浅显的语言讲述,便于读者理解和掌握。
本书第1~3章、第9~11章由王珊珊执笔(其中10.3.3节由皮德常执笔),第5~8章由臧洌执笔,第4章由张志航执笔。全书由王珊珊负责统稿。皮德常仔细通读了全书,在基本概念及文字描述上做了把关,并给出部分算法的来历和数学证明。参加本书编写工作的还有朱敏、张定会、钱忠民、潘梅园、张卓莹、刘佳、朱玉莲等。
讲述本书全部内容的建议学时为:理论教学48学时,课程设计16~32学时(内容另行安排),上机实验50学时。本书的实验环境是Visual Studio 2010,书中全部例题和习题均已在该环境中通过编译和运行。书中标题前加*的章节为选学内容。
编 者
2018年6月
于南京航空航天大学
|
|