习题七--类和对象
- 格式:doc
- 大小:85.50 KB
- 文档页数:9
1.11.C++概述例题5:C++的合法注释是()。
A./*This is a C program/* B.// This is a C programC.“This is a C program”D.//This is a C program//答案:B分析:单行注释常采用“//”,多行注释采用“/*”和“*/”。
单行注释也可采用“/*”和“*/”,但答案A书写格式错误,不能选答案A。
注释和字符串的区别,双引号内的字符为字符串。
不能选答案C。
单行注释不需要结束符“//”,如果有,只能作为注释的一部分存在。
也不能选答案D。
例题6:下面标识符中正确的是()。
A._abc B.3ab C.int D.+ab答案:A分析:C++的标识符由字母、下划线和数字组成,而且第一个字符不能为数字。
答案B第一个字符为数字不能选B。
标识符不能为关键字,不能选答案C。
答案D第一个字符不是字母或下划线,也不能选。
例题7:分析下列该程序的错误。
输入数据格式为:2,5(回车)。
main(){ int sum=0;int a,b;cout<<"input a,b:";cin>>a>>b;sum=a+b;cout<<sum<<endl;}本程序把输入的两个数据进行累加并输出结果。
输入数据格式为:2 5。
正确程序:#include <iostream> // 编译预处理命令,以“#”开头。
把系统已经定义好的输入//输出功能包含到本程序中。
using namespace std; //使用std 名字空间int main() // 程序的主函数{ // 主函数开始int sum=0; // 定义一个变量sum存放累加结果,并且赋初值为0int a,b; // 定义两个变量,保存输入值cout<<"input a,b:"; // 提示输入cin>>a>>b; // 使用基本输入设备cin输入两个变量值sum=a+b; // 进行累加,结果保存到sum变量cout<<sum<<endl; // 使用基本输出设备cout输出累加结果sum}分析:(1)没有使用编译预处理命令:#include。
习题七一、用适当内容填空1. 数据库技术是【数据处理】的核心和基础;数据库以【文件】形式存储在计算机系统中,主要由【数据库表】构成,此外,还包含索引、【表之间关系】、数据有效性规则和【安全控制规则】等信息。
数据库表必须是【二维】表,是一种【结构化】、【有数据类型】的表格。
2. 计算机数据管理技术主要有【人工管理】、【文件系统】、【数据库系统】和【分布式数据库系统】四个阶段,【人工管理】阶段数据不能共享,【分布式数据库系统】阶段并行访问数据效率最高,【人工管理】阶段处理数据量最小,集中式数据库管理是指【数据库系统】阶段。
3.数据库系统的英文简称为【 DBS 】,它由计算机硬件、软件和相关【人员】组成,计算机硬件搭建了系统运行和存储【数据库】的硬件环境;【软件】除用于管理、控制和分配计算机资源外,还用于建立、管理、维护和使用【数据库】。
软件主要包括【数据库】、操作系统和【数据库管理系统】。
4.在DBMS中,通过【数据定义语言或DLL 】语言建立数据库中的表、视图和索引;用【数据操纵语言或DML】语言进行数据插入、修改和删除操作;用【数据查询语言或DQL】语言进行数据查询。
5.从用户角度来看,事务是完成某一任务的【操作】集合。
多个事务并发更新数据容易引起数据【不一致性】问题。
实现数据项互斥访问要求的常用方法是锁定数据项,常见的数据共享锁定方式是【共享型锁】和【排它型锁】。
6.在现实世界到数据世界的转化过程中,中间要经历【信息】世界;人们用【概念模型】描述信息世界中的对象及其关系,用【实体】表示事物,用【属性】表示事物的特征;用【数据模型】描述数据世界中的对象及其关系,用【一行数据或一条记录】表示事物,用【数据项、列或字段】表示事物的特征。
7.在数据安全性控制方面,DBMS所采取的措施有【用户标识和密码鉴定】、【用户分级授权】和【数据加密】。
8.在数据模型中,除了描述实体本身以外,还要对【实体间联系】进行描述;实体之间存在【一对一】、【一对多】和【多对多】三种联系;对于学生实体而言,―姓名‖是【属性】,―李明‖是【值】。
精心整理第8章类与对象8.1知识要点1.掌握类与对象的概念和定义方法,掌握类成员的访问属性。
2.掌握构造函数的概念、定义方法和使用方法。
分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。
例题2:下面()项是对构造函数和析构函数的正确定义。
A.void X::X(), void X::~X()B.X::X(参数),X::~X()C.X::X(参数),X::~X(参数)D.void X::X(参数),void X::~X(参数)答案:B分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、}; }C. class P{ D. class P{intf; public:?}; int a;?f=25; void Seta (int x) {a=x;}答案:D分析:在类体内不可对数据成员进行初始化;类定义结束时需用分号;只有类中的成员函数才能存取类中的私有数据。
例题5:拷贝构造函数具有的下列特点中,()是错误的。
A.如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的答案:B分析:静态成员可分为静态数据成员和静态成员函数;静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构函数无关;在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。
例题7:关于友元的描述中,()是错误的。
A.友元函数是成员函数,它被说明在类体内B.友元函数可直接访问类中的私有成员所以共调用了三次构造函数;每释放一个对象,系统自动调用一次析构函数,A、B、C对象释放时,分别调用析构函数,所以析构函数共调用了三次。
例题9:设A为test类的对象且赋有初值,则语句test B(A); 表示。
答案:将对象A复制给对象B。
分析:执行test B(A);语句相当于调用了默认复制构造函数,将A对象的属性复制给B对象。
类和对象一、选择题1、下面对方法的作用描述不正确的是:( d )A、使程序结构清晰B、功能复用C、代码简洁D、重复代码2、方法内定义的变量:( b )A 、一定在方法内所有位置可见B、可能在方法内的局部位置可见C、在方法外可以使用D、在方法外可见3、方法的形参:(a)A、可以没有B、至少有一个C、必须定义多个形参D、只能是简单变量4、方法的调用:(c)A、必须是一条完整的语句B、只能是一个表达式C、可能是语句,也可能是表达式D、必须提供实际参数5、return 语句:( d)A、不能用来返回对象B、只可以返回数值C、方法都必须含有D、一个方法中可以有多个return 语句6、void 的含义:(d)A、方法体为空B、方法体没有意义C、定义方法时必须使用D、方法没有返回值7、main()方法的返回类型是:( c )A 、boolean B、int C、void D、static8、方法重载所涉及的方法:( a )A、有相同的名字B、参数个数必须不同C、参数类型必须不同D、返回类型必须不同9、下面关于类和对象之间关系的描述,正确的是( c )A、联接关系B、包含关系C、具体与抽象的关系D、类是对象的具体化10、下面关于java中类的说法哪个是不正确的( c )A、类体中只能有变量定义和成员方法的定义,不能有其他语句。
B、构造方法是类中的特殊方法。
C、类一定要声明为public的,才可以执行。
D、一个java文件中可以有多个class定义。
11、下列哪个类声明是正确的( d)A、public void H1{…} B 、public class Move(){…}C、public class void number{}D、public class Car{…}12、下面的方法声明中,哪个是正确的(c)A、public class methodName(){}B、public void int methodName(){}C、public void methodName(){}D、public void methodName{}13、下述哪些说法是不正确的?( b )A、实例变量是类的成员变量B、实例变量是用static关键字声明的C、方法变量在方法执行时创建D、方法变量在使用之前必须初始化14、下面对构造方法的描述不正确是( b)。
第一章思考题】1、简述path 环境变量的作用。
2、请说说你对JVM 的理解。
答案】1、path 环境变量是系统环境变量中的一种,它用于保存一系列可执行文件的路径,每个路径之间以分号分隔。
当在命令行窗口运行一个可执行文件时,操作系统首先会在当前目录下查找是否存在该文件,如果不存在会继续在path 环境变量中定义的路径下去寻找这个文件,如果仍未找到,系统会报错。
2、JVM 是Java Virtual Machine 的缩写,全称是Java 虚拟机。
Java 语言的一个非常重要的特性就是跨平台性,而Java 虚拟机是实现这一特性的关键。
不同的操作系统需要使用不同版本的虚拟机,这种方式使得Java语言能够“一次编写,到处运行”。
Java语言编译程序只需生成在Java 虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
第二章【思考题】1、请简述& 与&& 的区别。
2、简述break、continue 和return 语句的区别。
【答案】1、&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
当运算符“ &”和“ && ”的右边为表达式时,使用“ &”进行运算,不论左边为true 或者false,右边的表达式都会进行运算。
如果使用" && ”进行运算,当左边为false时,右边的表达式则不会进行运算,因此“ && ”被称作短路与。
2、break 语句:在switch 条件语句和循环语句中都可以使用break 语句。
当它出现在switch 条件语句中时,作用是终止某个case并跳出switch结构。
JAVA 类和对象及数组习题一、选择题(1)下列构造方法的调用方式中,正确的是(D )——原因:在通过new实例化一个类对象时系统会自动调用该类相应的构造方法。
A.按照一般方法调用B。
由用户直接调用ﻫC.只能通过new 自动调用D。
被系统调用(2)在Java 中,能实现多重继承效果的方式是( C )——原因:一个类可以同时实现多个接口。
Java 接口反映了对象较高层次的抽象,还弥补了Java只支持单继承的不足,可用它来完成多继承的一些功能。
◻A。
内部类B.适配器 C.接口D.同步(3)int 型public 成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是( D )—原因:java 中定义常量用关键字final 来定义.A.public int MAX_LENGTH=100 B。
finalintMAX_LENGTH=100 ﻫC.public const int MAX_LENGTH=100D.p ublic final int MAX_LENGTH=100(4)下列叙述中,正确的是( A)—原因:Java 严格区分大小写,所以变量number 与Number 不相同;Java 中的注释方式除了“//”行注释之外还有段注释“/*---——--*/"和文档注释/**-—---- */。
Java 源文件中的public 类只能有一个。
◻A.声明变量时必须指定一个类型ﻫ B. Java认为变量number 与Number 相同ﻫC. Java中唯一的注释方式是"//"ﻫD。
源文件中public类可以有0 或多个(5)下列叙述中,错误的是(D )—原因:子类继承父类,并且可以有自己的成员变量和成员方法。
所以可以认为子类是父类的扩展。
◻A。
父类不能替代子类B.子类能够替代父类ﻫC。
子类继承父类D.父类包含子类(6)下列代码中,将引起编译错误的行是(B)—原因:定义float 型变量并对其初始化时,其值后面要加一个f。
类和对象一、选择题1.下列有关类的说法不正确的是()。
A.对象是类的一个实例B.任何一个对象只能属于一个具体的类C.一个类只能有一个对象D.类与对象的关系和数据类型与变量的关系相似2.下列表达方式正确的是()。
A.class P{ B. class P{public: public:int x=15; int x;void show(){cout<<x;} void show(){cout<<x;} }; }C. class P{ D. class P{int f; public:}; int a;f=25; void Seta (int x) {a=x;}}3.下列有关类的说法不正确的是()。
A.类是一种用户自定义的数据类型B.只有类中的成员函数或类的友元函数才能存取类中的私有数据C.在类中(用class定义),如果不作特别说明,所有的数据均为私有数据D.在类中(用class定义),如果不作特别说明,所有的成员函数均为公有数据4.以下有关类与结构体的叙述不正确的是( )A. 结构体中只包含数据;类中封装了数据和操作B. 结构体的成员对外界通常是开放的;类的成员可以被隐藏C. 用struct不能声明一个类型名;而class可以声明一个类名D. 结构体成员默认为public;类成员默认为private5.以下有关类和对象的叙述不正确的是( )A. 任何一个对象都归属于一个具体的类B. 类与对象的关系和数据类型与变量的关系相似C. 类的数据成员不允许是另一个类的对象D. 一个类可以被实例化成多个对象6.设有定义:class person{int num;char name[10];public:void init(int n, char *m);...};person std[30];则以下叙述不正确的是( )A. std是一个含有30个元素的对象数组B. std数组中的每一个元素都是person类的对象C. std数组中的每一个元素都有自己的私有变量num和nameD. std数组中的每一个元素都有各自的成员函数init7.设有以下类的定义:class Ex{int x;public:void setx(int t=0);};若在类外定义成员函数setx(),以下定义形式中正确的是( )A. void setx(int t) { ... }B. void Ex::setx(int t) { ... }C. Ex::void setx(int t) { ... }D. void Ex::setx(){ ... }8.对于类中定义的成员,其默认的访问权限为()。
A.publicB. protectedC.privateD. static9.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()。
A.publicB. protectedC.privateD. static9.通过指向对象的指针访问对象成员的一般形式是()。
A 指针名.成员名B 指针名->成员名10.访问权限只限于类成员访问是()。
A 私有成员B 公有成员11. 在C++中,函数原型不能标识( )A.函数的返回类型B.函数参数的个数C.函数参数类型D.函数的功能12. 在C++程序中,对象之间的相互通信通过( )A.继承实现B.调用成员函数实现C.封装实现D.函数重载实现13. 对于任意一个类,析构函数的个数最多为( )A.0B.1C.2D.314.下面说法正确的是( )A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C.类的内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字inline定义二、填空题1.类的成员函数可以在定义,也可以在定义。
2.类是用户定义的类型,具有类类型的变量称作__________。
3.用于定义C++的类型的关键字有____________、_______和。
4.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为的成员;若要访问其他成员变量,需要通过函数或函数。
5.OOP技术由、、方法、消息和继承五个基本的概念所组成6.引入类定义的关键字是。
类的成员函数通常指定为,类的数据成员通常指定为。
指定为的类成员可以在类对象所在域中的任何位置访问它们。
通常用类的成员表示类的属性,用类的成员表示类的操作。
7.类的访问限定符包括、和。
私有数据通常由函数来访问(读和写)。
这些函数统称为。
8.通常在逻辑上,同一类的每个对象都有代码区,用以存储成员函数。
而在物理上通常只有代码区。
只有在定义,并的函数和加了关键字的函数例外。
9.无论是什么继承方式,派生类的成员不能访问基类_________属性的成员。
10.表达式cout<<end1还可表示为_cout<<” /n ”;__。
11.C++中语句const char * const p=〃hello〃;所定义的指针p和它所指的内容都不能被_______。
12.假定AB为一个类,则语句AB(AB&x);为该类_________函数的原型说明。
13.说明常成员函数时,关键字const写在成员函数的_________和_________之间。
14.在C++中,访问一个对象的成员所用的运算符是_________,访问一个指针所指向的对象的成员所用的运算符是_________。
三、写出以下程序的结果1.#include<iostream.h>class Sample{ int x,y;public:Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;} ~Sample(){ if(x==y) cout<<"x=y"<<endl;else cout<<"x!=y"<<endl;}void disp(){ cout<<"x="<<x<<",y="<<y<<endl; } };void main(){ Sample s1(2,3);s1.disp(); }2.#include<iostream.h> class Sample{ int x;public:Sample(int a){ x=a;cout<<"constructingobject:x="<<x<<endl; } };void func(int n){ static Sample obj(n); } void main(){ func(1);func(10); }3.#include<iostream.h> class Sample{ int x,y;public:Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;} void disp(){cout<<"x="<<x<<",y="<<y<<endl;} };void main(){ Sample s(2,3), *p=&s;p->disp();}4.#include<iostream.h>class Sample{ public:int x;int y;void disp(){cout<<"x="<<x<<",y="<<y<<endl;} }; void main(){ int Sample::*pc; Sample s;pc=&Sample::x; s.*pc=10;pc=&Sample::y; s.*pc=20;s.disp();}5.#include<iostream.h>class Sample{ int x,y;public:Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;} void disp(){cout<<"x="<<x<<",y="<<y<<endl;} };void main(){ Sample s1,s2(2,3);s1.disp();s2.disp(); }6.#include<iostream.h>class Sample{ int A;static int B;public:Sample(int a){A=a,B+=a;}static void func(Sample s); }; void Sample::func(Sample s){cout<<"A="<<s.A<<",B="<<B<<endl;} int Sample::B=0;void main(){ Sample s1(2),s2(5);Sample::func(s1);Sample::func(s2);}7.#include<iostream.h>class Sample{ char c1,c2;public:Sample(char a){c2=(c1=a)-32;} void disp(){ cout<<c1<<"转换为"<<c2<<endl;} };void main(){ Sample a('a'),b('b');a.disp();b.disp();}8.#include<iostream.h> class Sample{ int x,y;public:Sample(){x=y=0;} Sample(int a,int b){x=a,y=b;} void disp(){cout<<"x="<<x<<",y="<<y<<endl; } };void main(){ Sample s1,s2(1,2),s3(10,20);Sample *Pa[3];Pa[0]=&s1;Pa[1]=&s2; Pa[2]=&s3;for(int i=0;i<3;i++) Pa[i]->disp();}9.#include<iostream.h> class Sample{ int x; int y;public:Sample(int a,int b){ x=a;y=b;}int getx(){return x;}int gety(){return y;} }; void main(){ int (Sample::*fp)();fp=&Sample::getx;Sample s(2,7);int v=(s.*fp)();fp=&Sample::gety;int t=(s.*fp)();cout<<"v="<<v<<",t="<<t<<endl; }10.#include<iostream.h> class Sample{ int x; int y;public:Sample(int a,int b){ x=a;y=b; }int getx(){return x;}int gety(){return y;} }; void main(){ int (Sample::*fp)();fp=&Sample::getx;Sample s(2,7),*p=&s;int v=(p->*fp)();fp=&Sample::gety;int t=(p->*fp)();cout<<"v="<<v<<",t="<<t<<endl; }11.#include <iostream.h>void main( ){int *a;int *&p=a;int b=10;p=&b;cout<<*a;}输出为:12.#include <iostream.h>template<class T>Tf(T*a,T*b,int n){Ts=(T)0;for(int i=0;i<n;i++) s+=a〔i〕*b〔i〕; return s;}void main(){double c 〔5〕={1.1,2.2,3.3,4.4,5.5},d〔5〕={10.0,100.0,1000.0}; cout<<f(c,d,5)<<endl;}输出为:253113. 运行下面的程序,写出当输入25,60时的输出结果。