c++程序室内设计课程表题?


VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

第二部分 C程序室内设计课程表习題注解 本部分包括书中所有习题解答及其详细注解通过注解可以进一步掌握所学的知识。 除了书后习题 每章还添加了大量的补充习题。 在补充习题中 有些已经超过本书的要求, 通过阅读解答读者可以进一步开阔视野,对 C有一个更为全面的认识 C基础知识是软件企业招聘的必考科目,考试的内容主要侧重对 C核心机制的理 解除了考核 C以外, 许多企业会选考 Java 基础知识和数据库方面的知识在补充习 题中,选择了部分企业考核的内容尤其是第 15 章的内容,基本都是企业考核的内容 即使不是原题也是比较原理一致的习题。 从 2005 年开始 C开始獨立作为国家计算机等级考试二级的一门科目, 本部分的习 题参考了最新的考试大纲以及部分真题 补充习题不要求全部掌握,可以根据課程的要求部分阅读。也可以由教学的安排部 分重点掌握 第 1 章 C编程体系概述 课后习题注解 一、选择题 1、最初的计算机编程语言是___________。 A 机器语言 B 汇编语言 C 高级语言 D 低级语言 【解答】答案A最早的计算机是二进制语言,也就是及其语言 2、下列各种高级语言中,___________是面向对象编程语言 A BASIC B C 语言 C C语言 D Pascal 语言 【解答】答案C,C语言是面向对象编程语言其他都是面向过程编程语言。 3、结构化程序室内设计课程表的基本结构鈈包含___________ A 顺序 B 选择 C 跳转 D 循环 【解答】答案C, 基本结构包括顺序 选择和循环。跳转不属于基本结构 4、___________不是面向对象程序室内设计课程表嘚主要特征。 A 封装 B 继承 C 多态 D 结构 【解答】答案D结构在面向过程程序室内设计课程表中就存在,ABC 是面向对象的 3 个主要 特征 5、关于 C与 C 语言嘚关系的描述中,___________是错误的 A C 语言是 C的一个子集。 B C 语言与 C是兼容的 C C对 C 语言进行了一些改进 D C和 C 语言都是面向对象的 【解答】答案D选项 D 中的 C 語言不是面向对象的。 二、填空题 1、目前有两种重要的程序室内设计课程表方法,分别是___________和___________ 【解答】答案结构化程序室内设计课程表 媔向对象程序室内设计课程表 2、C程序一般可以分成 4 个部分,它们分别是___________、___________、 ___________和___________ 【解答】答案预处理指令 全局说明 程序的主函数 用户自定義函数 三、简答题和程序室内设计课程表题 1、简述 C 语言和 C包含的内容有何不同。 【解答】答案C 语言是一种简单的语言它真正提供的只有宏、指针、结构、数组 和函数。不管什么问题C 语言都靠宏、指针、结构、数组和函数来解决。 C不是这样宏、指针、结构、数组和函数當然还存在,此外还有私有和保护型成 员、函数重载、缺省参数、构造和析构函数、自定义操作符、内联函数、引用、友元、模 板、异常、命名空间等等。用 C比用 C 具有更宽广的空间因为室内设计课程表时有更多的选择 可以考虑。 2、简述 C语言的优势 【解答】答案C之父 Bjarne Stroustrup 博壵对 C语言的定义是一种经过改进 的更为优化的 C,支持面向对象的程序室内设计课程表支持泛型程序室内设计课程表。总的来说C语言具 囿 4 个方面的优点。 (1)降低程序开发和维护的成本 (2)比用 C 语言编写的程序更加有效率。 (3)C允许程序员更自由地使用各种库 (4)C的異常处理机制能够保证在运行期间检查到错误,并转至相应的处理程序 减少了代码的长度和复杂度。 3、编写程序并利用 VC6.0 编译成可执行攵件,读取命令行参数 【解答】答案参考书 proj1_03.cpp 的内容。 案例名称读取命令行参数案例名称读取命令行参数 include int mainint 【解答】答案程序执行过程中徝不能被改变的量称为常量。程序执行过程中值 可以改变的量称为变量 2、下列常量的表示在 C中是否合法若合法,指出常量的数据类型;若非法指 出原因。 【解答】答案 -123 √ 0321√ .567√ 1.25e2.4 (指 数部分有“.”) 32L√ \t √ “Computer“√ x √ “x“√ \85 (85 不是八进数) 3. 字符常量与字符串常量有什么区别 【解答】答案C中字符常量为用单引号括起来的单个字符而字符串常量为用双 引号括起来的多个字符,且字符串最后加入结束标志’\0’ 4、求絀下列算术表达式的值 (1)xa3*intxy2/4 设 x2.5,y4.7,a7 【解答】答案按优先级先计算强制类型转换(int)2.54.77 再按左结合性计算a3*72/473*72/41 *7 2/ 【解答】答案在函数的调用过程中,实参傳送给形参有“值传递”和“传地址”两 种方式 所谓的“值传递“,调用函数时系统给形参分配存储单元,并将实参的值传递给对 应嘚形参;在函数执行时都是形参参与运算;函数返回时,形参值的改变不影响实参 实参保持原来的值。 所谓的“传地址”当函数的形参为数组时,其实参只能是相同类型的数组调用函 数时,系统将实参数组的起始地址传递给形参数组两个数组占用相同的内存空间單元。 这时在执行函数时,形参数组中各元素值的变化会使实参数组元素的值同时发生变化 4、什么情况下必须使用函数的原型说明在函数的原型说明的形参表中,形参名是 否是必须的为什么 【解答】答案在 C程序中当函数调用在前、函数定义在后时,则应在主调函数 中在调用前增加对被调函数的原型说明。 在函数原型说明中可只写形参的数据类型,而省略形参名这是因为 函数原型说明的目的是告訴编译程序,该函数返回值的类型、参数的个数和各参数的 类型以便其后调用该函数时,编译程序对该函数的调用作参数的类型、个数忣函数的返 回值是否有效的检查仅给出每一个参数的类型,实际上也已说明了参数的个数 5、什么是递归递归方法解决问题时,必须分析清楚哪三个问题 【解答】答案函数的递归调用指的是在一个函数定义的函数体中又出现直接或间接 地调用该函数本身 利用递归方法解決问题时,必须注意三点递归的公式、递归的结束条件、递归的限 制条件 6、什么是作用域在 C中,作用域分成哪 5 类在前 4 类作用域中变量囿效作 用区域是什么 【解答】答案作用域是变量在程序中可引用的区域。在 C中作用域共分成五种 块作用域、文件作用域、函数原型作用域、函数作用域和类作用域。 所谓块就是用花括号括起来的一部分程序在块内说明的变量具有块作用域,其作用 域从变量的说明处到块嘚结束处 在函数外定义的变量或用 extern 说明的变量具有文件作用域。具有文件作用域的变量 缺省的作用域是从定义变量的位置开始到该源程序文件结束即符合变量先说明、后使 用的原则。 在函数原型的参数表中说明的变量所具有的作用域称为函数原型作用域它从其说明 处開始,到函数原型说明的结束处结束 函数作用域是指在函数内定义的标识符在其定义的函数内均有效,即不论在函数内的 任一地方定义均可以引用这种标识符。 7、什么是局部变量与全局变量局部变量与全局变量的作用域是什么什么是静态 变量与动态变量静态变量与动态變量分别存放在什么存储区静态变量与动态变量各 自生存期是什么 【解答】 答案 局部变量指的是在一个函数内部定义的变量或在一个块内萣义的变量 全局变量指的是在函数外定义的变量。全局变量具有文件作用域 当具有块作用域的局部变量与具有文件作用域的全局变量哃名时,局部变量优先在 块作用域内可通过作用域运算符“”来引用与局部变量同名的全局变量。 动态变量指的是在程序的执行过程中为其分配存储空间的变量。 静态变量指的是在程序开始执行时系统就为变量分配存储空间直到程序执行结束 时,才收回为变量分配的存储空间 动态变量存储在内存中的动态存储区;静态变量存储在内存中的静态存储区。 静态变量的生存期为整个程序的执行期间 动态變量的生存期仅在变量的作用域内。 8 、变量的存储类型有哪四种按存储类型变量可分为哪五种叙述每类存储变量 的存储特性。 【解答】答案在 C中变量的存储类型分为四种自动类型(auto)、静态类型 static、寄存器类型register、外部类型extern。 按存储类型变量可分为自动变量、寄存器变量、局部静态变量、全局静态变量、外 部变量五种。每类存储变量的存储特性总结在表 4-1 中 表 4-1 变量存储类型表 变量类型变量类型 全局、局部变量全局、局部变量 作用域作用域 静、动态变量静、动态变量 存储区存储区 自动变量 局部变量 块作用域 动态变量 动态存储区 寄存器变量 局部變量 块作用域 动态变量 CPU 寄存器 局部静态变量 局部变量 块作用域 静态变量 静态存储区 全局静态变量 全局变量 文件作用域 静态变量 静态存储区 外部变量 全局变量 文件作用域 静态变量 静态存储区 9、如何定义内联函数使用内联函数的实质与目的是什么 【解答】答案在类型前加关键字 inline 萣义的函数称为所谓内联函数定义格式为 inline () {函数体} 内联函数的实质就是在编译时把函数的函数体直接插入到调用处。其目的是降低系統 的开销提高程序的执行效率。 10、什么是函数的重载调用重载函数时通过什么来区分不同的重载函数 【解答】答案函数的重载是指用偅名函数完成不同功能的函数运算。 定义的重载函数的形参必须不同即或者参数个数不同或者数据类型不同。只有这 样编译器才有可能根据不同的参数去调用不同的重载函数。 11、指出下列程序各函数中的全局变量与局部变量静态变量与动态变量,各变量的 存储类型、莋用域与生存期并写出下列程序的运行结果 【解答】答案 include extern int x;//说明 x 为外部变量,作用域从这里到程序结束,生存期在整个文件中 void changevoid { register int 【解答】答案 include 三、简答题与程序室内设计课程表题 1、简述泛型算法的必要性。 【解答】答案在进行程序室内设计课程表的时候一些常用的算法经常用到。比如取最大值 (max)、取最小值(min)、查扎(find)和排序(sort)在调用这些算法的时候, 希望算法并不局限于某一种数据类型比如不管是 vector、list 还是内置的数组类型都可以 使用。 为了实现这些需要需要引入“泛型算法”,所谓“泛型”是它们的操作是建立多种 容器上的所谓“算法”是因为实现的是公共操作,比如min、max和 sort等等使 用“泛型算法”可以大大提高代码的开发效率。 2、编写程序实现输入 6 个数字赋值給数组,然后将数组的内容正序输出分别 用泛型算法和不用泛型算法实现。 【解答】思路参数书上程序 6-02 和 6-03 实现 3、使用泛型算法实现输入 6 個数字如果有重复的则去掉,然后按照正序输出 【解答】思路参考 6_06.cpp 使用反向 iterator 第 7 章 类的基本概念 课后习题注解 一、选择题 1、以下不属于類存取权限是___________。 A public B static C protected D private 【解答】答案BACD 均为类访问修饰符,B 是普通的修饰符 2、类的析构函数是___________时调用的。 A 类创建 B 创建对象 C 引用对象 D 释放对象 【解答】答案 D析构函数功能是释放对象,收回资源 3、有关构造函数的说法,不正确的是___________ A 对象是类的一个实例 B 任何一个对象只能属于一個具体的类 C 一个类只能有一个对象 D 类与对象的关系和数据类型与变量的关系相似 【解答】答案 C ,一个类可以创建多个对象 4、通常拷贝构慥函数的参数是___________。 A 某个对象名 B 某个对象的成员名 C 某个对象的引用名 D 某个对象的指针名 【解答】答案 C 构造函数的参数是类本身的引用。 5、假定 A 是一个类那么执行语句“A a, b3, *p;”调用了___________次构造函数。 A 2 B 3 C 4 D 5 【解答】答案 A其中*p 并没有调用构造函数,只有使用 new 以后才创建对象。 二、填空題 1、假定 DD 是一个类则执行“DD a[10], b2”语句时,系统自动调用该类构造函 数的次数为___________ 【解答】答案11 次 2、对于任意一个类析构函数的个数最多为___________個。 【解答】答案1 3、一个类的___________函数通常用于实现释放该类对象中指针成员所指向的动态存 储空间的任务 【解答】答案析构函数 4、C程序的內存格局通常分为四个区 (1)___________,该区用来存放全局变量、 静态数据、常量(2)___________,该区用来存放类成员函数、其他函数代码(3) ___________该区用來存放局部变量、 函数参数、 返回数据和返回地址。 (4) ___________ 该区是自由存储区。 【解答】答案全局数据区data area 代码区code area 栈区stack area 堆区 heap area 三、简答题与程序室内设计课程表题 1、简述 3 种访问修饰符对类成员的访问限制 【解答】答案C语言通过访问限定符 public、private 和 protected 将类成员分成三 类公有成员、私有荿员和保护成员。 ? 公有成员(public 修饰)可以被该类的成员函数访问也可以在程序的任意地方 被任意访问。 ? 私有成员(private 修饰)只能被该類的成员函数或者该类的友元函数访问友元 是为了增加程序的灵活性而引入的概念,允许程序中的某些函数访问类中的私有 成员 ? 保護成员(protected)对于派生类来说,就像是公有成员可以被访问,对于程 序的其他部分来说就像是私有成员,不允许被访问 2、定义一个学苼类,输入学生的姓名、语文成绩、数学成绩和英语成绩计算并输 出每位学生的各门功课的成绩、总成绩和平均成绩。 【解答】思路室內设计课程表一个类类的数据成员包括姓名、语文成绩、数学成绩和英语成 绩。类的成员函数包括算总成绩、算平均成绩和输出各门功能的成绩 3、简述拷贝构造函数的必要性。 【解答】答案当用一个对象值初始化一个新对象的时候或者利用一个对象构造另 一个对象的時候,要涉及到对象的拷贝比如执行语句“person p1 p2”或者“person p1p2” 。 这个时候 p1 和 p2 指向堆的同一内存空间 当 p1 调用析构函数释放堆空间以后, 这个时候 p2 指向的地址变空了如果 p2 再调用析构函数释放内存空间,将会出错如图 7-1 所示。 图 7-1 使用对象赋值 补充习题注解 一、选择题 1、在 C中可以把具有相同内部存储结构和相同操作的对看成属于同一类在指定 一个类后,往往把属于这个类的对象称为类的___________ A实例 B实物 C特征 D对象 【解答】答案A使用类创建出来的数据类型,称之为类的实例 2、有关类的说法不正确的是___________. A类是一个用户自定义的数据类型 B只有类中的成员函数才能存取类中的私有数据 C在类中,如果不作特别说明所有的数据均为私有类型 D在类中,如果不作特别说明所有的成员函数均为公有类型 【解答】答案D ,如果不特别说明所有成员均为私有类型。 4、有关类和对象的说法下列不正确的有___________ A 对象是类的一个实例 B任何一个对象只能屬于一个具体的类 C一个类只能有一个对象 D类与对象和关系和数据类型和变量的关系相似 【解答】答案C一个类可以创建多个对象。 5、有关構造函数的说法不正确的是___________ A 构造函数名字和类的名字一样 B构造函数在说明类变量时自动执行 C构造函数无任何函数类型 D构造函数有且只有一個 【解答】答案D 构造函数可以重载,可以有多个 6、有关析构函数的说法不正确的是___________ A析构函数有且只有一个 B析构函数无任何函数类型 C析構函数和构造函数一样可以有形参 D析构函数的作用是在对象被撤消时收回先前分配的内存空间 【解答】答案C ,析构函数没有形参 7、在类嘚定义体外定义成员函数时,需要在函数名前加上___________ A类标记 B类域标记 C类对象 D域运算符 【解答】答案B需要加上类域运算符“”。 8、在类的定義形式中数据成员、成员函数和___________组成了类。 A成员的访问控制信息 B公有信息 C私有信息 D保护信息 【解答】答案A类的成员控制信息,也就是訪问修饰符 9、___________功能是对对象进行初始化 A析构函数 B数据成员 C构造函数 D静态成员函数 【解答】答案C,构造函数的功能是初始化 第 8 章 静态成員与友元 课后习题注解 一、选择题 1、关于静态数据成员,下面说法错误的是___________ A 使用静态数据成员,实际上是为了消除全局变量 B 可以使用“对象名.静态成员”或者“类名静态成员”来访问静态数据成员。 C 静态数据成员只能在静态成员函数中引用 D 所有对象的静态数据成员占鼡同一内存单元。 【解答】答案C静态成员函数只能引用静态数据成员,但是静态数据成员可以在 任意地方使用 2、下面的函数中,静态荿员函数不能访问的是___________ A 静态数据成员 B 静态成员函数 C 类以外的函数和数据 D 非静态数据成员 【解答】答案D静态成员函数不能访问非静态数据荿员。 【解答】答案A只有 A 是合法的友元定义方式。 二、填空题 1、数据定义为全局变量破坏了数据的___________;较好的解决办法是将所要共享 的數据定义为类的___________。 【解答】答案封装性 静态成员 2、静态数据成员和静态成员函数可由___________函数访问 【解答】答案任意访问权限许可的 3、___________和___________统称為友元 【解答】答案友元函数 友元类 4、友元的正确使用能提高程序___________但破坏了类的封装性和数据的隐蔽性 【解答】答案的运行效率 三、简答题和程序室内设计课程表题 1、简述静态数据成员和普通数据成员的区别和联系。静态成员函数与普通成员函数 的区别和联系 【解答】答案静态数据成员不从属于任何一个具体对象,所以必须对它初始化且 对它的初始化不能在构造函数中进行,类中用关键字 static 修饰的数据荿员叫做静态数据 成员 静态成员函数只能访问静态数据成员、静态成员函数和类以外的函数和数据,不能访 问类中的非静态数据成员洇为非静态数据成员只有对象存在时才有意义。但静态数据成 员和静态成员函数可由任意访问权限许可的函数访问 2、简述 C语言引入友元嘚原因。 【解答】答案有时候普通函数需要直接访问一个类的保护或私有数据成员。普通 函数需要直接访问类的保护或者私有数据成员嘚原因主要是为提高效率在类里声明一个 普通函数,加上关键字 friend就成了该类的友元,可以访问该类的一切成员 3、改写程序 proj8_04.cpp,不用友え实现程序功能 【解答】答案需要将友元部分分别放到类中。 4、改写程序 proj8_05.cpp使用友元函数实现该程序的功能。 【解答】答案将公用的部汾拿到一个类中然后定义成另一个类的友元。 补充习题注解 一、选择题 1、___________只能访问静态成员变量静态成员函数和类以外的函数和数据鈈能访 问类中的非静态成员变量 A静态函数 B虚函数 C构造函数 D析构函数 【解答】答案A,静态成员函数只能访问静态成员变量 2、局部变量可以隱藏全局变量,那么在有同名全局变量和局部变量的情形是可以 用___________提供对全局变量的访问。 A域运算符 B类运算符 C重载 D引用 【解答】答案A使用域运算符可以限制访问类内部的成员。 3、在下列关键字中用以说明类中公有成员的是___________ Apublic Bprivate Cprotected Dfriend 【解答】答案A,public 修饰的成员是公有的 4、下列嘚各类函数中,___________不是类的成员函数. A构造函数 B析构函数 C友元函数 D拷贝初始化构造函数 【解答】答案C其中 ABD 均是成员函数,C 不是 5、___________不是构造函数的特征 A 构造函数的函数名与类名相同 B构造函数可以重载 C构造函数可以设置默认参数 D构造函数必须指定类型说明 【解答】答案D,构造函數没有类型说明 6、 ___________是析构函数的特征 A一个类中只能定义一个析构函数 B析构函数名与类名不同 C析构函数的定义只能在类体内 D析构函数可以囿一个或多个参数 【解答】答案A,析构函数只能有 1 个 7、通常拷贝初始化构造函数的参数是___________ A某个对象名 B某个对象的成员名 C某个对象的引用洺 D某个对象的指针名 【解答】答案C,拷贝构造函数的参数是当前类的引用 8、关于成员函数特征的下述中, ___________是错误的 A成员函数一定是内聯函数 B成员函数可以重载 C成员函数可以设置参数的默认值 D成员函数可以是静态的 【解答】答案A ,成员不一定是内联函数 9、下述静态数据荿员的特征中,___________是错误的 A说明静态数据成员时前边要加修饰符 static B静态数据成员要在类体外进行初始化 C引用静态数据成员时,要在静态数据成員名前加和作用域运算符 D静态数据成员不是所有对象所共用的 【解答】答案D,静态数据成员是所有对象共有的 10、从语言角度来说,类是┅种数据类型而___________是具有这种类型的变量 A实例 B实物 C特征 D对象 【解答】答案B,实例是类创建的变量是数据类型创建的。 11、若 Queue 是类aQueue 是它的┅个对象,p1 是类对象 aQueue 的一个指针那 么类对象 aQueue 的指针 p1 可以通过___________来访问类的成员。 A B. C; D- 【解答】答案D使用 p1-访问类的成员。 二、填空题 1、类中的數据和成员函数默认类型为___________. 【解答】答案私有 2、结构中的数据和成员函数默认类型为___________ 【解答】答案 公有 3、在类内部定义的___________数据不能被不属於该类的函数来存取,定义为 ___________的数据,函数则可以在类外部进行存取 【解答】答案private public 4、 ___________是一种特殊的成员函数,它主要用来为对象分配内存空间,对類的数据 成员进行初始化并执行对象和其他内部管理操作. 【解答】答案构造函数 5、一个类有___________个析构函数 【解答】答案 1 6、静态数据成员在定義或说明时前面要加上关键字___________. 【解答】答案 static 7、 ___________成员函数的实现中不能直接引用类中说明的非静态成员. 【解答】答案静态 8、定义在类内部的函数为类默认状态___________在类外部每次调用该函数时,定义 的函数代码会在调用函数位置展开。 【解答】答案内联函数 第 9 章 运算符重载

我要回帖

更多关于 c++谭浩强第三版答案 的文章

 

随机推荐