注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络软件与程序设计C/C++及其相关从问题到程序:程序设计与C语言引论

从问题到程序:程序设计与C语言引论

从问题到程序:程序设计与C语言引论

定 价:¥36.00

作 者: 裘宗燕编著
出版社: 机械工业出版社
丛编项: 重点大学计算机教材
标 签: C

ISBN: 9787111167563 出版时间: 2005-09-01 包装: 胶版纸
开本: 24cm 页数: 415 字数:  

内容简介

  本书以程序设计为基本线索,同时深入介绍了C语言各方面的情况。书中强调的是如何认识程序、写程序和用C写出好的程序。并通过实例讨论了问题的分析和分解,找出主要步骤,确定函数抽象,找出循环,选择语言结构,最后写出程序的过程。书中不少实例给出了在不同考虑下可能形成的多种解法,以帮助读者理解程序设计的“真谛”。本书以C作为讨论程序设计的语言,讨论了基本程序设计的各方面问题。书中给出程序实例时没有采用常见的“提出问题,给出解答,再加些解释”的简单三步形式,而是增加了许多对问题的分析和讨论,以帮助读者认识程序设计过程的实质,理解从问题到程序的思考过程。书中还尽可能详尽地解释了许多与C语言和程序设计有关的问题。本书适合作为高等院校计算机及相关专业的教材,也可供其他学习C程序设计语言的读者阅读。

作者简介

  裘宗燕,北京大学数学学院信息科学系教授。长期从事计算机软件与理论、程序设计语言和符号计算方面的研究和教学工作。已出版多部著作和译著,包括《程序设计语言基础》(译著,北京大学出版社,1990),《Mathematica数学软件系统的应用与程序设计》(编著,北京大学出版社,1994),《计算概论(上)》(合著,高等教育出版社,1997),《从问题到程序—程序设计与C语言引论》(编著,北京大学出版社,1999)等;自2000年以来,他先后为机械工业出版社华章分社翻译了《程序设计实践》(2000),《C++程序设计语言(特别版)》(2001),《C++语言的设计和演化》(2002),《程序设计语言——概念和结构》(2002),《从规范出发的程序设计》(2003),《计算机程序的构造和解释》(2004)等一系列经典著作,他认真的工作作风、严谨的治学态度,以及所做出的巨大贡献,赢得广大读者的好评。在北京大学教授的主要课程:计算概论(一年级本科生,主要内容为C语言程序设计),程序设计技术与方法(本科生),程序设计语言原理(研究生),算法和数据结构(本科生),算法设计与分析(本科生和研究生),数理逻辑(本科生)等。

图书目录

第1章  程序设计和C语言        1
1.1  程序和程序语言        1
1.2  C语言简介        8
1.3  一个简单的C程序        10
1.4  程序开发过程        13
1.5  问题与程序设计        17
本章讨论的重要概念        18
练习        18
第2章  数据对象与计算        21
2.1  基本字符、名字表示、标识符和关键字        21
2.2  数据与类型        23
2.3  基本类型与数据表示        23
2.3.1  整数类型和整数的表示        23
2.3.2  实数类型和实数的表示        25
2.3.3  字符类型和字符的表示        26
2.3.4  数据的外部表示、内部表示与转换        27
2.4  运算符、表达式与计算        30
2.4.1  算术运算符        30
2.4.2  算术表达式        31
2.4.3  表达式的求值        32
2.4.4  计算和类型        34
2.5  数学函数库及其使用        37
2.5.1  函数、函数调用        37
2.5.2  数学函数及其使用        38
2.5.3  函数调用中的类型转换        39
问题解释        40
几个常用程序模式        40
本章讨论的重要概念        41
练习        41
第3章  变量、函数和控制结构        43
3.1  语句、复合结构        43
3.2  变量—概念、定义和使用        44
3.2.1  变量的定义        45
3.2.2  变量的赋值与取值        46
3.2.3  几个问题        48
3.3  定义函数(初步)        50
3.3.1  函数定义        52
3.3.2  函数和程序        55
3.3.3  函数与类型        56
3.3.4  自定义输出函数        57
3.4  关系表达式、逻辑表达式、条件表达式        58
3.4.1  关系表达式和条件表达式        58
3.4.2  逻辑表达式        60
3.5  语句与控制结构        61
3.5.1  条件语句(if语句)        62
3.5.2  循环语句(1):while语句        65
3.5.3  循环语句(2):for语句        68
3.6  若干常用结构和问题        70
3.6.1  增量和减量运算符(++、--)        70
3.6.2  逗号运算符        71
3.6.3  实现二元运算符操作的赋值运算符        71
3.6.4  空语句        72
3.6.5  表达式和求值        73
问题解释        74
几个常用程序模式        74
本章讨论的重要概念        75
练习        75
第4章  基本程序设计技术        79
4.1  循环程序设计        79
4.1.1  基本循环方式        80
4.1.2  求一系列完全平方数        81
4.1.3  判断素数(谓词函数)        82
4.1.4  艰难的旅程(浮点误差)        83
4.1.5  求立方根(迭代和逼进)        85
4.1.6  求sin函数值(通项计算)        86
4.2  循环程序的问题        87
4.2.1  从循环中退出        87
4.2.2  循环中的几种变量        89
4.3  循环与递归        90
4.3.1  阶乘和乘幂(循环,递归)        90
4.3.2  Fibonacci序列(计算与时间)        93
4.3.3  为计算过程计时        94
4.3.4  Fibonacci序列的迭代计算(程序正确性与循环不变式)        95
4.3.5  最大公约数        97
4.3.6  河内塔(梵塔)问题        100
4.4  基本输入输出        102
4.4.1  格式输入函数scanf        102
4.4.2  字符输入输出函数        109
4.4.3  输入函数的返回值及其作用        112
4.5  控制结构和控制语句        114
4.5.1  do-while循环结构        114
4.5.2  流程控制语句        115
4.5.3  开关语句        117
4.6  程序设计实例        119
4.6.1  一个简单计算器        119
4.6.2  定义枚举常量        119
4.6.3  单词计数问题        120
4.7  程序测试和排错        123
4.7.1  测试        123
4.7.2  白箱测试        124
4.7.3  黑箱测试        125
4.7.4  排除程序里的错误        126
问题解释        127
几个常用程序模式        128
本章讨论的重要概念        128
练习        128
第5章  C程序结构        133
5.1  数值类型        133
5.1.1  实数类型和整数类型        133
5.1.2  字符类型        133
5.1.3  整数类型        134
5.1.4  基本数据类型的选择        135
5.2  函数和标准库函数        136
5.2.1  C语言的库函数        137
5.2.2  字符分类函数        137
5.2.3  随机数生成函数        138
5.3  函数定义和程序的函数分解        139
5.3.1  主函数        140
5.3.2  程序的函数分解        141
5.3.3  对函数的两种观点        142
5.3.4  函数原型        146
5.4  C程序结构与变量        149
5.4.1  外部定义的变量        150
5.4.2  作用域与生存期        151
5.4.3  外部变量和自动变量        151
5.4.4  变量定义的嵌套        153
5.4.5  静态局部变量        154
5.4.6  变量的其他问题        155
5.4.7  一个实例        157
5.5  预处理        159
5.5.1  文件包含命令        159
5.5.2  宏定义与宏替换        160
5.5.3  条件编译命令        163
5.6  定义常量        164
5.7  字位运算符        165
5.8  编程实例        168
5.8.1  一个简单的猜数游戏        168
5.8.2  加密与解密        170
本章讨论的重要概念        172
练习        172
第6章  数组        175
6.1  数组的概念、定义和使用        175
6.1.1  定义数组变量        176
6.1.2  数组的使用        177
6.1.3  数组的初始化        179
6.1.4  数组的存储实现        180
6.2  数组程序实例        181
6.2.1  从字符到下标        181
6.2.2  筛法求素数        182
6.2.3  成绩分类        183
6.2.4  多项式求值        184
6.2.5  定义数组的问题        185
6.3  数组作为函数参数        186
6.3.1  一个例子        186
6.3.2  修改实参数组的元素        188
6.4  字符数组与字符串        189
6.4.1  字符数组        189
6.4.2  字符串        189
6.4.3  程序实例        191
6.4.4  标准库字符串处理函数        193
6.4.5  输出文本里的最长行        194
6.5  两维和多维数组        198
6.5.1  多维数组的初始化        198
6.5.2  多维数组的表示和使用        199
6.5.3  多维数组作为函数的参数        200
6.6  编程实例        201
6.6.1  成绩直方图        201
6.6.2  一个通用带检查的整数输入函数        205
6.6.3  “计算”数组变量的大小        206
6.6.4  统计C程序里的关键字        208
6.6.5  数组的划分        211
6.6.6  数组的排序        213
问题解释        215
几个常用程序模式        215
本章讨论的重要概念        215
练习        215
第7章  指针        217
7.1  地址与指针        217
7.2  指针变量的定义和使用        218
7.2.1  指针操作        218
7.2.2  指针作为函数的参数        219
7.2.3  与指针有关的一些问题        222
7.3  指针与数组        224
7.3.1  指向数组元素的指针        224
7.3.2  基于指针运算的数组程序设计        227
7.3.3  数组参数与指针        228
7.3.4  指针与数组操作的程序实例        229
7.3.5  字符指针与字符数组        231
7.4  指针数组        233
7.4.1  指针数组与两维数组        234
7.4.2  命令行参数及其处理        235
7.5  多维数组作为参数的通用函数        238
7.6  动态存储管理        240
7.6.1  为什么需要动态存储管理        240
7.6.2  C语言的动态存储管理机制        241
7.6.3  两个程序实例        244
7.6.4  函数、指针和动态存储        247
7.7  定义类型        250
7.7.1  定义数组类型和指针类型        251
7.7.2  复杂类型描述与解读        252
7.8  指向函数的指针        254
7.8.1  函数指针的定义和使用        254
7.8.2  函数指针作为函数的参数        255
7.8.3  数值积分函数        257
7.8.4  若干以函数指针为参数的数组操作实用函数        259
几个常用程序模式        260
本章讨论的重要概念        260
练习        261
第8章  文件和输入输出        263
8.1  文件的概念        263
8.1.1  流和文件指针        263
8.1.2  缓冲式输入输出        264
8.2  文件的使用        265
8.2.1  文件的打开和关闭        265
8.2.2  输入输出函数        267
8.2.3  程序实例        268
8.2.4  直接输入输出函数        270
8.3  标准流输入输出与格式控制        271
8.3.1  行式输入和输出        271
8.3.2  输入格式控制        272
8.3.3  输出格式控制        276
8.3.4  以字符串作为格式化输入输出对象        278
8.3.5  标准错误流        278
8.4  程序实例        279
8.4.1  求文件数据的平均值        279
8.4.2  一个背单词程序        281
8.4.3  资金账目系统        285
练习        288
第9章  结构和其他数据机制        291
9.1  结构(struct)        291
9.1.1  结构声明与变量定义        291
9.1.2  结构变量的初始化和使用        296
9.1.3  结构、数组与指针        297
9.2  结构与函数        299
9.2.1  处理结构的函数        299
9.2.2  程序实例        302
9.3  联合(union)        306
9.4  枚举(enum)        308
9.5  编程实例        310
9.5.1  数据组的排序        310
9.5.2  复数的表示和处理        312
9.6  链接结构(自引用结构)        315
9.6.1  链接结构        315
9.6.2  自引用结构的定义        317
9.6.3  程序实现        318
9.6.4  数据与查找        321
9.7  字段        322
问题解释        323
本章讨论的重要概念        323
练习        323
第10章  程序开发技术        327
10.1  分别编译和C程序的分块开发        327
10.1.1  分块开发的问题和方法        327
10.1.2  程序实例:学生成绩处理        328
10.1.3  分块重整        333
10.1.4  其他安排和考虑        336
10.1.5  模块化思想和技术        338
10.1.6  单一头文件结构和多个头文件结构        342
10.2  功能模块和程序库        345
10.2.1  复数模块        345
10.2.2  目标文件和库        348
10.2.3  防止重复包含        349
10.3  错误报告和处理        349
10.3.1  建立统一的错误报告机制        349
10.3.2  定义变参数的错误报告函数        350
10.3.3  运行中错误的检查和处理        352
10.4  程序的配置        358
10.4.1  程序的行为参数和启动时的配置        358
10.4.2  交互式配置        360
10.4.3  通过命令行参数        361
10.4.4  采用配置文件        362
10.5  程序开发过程        362
10.5.1  自上而下的开发        363
10.5.2  自下而上的开发        365
10.5.3  实际开发过程        365
练习        367
第11章  标准库        371
11.1  标准库结构        371
11.1.1  标准定义(<stddef.h>)        372
11.1.2  错误信息(<errno.h>)        372
11.2  几个已经介绍过的头文件        373
11.2.1  数学函数(<math.h>)        373
11.2.2  字符处理函数(<ctype.h>)        374
11.3  字符串函数(<string.h>)        375
11.3.1  一些字符串函数        375
11.3.2  存储区操作        378
11.4  功能函数(<stdlib.h>)        379
11.4.1  几个整数函数        380
11.4.2  数值转换        380
11.4.3  执行控制        381
11.4.4  与执行环境交互        381
11.4.5  常用函数bsearch和qsort        382
11.5  日期和时间(<time.h>)        383
11.6  实现特征(<limits.h>和<float.h>)        385
11.6.1  整数类型特征        385
11.6.2  浮点数类型特征        386
11.7  其他与输入输出有关的函数(<stdio.h>)        386
11.7.1  符号常量和类型        386
11.7.2  文件操作函数        387
11.7.3  流缓冲区操作函数        388
11.7.4  文件定位及定位函数        389
11.7.5  其他有关函数        390
11.7.6  采用va_list参数的输出函数        391
11.8  定义变长度参数表(<stdarg.h>)        392
11.9  非局部控制转移(<setjmp.h>)        395
11.10  调试断言和信号处理(<assert.h>和<signal.h>)        397
11.11  标准库的其他功能        398
11.11.1  本地化        398
11.11.2  多字节字符        400
本章讨论的重要概念        400
练习        400
附录A  C语言运算符表        401
附录B  C语言速查        403
附录C  C99简介        409
进一步学习的建议        413
参考文献        416

本目录推荐