1.填空题
(1)函数说明,函数体
(2)声明区,主程序区,函数定义区
(3)多态性
(4)namespace,using
(5)std
(6)cin,>>
(7)//
(8)对数据的操作
2.判断题
(1)对(2)错(3)错(4)错
(5)错
3.改错题
(1)没有函数体,应改为
void main() {};
(2)语句没有分号,应改为
using namespace myspace;
(3)cout和操作符<<共同完成输出的功能,应改为
cout<<" Input your name:";
(4)应改为
#include
第1章基本数据类型、运算符与表达
式
1.选择题(1)B (2)D (3)B
(4)D (5)B
2.简答题(1)(a)、(c)(e)、(f)、(g)、(h)、(i)
(2)(a)、(g)、(i)、(j)
(3)(a)5.5(b)0(c)20(d)0,0
(e)1(f)1,2(g)3(h)-40(i)2
(j)3
(k)s1>='0'&&s1<='9'(l)N!=0
3.读程序写结果
(1)0,15 (2)(1、1、1),(-1、
-1、-1)(3)
(a)a*a+2*a*b+b*b (b)4.0/3.0*3.1415926*R*R*R (c)5.0/9.0*(F-32)
(d)b>=a&&b<=c (4)36 41 43(5)x=1
第2章C++的控制语句
1.选择题(1)B (2)A (3)A
(4)C (5)A
2.判断题(1)错(2)对(3)对(4)错(5)错
3.读程序写结果
(1)
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
(2)
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
(3)
j的值为0;
i的值为2;
第3章函数
1.填空题(1)void (2)静态全局变量,static (3)函数重载
(4)inline
(5)递归函数(6)宏定义命令,文件包含命令,条件编译命令
2.判断题(1)错(2)错(3)错(4)错(5)错
(6)对(7)错(8)错(9)对
(10)对
3.读程序写结果
(1)
x=7,y=4
x=9,y=5
(2)
34.56
101
(3)
16
22
28
(4)
12 15 18 21 24
(5)
2,1,4,1,3,2,1,
第4章构造数据类型
1.选择题(1)C (2)D (3)A
(4)B (5)C
2.判断题(1)错(2)对(3)对(4)错(5)错
3.读程序写结果
(1)
153
(2)
42
2 5 6 8 10
(3)
65535,21
(4)
4
19
(5)
6904
(6)
4
3
2
1
第5章类和对象
1.填空题
(1)类,对象,类
(2)数据成员,成员函数
(3)不能
(4)private,protected,public,private
(5)成员函数
(6)friend
(7)类名,作用域运算符
(8)对象名.成员名,指针变量名->
成员名,(*指针变量名).成员名(9)构造,析构,构造,析构
(10)常量数据,引用数据
(11)全局,数据类型,所属的类
(12)常成员,只读
(13)成员,友元
(14)类数据成员,类成员函数
(15)this
(16)浅拷贝
2.选择题(1)C (2)C (3)B
(4)C (5)B
(6)C (7)D (8)B (9)C
(10)D
(11)A (12)C (13)D (14)D
(15)B
3.改错题
(1)man1.salary=1000.00; 不能在类外访问类的私有成员
(2)float r=0;和float c=0; 类本身是抽象的,不能在类的定义体中给其数据成员赋值
}后缺少分号“;”
(3)成员函数void setdata(float x1,float y1,float r);没有实现
(4)构造函数名point()应与类名同名,为Point
没有头文件包含#include
4.读程序写结果题
(1)
x=0,y=0
x=100,y=200
(2)
x=100,y=200
x=1000,y=2000
t=3.14
(3)
Sta::fun2()=10
s.fun2()=11
r.a=20
(4)
Constructor1 called!
x=0
Constructor2 called!
x=100
Destructor called!
Destructor called!
(5)
57
第6章继承和派生
1.填空题(1)继承(2)基类,派生类(3)private,protected,public,private (4)不可访问,保护,公有(5)私有(6)单(一),多(重)(7)赋值兼容规则(8)静态,动态(9)抽象类
2.选择题(1)B (2)A (3)B
(4)C (5)B
(6)A (7)D (8)B (9)B (10)B(11)D (12)B
3.改错题
(1)本题的错误主要是数据成员的访问权限问题:基类的私有成员在派生类中不可访问,如fb()函数中的a3=30;语句;类的私有和保护成员在类外不能访问,如main 函数中的x.a2 =20;.a3=30; ,y.a2=200; ,y.a3=300; ,y.b2=2000;和y.b3=3000;语句。
(2)本题的错误主要是成员函数的访问权限问题:由于派生类Derived是基类Base的保护派生类,所以基类中的私有成员变成派生类的不可访问成员,而基类的保护和公有成员则变成派生类的保护成员。对于类的不可访问和保护成员在类外是不能访问的,故main函数中的语句obj.funl();,obj.fun2(); 和obj.fun3(); 是错误的。
4.读程序写结果题
(1)
d=110
b=190
d=110
d=110
(2)
d=110
b=190
d=110
b=90
(3)
基类B1的构造函数被调用
基类B3的构造函数被调用
基类B2的构造函数被调用
派生类D的构造函数被调用
派生类D的析构函数被调用
基类B2的析构函数被调用
基类B3的析构函数被调用
基类B1的析构函数被调用
(4)A B C D D
(5)A B D D
(6)A A B D D
(7)A B C D D
(8)5 25
第7章运算符重载
1.填空题
(1)函数重载
(2)重载为类的成员函数,重载为
类的友元函数
(3)Operator
(4)1,2
(5)友元
2.选择题(1)B (2)D (3)A (4)D (5)B
(6)C (7)C (8)C
第8章模板
1.填空题(1)类模板,函数模板(2)类,对象(3)数据类型(4)fun(5) 2.选择题(1)C (2)B (3)C
(4)B (5)D
第9章文件
1.填空题(1)FILE,stdio.h (2)stdio.h,fopen,fclose (3)顺序,随机(4)cin,>>,cout,<< (5)ios (6)fstream,open,close (7)文件指针的当前位置,文件开头,文件尾
2.选择(1)B (2)B (3)A
(4)D (5)B
(6)D (7)C (8)B (9)A
(10)B
第10章string类与标准模板库STL 1.填空题(1)字符数组,string类(2)string (3)容器,迭代器,算法(4)顺序,关联(5)指针(6)函数模板
第11章异常处理
1.填空题(1)throw,try,catch (2)多(3)数据类型(4)catch(…) (5)相反
2.判断题(1)错(2)对(3)错(4)错(5)错
第3章面向对象程序设计基础
第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {
studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){
第1章面向对象软件开发概述 1.简述面向过程问题求解和面向对象问题求解的异同。试列举出面向对象和面向过程的编程语言各两种。 答:面向过程问题求解,以具体的解题过程为研究和实现的主体,其思维特点更接近于计算机;面向对象的问题求解,则是以“对象”为主体,“对象”是现实世界的实体或概念在计算机逻辑中的抽象表示,更接近于人的思维特点。 面向过程的编程语言:C,Pascal,Foratn。 面向对象的编程语言:C++,Java,C#。 2.简述对象、类和实体及它们之间的相互关系。尝试从日常接触到的人或物中抽象出对象的概念。 答:面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。类是同种对象的集合与抽象。类是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,而属于类的某一个对象则被称为是类的一个实例,是类的一次实例化的结果。如果类是抽象的概念,如“电视机”,那么对象就是某一个具体的电视机,如“我家那台电视机”。 3.对象有哪些属性?什么是状态?什么是行为?二者之间有何关系?设有对象“学生”,试为这个对象设计状态与行为。 答:对象都具有状态和行为。 对象的状态又称为对象的静态属性,主要指对象内部所包含的各种信息,也就是变量。每个对象个体都具有自己专有的内部变量,这些变量的值标明了对象所处的状态。 行为又称为对象的操作,它主要表述对象的动态属性,操作的作用是设置或改变对象的状态。 学生的状态:姓名、性别、年龄、所在学校、所在系别、通讯地址、电话号码、入学成绩等; 学生的行为:自我介绍、入学注册、选课、参加比赛等。 4.对象间有哪三种关系?对象“班级”与对象“学生”是什么关系?对象“学生”与对象“大学生”是什么关系? 答:对象间可能存在的关系有三种:包含、继承和关联。 对象“班级”与对象“学生”是包含关系。 对象“学生”与对象“大学生”是继承关系。 5.有人说“父母”和“子女”之间是继承的关系。这种说法是否正确?为什么? 答:“父母”和“子女”之间不是面向对象意义上的“继承”关系。因为这里的继承关系是“is a”的关系,“男人”与“人”之间可以说是继承关系。 6.面向对象的软件开发包括哪些过程?OOA模型包括哪三个层次?OOD模型在OOA模型的基础上引入了哪些工作? 答:面向对象的软件开发过程可以大体划分为面向对象的分析(Object Oriented analysis,OOA)、面向对象的设计(Object oriented design,OOD)、面向对象的实现(Object oriented programming,OOP)三个阶段。 面向对象的分析的主要作用是明确用户的需求,并用标准化的面向对象的模型规范地表述这一需求,最后将形成面向对象的分析模型。 面向对象的设计将在OOA模型的基础上引入界面管理、任务管理和数据管理三部分的内容。 7.面向对象的程序设计方法有哪些优点? 答:由于对象的概念能够以更接近实际问题的原貌和实质的方式来表述和处理这些问题,所以面向对象的软件开发方法比以往面向过程的方法有更好的灵活性、可重用性和可扩展性,使得上述“分析—设计—实现”的开发过程也更加高效、快捷。
一、填空题(每空1分,共14分) 1、观看以下程序: class point{ public: void show() {cout<<”point”< (A)指针(B)引用(C)枚举(D)结构 3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。 (A)share (B)public (C)private (D)protected 4、关于构造函数,下列说法不正确的是()。 (A)构造函数名字和类名相同 (B)构造函数在创建对象时自动执行 (C)构造函数无任何函数返回类型 (D)构造函数有且只有一个 5、派生类可以访问其基类的()。 (A)公有成员(B)保护成员 (C)私有派生(D)公有和保护成员 6、下列关于运算符重载的描述中,错误的是()。 (A)运算符重载不可以改变操作数的个数 (B)运算符重载不可以改变运算符的功能 (C)运算符重载不可以改变结合方向 (D)运算符重载不可以改变运算优先级 7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是() (A)面向过程(B)面向对象(C)安全性(D)复用性 8、对于类中定义的成员,其隐含访问权限为()。 A.public B.protected C.private D.static 9、下面有关重载函数的说法中正确的是() (A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同; (C)重载函数必须有不同的形参列表(D)重载函数名可以不同; 10、有如下的对类“CSample”的说明,其中()是错误的。 class CSample { A.int a=23; B.CSample(); public: C.CSample(int val); D.~ CSample(); 11、在int a=3,int *p=&a;中,*p的值是( ) A.变量a的地址值 B.无意义 C.变量p的地址值 D.3 12、每个类()构造函数。 (A)只能有一个(B)只可有公有的 C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y); }elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);C语言程序设计第三版习题库答案
(完整版)《面向对象程序设计》答案