您好,欢迎光临有路网!
C++程序设计教程(第三版)
QQ咨询:
有路璐璐:

C++程序设计教程(第三版)

  • 作者:朱红、赵琦、王庆宝
  • 出版社:清华大学出版社
  • ISBN:9787302518594
  • 出版日期:2019年05月01日
  • 页数:0
  • 定价:¥59.00
  • 分享领佣金
    手机购买
    城市
    店铺名称
    店主联系方式
    店铺售价
    库存
    店铺得分/总交易量
    发布时间
    操作

    新书比价

    网站名称
    书名
    售价
    优惠
    操作

    图书详情

    内容提要
    C 是一种**实用的程序设计语言,它既可以进行过程化程序设计,也可以进行面向对象程序设计,是编程人员广泛使用的工具。本书是为高等院校*门程序设计课程编写的教材。全书共分为两部分: *部分是C 语言基础,包括第1章~第8章,主要讲述C 的数据类型,运算规则,顺序、选择、循环结构的程序设计,函数、数组、指针和结构体等内容,侧重于基本概念、基本语法及常规算法; 第二部分是面向对象程序设计基础,包括第9章~第16章,主要介绍类和对象、类的构造和析构、友元、运算符重载、继承和派生以及输入输出流等内容,侧重于编程的训练,强调模块化、规范化的程序设计,引导读者逐步体会面向对象程序设计的特点。本教材配有实验教材《C 程序设计上机实践与学习辅导(第三版)》,以方便读者复习和上机操作。 本书所列举的例题、习题均在Visual Studio 2010下调试通过。 本书面向计算机及其相关专业本、专科学生,是学习C 语言的基础教材。
    文章节选
    第5章
    编译预处理



    编译预处理是在编译源程序之前,由预处理器对源程序进行一些加工处理工作,如图5.1所示。所谓预处理器,是包含在编译器中的预处理程序。源程序中的编译预处理命令一律以“#”开头,回车符结束,每条命令占一行,并且通常放在源程序文件的开始部分。


    图5.1编译预处理过程示意


    编译预处理的作用是将源程序文件中的预处理命令进行处理,生成一个中间文件,编译系统再对此中间文件进行编译并生成目标代码,*后生成的目标代码中并不包括预处理命令。
    C 提供的预处理功能主要有宏定义、文件包含和条件编译三种。
    5.1宏定义
    5.1.1不带参数的宏定义

    用一个指定的标识符来代表一个字符串,这个指定的标识符称为宏名,格式为:

    #define宏名 字符串

    宏命令后,凡出现宏名的地方均用其对应的字符串来替换,替换的过程称为宏展开。例如,有以下宏命令:

    #definePI3.1415926

    则PI为宏名,凡在程序中出现宏名PI的地方均用3.1415926替换。
    【例5.1】不带参数的宏替换。

    #include<iostream >

    #define PI 3.1415926

    using namespace std;

    int main()

    {double area,r,peri;

    cout<<"请输入圆的半径: ";

    cin>>r;

    area=PI* r*r;

    peri=2.0*PI*r;

    cout<<"圆的面积为: "<<area<<endl;

    cout<<"圆的周长为: "<<peri<<endl;

    return 0;

    }

    程序的运行结果如下:



    请输入圆的半径: 3↙

    圆的面积为: 28.2743

    圆的周长为: 18.8496






    5

    编译预处理

    在上述源程序编译之前,首先执行预编译命令#define PI3.1415926,将源程序内的所有宏名PI都替换成3.1415926,然后再执行正常的编译命令,将源程序转换为目标代码。可见,“宏替换”是一种“机械替换”,因为是在编译之前进行,所以不对宏名(PI)替换的对象(3.1415926)作语法检查,此时的3.1415926不应该看成是实数类型,而认为是一串普通的字符串常量。
    特别注意的是,宏定义语句的行末一般不加分号,因为它仅具有替换功能,并不是具体的代码语句。如果行末有分号,那么分号也属于替换对象的一部分,参与宏名的置换,很容易在置换后编译时发生语法错误。例如,例5.1中如果宏定义行末出现分号:

    #define PI3.1415926;

    源程序中语句area=PI*r*r;经宏展开后变成:

    area=3.1415926;*r*r;

    该语句在随后的编译过程中显然会出现语法错误。
    使用宏定义时,具体说明如下:
    (1) 宏展开只是一个简单的“机械”替换,不做语法检查,不是一个语句,其后不加分号“;”。
    (2) #define命令出现在函数的外面,其有效范围为定义处至本源文件结束,可以用#undef命令终止宏定义的作用域。例如:

    #definePI 3.1415926

    doublefun()

    {



    }

    #undef PIPI的有效范围

    int main()

    {



    }

    (3) 在进行宏定义中,可以用已定义的宏名,进行层层置换。
    (4) 对程序中用双引号括起来的字符串内容,即使与宏名相同,也不进行置换。
    目录
    目录 **部分C 语言基础 第1章C 基础知识 1.1C 与Visual C 语言 1.2C 程序的基本要素 1.2.1一个简单的程序 1.2.2C 程序的基本要素 1.2.3C 程序的书写规则 1.3C 程序的开发步骤与上机实践 1.3.1C 程序的开发步骤 1.3.2C 程序的上机实践 1.4信息在计算机中的表示 1.4.1进位计数制 1.4.2带符号数在计算机中的表示 1.4.3字符在计算机中的表示 练习题 第2章基本数据类型与表达式 2.1数据类型 2.2常量和变量 2.2.1常量 2.2.2变量 2.3整型数据 2.3.1整型常量 2.3.2整型变量 2.4浮点型数据 2.4.1浮点型常量 2.4.2浮点型变量 2.5字符型数据 2.5.1字符型常量 2.5.2字符型变量 2.5.3字符串常量 2.6类型转换 2.6.1不同类型数据间的混合算术运算 2.6.2赋值时的类型转换 2.6.3强制类型转换符 2.7运算符与表达式 目录 C 程序设计教程(第三版) 2.7.1算术运算符与算术表达式 2.7.2关系运算符与关系表达式 2.7.3逻辑运算符与逻辑表达式 2.7.4赋值运算符与赋值表达式 2.7.5自增运算符与自减运算符 2.7.6逗号运算符与逗号表达式 2.7.7sizeof运算符及表达式 2.7.8表达式中运算符的运算顺序 2.8简单的输入输出语句 2.8.1十进制整数、实数与字符数据的输入 2.8.2十六进制或八进制数据的输入 2.8.3数据的输出 练习题 第3章基本流程控制结构 3.1结构化程序设计 3.1.1结构化程序设计 3.1.2基本控制结构 3.1.3C 语言的语句分类 3.2选择结构语句 3.2.1if语句 3.2.2条件运算符“?:” 3.2.3switch语句 3.3循环结构语句 3.3.1while语句 3.3.2dowhile语句 3.3.3for语句 3.3.4三种循环的比较及适用场合 3.3.5多重循环 3.4控制执行顺序的语句 3.4.1break语句 3.4.2continue语句 *3.4.3goto语句 *3.4.4exit和abort函数 3.5综合应用举例 练习题 第4章函数 4.1概述 4.2函数的定义与调用 4.2.1函数的定义 4.2.2函数的调用 4.2.3引用作为函数参数 4.3函数的嵌套调用 4.4函数的递归调用 4.5内联函数 4.6函数重载 4.7带有默认参数的函数 4.8局部变量和全局变量 4.8.1局部变量 4.8.2全局变量 4.9变量的存储类别 4.9.1变量的生存期和存储类别 4.9.2auto型变量 4.9.3static局部变量 4.9.4register型变量 4.9.5extern型变量 4.9.6用static声明全局变量 4.10内部函数和外部函数 4.10.1内部函数 4.10.2外部函数 练习题 第5章编译预处理 5.1宏定义 5.1.1不带参数的宏定义 5.1.2带参数的宏定义 5.2文件包含 5.3条件编译 练习题 第6章数组 6.1数组的定义和引用 6.1.1一维数组的定义 6.1.2一维数组的引用 6.1.3一维数组的初始化 6.1.4一维数组程序举例 6.2二维数组的定义和引用 6.2.1二维数组的定义 6.2.2二维数组的引用 6.2.3二维数组的初始化 6.2.4二维数组程序举例 6.3数组作为函数的参数 6.3.1数组元素作为函数的实参 6.3.2数组名作为函数的实参 6.3.3二维数组作为函数的参数 6.4字符数组 6.4.1字符数组的定义 6.4.2字符数组的初始化 6.4.3字符串和字符串结束标志 6.4.4字符数组的输入输出 6.4.5字符串处理函数 6.4.6字符数组的应用举例 练习题 第7章指针 7.1指针与地址 7.1.1指针概念 7.1.2指针变量的定义 7.1.3指针变量作为函数参数 7.2指针与一维数组 7.2.1通过指针引用一维数组中的元素 7.2.2通过指针在函数间传递一维数组 7.3字符指针与字符串 7.3.1字符数组与字符指针 7.3.2字符串操作的特点 7.4指针与函数 7.4.1函数指针变量 7.4.2指针型函数 7.5指针与二维数组 7.5.1二维数组的地址 7.5.2通过指针引用二维数组中的元素 7.6指针数组与指向指针的指针 7.6.1指针数组 7.6.2指向指针的指针 7.6.3多级指针小结 7.7const指针 7.8动态存储分配 练习题 第8章结构体和共用体 8.1结构体 8.1.1结构体与结构体类型的声明 8.1.2结构体类型变量 8.1.3结构体数组和指针 8.2链表 8.2.1正向链表 8.2.2建立反向链表 8.3共用体 8.3.1共用体类型与共用体变量 8.3.2共用体变量的引用 8.4枚举 8.5用typedef声明类型 练习题 第二部分面向对象程序设计基础 第9章类和对象 9.1面向对象程序设计概述 9.1.1面向对象 9.1.2面向对象中的主要概念 9.1.3面向对象的程序设计 9.2类的声明和对象的定义 9.2.1类的声明 9.2.2对象的定义 9.2.3对象成员的访问 9.2.4用类的指针访问对象成员 9.2.5用对象的引用变量访问对象成员 9.3重载类的成员函数 9.3.1重载类的成员函数 9.3.2默认参数的类的成员函数 9.4this指针 9.4.1this指针 9.4.2在成员函数中访问成员函数 9.5类和对象的应用举例 练习题 第10章构造函数和析构函数 10.1构造函数 10.1.1构造函数的作用 10.1.2构造函数重载 10.1.3默认的构造函数 10.2析构函数 10.3构造对象的顺序 10.4对象的动态建立和释放 10.5复制构造函数 10.6临时对象 10.7const成员与对象 10.7.1const成员 10.7.2常对象 10.8面向对象的程序设计应用举例 练习题 第11章静态成员与友元 11.1静态成员 11.2静态成员函数 11.3友元函数 11.3.1普通函数声明为类的友元函数 11.3.2其他类的成员函数声明为类的友元函数 11.4友元类 练习题 第12章运算符重载 12.1运算符重载的概念 12.2运算符重载为成员函数 12.2.1双目运算符重载为成员函数 12.2.2单目运算符重载为成员函数 12.2.3赋值运算符重载为成员函数 12.3运算符重载为友元函数 12.3.1双目运算符重载为友元函数 12.3.2单目运算符重载为友元函数 12.4类型转换运算符函数 12.5重载流插入和流提取运算符 12.6综合实例 练习题 第13章继承和派生 13.1继承与派生的概念 13.1.1继承与派生的概念 13.1.2派生类的定义 13.1.3派生类的三种继承方式 13.2派生类的构造函数和析构函数 13.2.1单继承派生类的构造函数 13.2.2多继承派生类的构造函数 13.2.3有子对象的派生类的构造函数 13.3继承的冲突与支配 13.3.1冲突 13.3.2支配 13.3.3赋值兼容规则 13.4虚基类 13.4.1虚基类的定义 13.4.2虚基类的初始化 练习题 第14章虚函数 14.1多态性的概念 14.2虚函数 14.3纯虚函数与抽象类 练习题 第15章输入输出流 15.1C 的输入输出流 15.1.1ios类的结构 15.1.2输入流 15.1.3输出流 15.2格式化的输入输出 15.2.1输入格式化 15.2.2输出格式化 15.3文件流 15.3.1文件的概念 15.3.2文件的打开与关闭 15.3.3对文本文件的操作 15.3.4对二进制文件的操作 15.4字符串流 练习题 *第16章C 工具 16.1模板 16.1.1模板的概念 16.1.2函数模板 16.1.3类模板 16.2异常处理 16.2.1异常的概念 16.2.2异常处理的机制 练习题 参考文献

    与描述相符

    100

    北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 台湾 香港 澳门 海外