欢迎来到中国铁道出版社有限公司官网!
$itImage.title$

C语言程序设计

书      号:9787113186043

丛  书 名:教育部大学计算机课程改革规划教材

作      者:甘勇

译      者:

开      本:16开

装      帧:平装

正文语种:

出  版 社:中国铁道出版社有限公司

定      价:39.8

  • 内容简介

    本书以程序设计过程为主线,以问题和案例引入内容,围绕问题的解决来讲解C语言及程序设计。全书共分13章,主要内容包括:引言、简单C程序设计、分支结构、循环结构、函数、数组、字符数组与字符串、指针、结构、指针进阶、C预处理、文件及计算思维与常用算法。本书内容、知识点详尽,适合作为高等学校各专业C语言程序设计课程的教材,也可作为从事计算机相关工作的人员的参考书。
  • 前言

    C 语言程序设计是很多理工科专业,尤其是计算机专业学生必修的一门专业基础课。C 语 言从产生到现在,已经成为最重要和最流行的编程语言之一。现在,学习、掌握 C 语言成为了 每个计算机技术人员的一项基本功,也是在计算机领域中进一步学习和工作的基础。
    在 C 语言程序设计的教学当中,我们参阅过多部国内外的相关教材、讲义,就学生的 编程能力以及参加各级竞赛的表现来看,教学方法改革需要与时俱进,因此,有一本适合 学生使用的教材非常重要。目前,C 语言教学普遍存在的问题是,很多老师和 C 语言教科书 都是围绕知识点进行讲解,过分地强调知识细节,学生也把学习重点和注意力放在了记忆 大量的语法细节方面,学习结束后却不会编程。C 语言是为解决问题诞生的,是一种出色的 解决问题的工具,掌握一个工具的目的是通过使用它能解决问题。
    本书以编程能力的提高为主旨来讲解 C 语言,语法知识点都是伴随着有价值的应用而 出现的,强调语法的学习是为了提高用 C 语言解决问题、表达算法思想的能力,书中的例 子分为两种,一种为“试试看”类型的例子,比较简单,是为验证或解释某个语法知识而 设计的程序;另一种为“解决问题”类型的例子,每个例子都有针对问题的分析和讨论, 以帮助初学者了解程序设计过程的实质,理解从问题到程序的思考过程,从而举一反三, 快速提高编程能力。带 * 号的章节为自学章节,也是为了提升学生编程能力而设计的,老 师可以不讲,但学生必须要看。
    C 语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好 C 语 言的。学习程序设计需要大量的编程练习,只有不断地编写程序并改正错误才能真正学会 编程。错误与程序设计如影随形,密不可分,只要编写程序,就无法避免错误。之所以在 前言中如此强调错误与程序设计的关系,是因为看到太多的同学在学习 C 语言的过程中因 为编程中的一个个错误而止步不前、半途而废。事实上每个程序员的成长历程都是一部不 断认识错误并纠正错误的纠错史。
    本书的编写,也是一个基于实践的教学改革,在使用过程中,我们会继续总结经验、 发现问题、不断地学习,进一步完善和提高教学和教材水平。
    本书由甘勇任主编,李晔、卢冰任副主编,参编人员有王捷、苏虹、段赵磊、贺蕾、 张娟娟和贾志娟。本书在编写过程中得到了金保华、尚展垒、钱慎一、朱付保等很多老师, 以及郑州轻工业学院教务处、河南农业大学教务处和郑州师范学院教务处的帮助和支持, 在此深表感谢。
    由于编者水平有限,书中难免存在疏漏之处,敬请读者批评指正。
    编者
    2014 年 6 月
  • 目录

    第1章 引 言 / 1
    1.1 计算机与程序设计语言 / 2
    1.1.1 程序存储思想 / 2
    1.1.2 程序设计语言的发展 / 3
    1.2 C语言的发展简史 / 4
    1.2.1 C语言的起源 / 4
    1.2.2 C语言的发展 / 5
    1.2.3 C语言的特点 / 6
    1.3 第一个C程序 / 7
    1.3.1 编辑源程序 / 7
    1.3.2 编译、链接和运行 / 8
    1.3.3 程序开发周期 / 9
    1.4 剖析一个简单的程序 / 9
    1.5 简单程序举例 / 12
    习题 / 14
    第2章 简单C程序设计 / 17
    2.1 温度转换 / 18
    2.1.1 内存 / 18
    2.1.2 变量 / 19
    2.1.3 整数类型 / 19
    2.1.4 变量的声明和使用 / 20
    2.1.5 赋值运算 / 21
    2.1.6 格式化输出函数printf() / 22
    2.2 使用浮点数进行温度转换 / 24
    2.2.1 浮点变量类型 / 24
    2.2.2 浮点数据的输出 / 25
    2.2.3 常量 / 26
    2.3 对任意华氏温度进行温度转换 / 27
    2.3.1 用scanf()读入整型数据 / 28
    目录
    CONTENTS
    2.3.2 用scanf()读入浮点数据 / 29
    2.3.3 格式控制字符串中的普通字符 / 29
    2.4 基本运算符 / 30
    2.4.1 算术运算 / 30
    2.4.2 类型转换 / 32
    2.5 计算两点间的距离 / 33
    2.5.1 常用数学函数 / 34
    2.5.2 计算整数的位数 / 35
    习题 / 35
    第3章 分支结构 / 37
    3.1 单分支if语句 / 38
    3.1.1 伪代码 / 39
    3.1.2 关系运算 / 39
    3.1.3 复合语句 / 41
    3.2 双分支if语句 / 43
    3.2.1 条件表达式 / 44
    3.2.2 嵌套的if…else / 45
    3.2.3 逻辑运算符和逻辑表达式 / 46
    3.3 判断字母大小写 / 48
    3.3.1 字符类型 / 48
    3.3.2 字符型数据的输入/输出 / 49
    3.3.3 复合赋值语句 / 50
    3.4 多分支if语句 / 50
    3.5 switch语句 / 52
    3.5.1 switch语句的一般形式 / 52
    3.5.2 break在switch中的灵活运用 / 54
    *3.5.3 四则运算(加强版) / 57
    3.5.4 浮点数据 / 60
    3.6 运算符与表达式 / 61
    习题 / 63
    *
    *
    *
    第4章 循环结构 / 65
    4.1 while循环语句 / 67
    4.2 for循环语句 / 68
    4.2.1 for语句的基本格式 / 68
    4.2.2 for语句的注意事项 / 70
    4.2.3 自增自减运算符 / 71
    4.2.4 最大值 / 74
    *4.2.5 极限常量 / 75
    4.3 求数列的和 / 76
    4.4 输出阶乘表 / 80
    4.4.1 类型溢出问题 / 81
    4.4.2 逗号运算符及其表达式 / 82
    4.4.3 计算数列a,aa,aaa,…的前n项和 / 83
    4.5 标记控制的循环 / 84
    4.5.1 再谈while语句 / 86
    4.5.2 字符的分类统计 / 88
    4.5.3 计算n的位数 / 89
    4.5.4 do语句 / 89
    4.6 break和continue / 90
    4.6.1 循环中的break / 90
    4.6.2 循环中的continue / 92
    4.7 多重循环与goto语句 / 94
    4.7.1 多重循环 / 94
    *4.7.2 goto 语句 / 96
    4.8 多实例测试 / 97
    4.9 表达式的求值顺序与副效应 / 102
    习题 / 104
    第5章 函数 / 107
    5.1 模块化程序设计 / 108
    5.2 函数的基本概念 / 109
    5.2.1 求最大值 / 109
    5.2.2 函数的定义 / 110
    5.2.3 函数的调用 / 112
    5.2.4 函数原型 / 113
    5.2.5 return语句 / 114
    5.2.6 按值传递机制 / 115
    5.3 使用函数编写程序 / 115
    5.3.1 素数表 / 116
    5.3.2 验证哥德巴赫猜想 / 117
    5.3.3 组合数 / 118
    5.4 变量的存储类型 / 119
    5.5 局部变量和外部变量 / 120
    5.5.1 局部变量 / 121
    5.5.2 静态局部变量 / 122
    5.5.3 外部变量 / 123
    5.6 函数的递归调用 / 124
    5.6.1 递归的基本思想 / 124
    5.6.2 最大公约数 / 125
    5.6.3 最近共同祖先 / 125
    习题 / 127
    第6章 数组 / 129
    6.1 一维数组 / 130
    6.1.1 一维数组的定义和引用 / 130
    6.1.2 一维数组初始化 / 131
    6.1.3 数组元素的查找 / 134
    6.1.4 在有序序列里插入新元素 / 135
    6.1.5 比较交换排序 / 136
    6.2 数组作为函数参数 / 138
    6.3 一维数组应用举例 / 141
    6.3.1 最佳校友奖 / 141
    6.3.2 字母使用频率统计 / 143
    *6.3.3 集合的合并——利用有序关系简化问题 / 144
    *6.3.4 二分搜索 / 147
    6.4 二维数组 / 148
    6.4.1 二维数组的定义和引用 / 148
    6.4.2 二维数组的初始化 / 148
    6.5 二维数组应用举例 / 149
    6.5.1 各门课的平均分 / 149
    6.5.2 随机矩阵的最大值 / 151
    6.5.3 日期计算 / 153
    习题 / 154
    第7章 字符数组与字符串 / 157
    7.1 字符型数据 / 158
    7.1.1 字符型数据的存储 / 158
    7.1.2 转义序列 / 159
    7.1.3 字符数据的输入问题 / 160
    7.1.4 处理字符的函数 / 161
    7.2 字符数组与字符串 / 162
    7.2.1 统计空格 / 163
    7.2.2 字符数组的初始化 / 163
    7.2.3 字符串的输入/输出 / 164
    7.3 常用字符串函数 / 165
    7.3.1 string.h中的字符串处理函数 / 165
    7.3.2 stdlib.h中的字符串转换函数 / 167
    7.3.3 stdio.h中的字符串函数 / 168
    7.4 字符串应用举例 / 169
    7.4.1 统计单词个数 / 169
    7.4.2 多个二进制数排序 / 171
    7.4.3 最大值(多种进制) / 172
    7.4.4 将一个十进制整数转换为二进制输出 / 173
    7.5 字符串数组 / 174
    习题 / 175
    第8章 指针 / 177
    8.1 什么是指针 / 178
    8.1.1 计算机内存的使用 / 178
    8.1.2 指针的概念 / 179
    8.2 指针变量的声明和初始化 / 180
    8.2.1 指针变量的声明 / 180
    8.2.2 指针变量的初始化 / 180
    8.2.3 指针和数据类型 / 181
    8.3 指针的基本运算 / 182
    8.4 指针作为函数的参数 / 183
    8.5 指针与const限定符 / 187
    8.6 一维数组与指针 / 190
    8.6.1 指针的算术运算和关系运算 / 190
    8.6.2 指针和数组的关系 / 193
    8.6.3 数组作函数参数的本质 / 195
    8.7 返回值为指针的函数 / 197
    8.8 指针与字符串 / 198
    8.8.1 字符串常量 / 198
    8.8.2 使用指针处理字符串 / 199
    8.8.3 字符数组与字符指针 / 203
    8.9 用指针实现内存动态分配 / 205
    8.9.1 使用malloc()函数为数组分配内存 / 205
    8.9.2 释放动态分配的内存 / 206
    8.9.3 其他动态内存分配函数 / 206
    习题 / 207
    第9章 结构 / 211
    9.1 结构定义 / 212
    9.1.1 使用结构的原因 / 212
    9.1.2 定义结构类型和结构变量 / 213
    9.1.3 使用typedef定义数据类型 / 215
    9.1.4 初始化结构体变量 / 215
    9.1.5 将一个结构作为另一个结构的成员 / 216
    9.1.6 访问结构成员 / 217
    9.2 结构数组与指针 / 219
    9.2.1 结构数组 / 220
    9.2.2 结构指针 / 222
    9.2.3 用指针访问结构数组 / 223
    9.3 结构与函数 / 224
    9.3.1 结构作为函数的参数 / 225
    9.3.2 结构指针作为函数参数 / 226
    9.3.3 结构作为函数的返回值 / 226
    9.4 单链表 / 227
    9.4.1 单链表类型定义 / 228
    9.4.2 单链表的操作 / 228
    9.5 联合与枚举 / 233
    9.5.1 联合 / 233
    9.5.2 联合指针 / 234
    9.5.3 联合的初始化 / 235
    9.5.4 联合与结构 / 235
    9.5.5 枚举 / 236
    习题 / 237
    第10章 指针进阶 / 239
    10.1 指针与二维数组 / 240
    10.1.1 用一级指针访问二维数组 / 240
    10.1.2 指向数组的指针 / 240
    10.1.3 二维数组名 / 242
    10.2 指针数组 / 244
    10.2.1 动态申请和释放二维数组 / 244
    10.2.2 用指针数组处理多个字符串 / 245
    10.3 带参数的main()函数 / 249
    10.4 指向函数的指针 / 251
    习题 / 256
    第11章 C预处理 / 257
    11.1 预处理器的工作原理 / 258
    11.2 预处理指令 / 259
    11.3 #define预处理指令 / 259
    11.3.1 符号常量 / 260
    11.3.2 带参数的宏 / 260
    11.4 文件包含 / 263
    11.4.1 多文件程序 / 263
    11.4.2 include指令 / 263
    11.4.3 文件之间如何共享信息 / 263
    11.5 条件编译 / 265
    习题 / 267
    第12章 文件 / 269
    12.1 文件概述 / 270
    12.1.1 一个简单的文件操作程序 / 270
    12.1.2 C文件的分类 / 271
    12.1.3 缓冲文件系统 / 271
    12.1.4 文件指针 / 272
    12.2 文件的打开和关闭 / 273
    12.2.1 文件打开函数fopen() / 273
    12.2.2 文件关闭函数fclose() / 275
    12.2.3 输入/输出重定向函数
    freopen() / 275
    12.3 文件的读/写操作 / 276
    12.3.1 字符读/写函数fgetc()和fputc() / 276
    12.3.2 字符串读/写函数fgets()和fputs() / 278
    12.3.3 格式化文件读/写函数fscanf()和fprintf() / 279
    12.3.4 数据块读/写函数fread()和fwrite() / 280
    12.4 文件的其他操作 / 281
    12.4.1 文件定位函数 / 281
    12.4.2 文件检测 / 282
    12.5 文件应用实例 / 283
    习题 / 294
    第13章 计算思维与常用算法 / 295
    13.1 模拟 / 296
    13.1.1 校门外的树 / 296
    13.1.2 约瑟夫问题 / 297
    13.2 随机化算法 / 301
    13.2.1 计算圆周率近似值 / 301
    13.2.2 洗牌发牌模拟 / 303
    13.3 空间换时间 / 306
    13.3.1 筛选法求素数 / 307
    13.3.2 验证哥德巴赫猜想(加强版) / 308
    13.3.3 分解素因数 / 310
    13.4 递归 / 313
    13.4.1 计算实数的整数幂 / 314
    13.4.2 计算连通区域面积 / 315
    13.5 贪心算法 / 317
    13.5.1 活动安排问题 / 317
    13.5.2 部分背包问题 / 319
    13.6 动态规划算法 / 321
    13.6.1 游戏币问题 / 321
    13.6.2 最长单调序列 / 323
    习题 / 324
    附录 / 329
    附录A 常用字符与ASCII代码对照表 / 330
    附录B C语言中的关键字 / 331
    附录C 运算符和结合性 / 332
    附录D C库函数 / 333
    附录E C99相对于C89的新特性
    (部分) / 338
    参考文献 339
  • 作者介绍

    主要著译者顺序姓名学历职称学科专长通讯地址1甘勇博士 教授计算机工作单位郑州轻工业学院 计算机与通信工程学院邮政编码 电话 2 工作单位 邮政编码 电话 3 工作单位 邮政编码 电话 审校者(主审者) 学历 工作单位 邮政编码 电话 职称 工作单位 邮政编码 电话 甘勇,男,1965年5月出生,中共党员,教授,研究生,现任郑州轻工业学院计算机与通信工程学院院长。担任中国计算机学会微机专委常委 、河南省计算机学会理事、河南省高校计算机教育研究会副理事长、郑州市青联委员、河南省软件行业协会常务理事。荣获过河南省优秀专家、河南省管优秀青年科技专家、河南省跨世纪学术和技术带头人培养对象、河南省优秀教师等荣誉称号。
  • 编辑推荐

  • 书评书荐

  • 附件下载

图书推荐