类和对象练习题
C++基础习题(选择,循环,类与对象)

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。
JAVA类与对象及数组习题及答案

V JA VA A 类和对象及数组习题类和对象及数组习题一、选择题一、选择题(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=100B .final int MAX_LENGTH=100C .public const int MAX_LENGTH=100D .public 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)—原因:子类继承父类,并且可以有自己的成员变量和成员方法。
《类与对象》课后习题(含答案)

问题一:程序执行结果是
问题二:本程序中,y、z 是 class Test{ public: static int Data; }; int Test::Data=100; //A void main(void) { Test t1,t2; t1.Data=200; t2.Data=300; //B //C
2、写出程序的输出结果。 #include <iostream> #include <cstring> using namespace std; class SomeClass { int One , Two; public: SomeClass(int a = 1, int b = 1) { One = a; Two = b; cout << "Structor" << endl; } SomeClass(SomeClass &obj) { { cout<<NumA<<'\t'<<"is Destructor."<<endl; } }; int main() { MyTestClass Myclass1(5), Myclass2.Print(); return 0; } 程序的运行结果为: Myclass2(Myclass1);
,第二行是
A.show( ); } 15 10 三、程序填空题
B.show( );
1、完成如下的类,在横线中填写合适的内容。 #include <iostream> #include <cstring> using namespace std; enum Esex{mid , man , woman};//枚举请自学 2.7 class Person { int Num; //编号 char Name[12]; //姓名 Esex Sex; //性别 float Weight; //体重 public: Person(int , char * , Esex , float); Person(); ~Person() {} void PrintInfo(); int Workdays(); }; Person::Person( { Num = id; int id ,char *name , Esex s , float w)
类和对象练习题

类和对象一、选择题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)。
C++_II_练习题(2)

C++ II 练习题(2)一.单项选择题(每题2分,共20分)1.在C++中,有关类和对象正确说法是( A )。
A.对象是类的一个实例 B.对象是类的存储空间C.一个类只能有一个对象 D.类是程序包,对象是存储空间2.在类定义中,称为接口的成员是( C )。
A. 所有类成员B. private或protected的类成员C. public的类成员D. public或private的类成员3. 一个类的友员函数能够通过( D )访问该类的所有成员。
A.静态数据 B.析构造函数 C.this指针 D.类对象参数4. 下面描述错误的是( B )。
A.自定义构造函数应该是公有成员函数 B.构造函数可以是虚函数C.构造函数在建立对象时自动调用执行 D.构造函数可以重载5. 在类的继承关系中,基类的(B)成员在派生类中可见。
A. 所有B. public和protectedC. 只有publicD. 只有protected6.设B类是A类的派生类,有说明语句A a, *ap;B b, *bp;则以下正确语句是(C)。
A. a=b;B. b=a;C. ap=&b;D. bp=&a;7.C++中,以下( D )语法形式不属于运行时的多态。
A. 根据if语句的求值决定程序流程B. 根据基类指针指向对象调用成员函数C. 根据switch语句的求值决定程序流程D. 根据参数个数、类型调用重载函数8. 假设对A类定义一个重载“+”号运算符的成员函数,以便实现两个A类对象的加法,并返回相加结果,则该成员函数的函数原型为( B )。
A.A operator +( const A &A1, const A &A2 ); B.A A:: operator +( const A &A2 );C.A::operator +( A &A2 ); D.A A::operator +( );9. 一个类模板定义了静态数据成员,则( A )。
C++程序设计练习题

C++程序设计练习题C++程序设计实验(下)练习题⼀、类与对象1.定义⼀个名为Rectangle的矩形类:(1)数据成员为矩形的长Len和宽Wid;(2)定义有参构造函数;(3)两个成员函数Area()和Length(),分别计算并输出矩形的⾯积和周长。
(4)定义主函数,创建⼀个Rectangle类对象:长为5,宽为2。
通过调⽤成员函数输出该矩形的⾯积和周长。
2.⽇期类。
定义⼀个⽇期类Cdate属性:⼀个包括年(year)、⽉(month)和⽇(day)三个整型私有数据成员。
⽅法:定义成员函数Setdate()设置⽇期、成员函数Isleapyear()判断是否为闰年、成员函数Print()输出⽇期。
定义主函数,对上述成员函数进⾏测试。
void main(){Cdate d1; //定义对象d1.Setdate(1999,12,30); //通过对象访问成员if (d1. Isleapyear())cout<<“闰年”;elsecout<<“⾮闰年!”;d1.Print();}3.员⼯问题1.定义⼀个⽇期类Date(1)私有数据成员包括:年(int year)、⽉(int month)、⽇(int day);(2)定义构造函数:Date(int _year, int _month, int _day),对数据成员进⾏初始化;(3)定义成员函数void print() const,打印⽇期信息(打印格式:年/⽉/⽇)。
2.定义⼀个员⼯类Employee(1)私有数据成员包括:姓名(char *name)、出⽣⽇期(Date birth)、⽉⼯资(double salary);(2)定义构造函数:Employee(char *_name, int year, int month, int day, double _salary),对数据成员进⾏初始化;(3)定义析构函数:~Employee(),释放堆空间;(4)定义成员函数double computSalary(double bonus) const,计算员⼯年薪(计算公式:12×⽉⼯资+年终奖),其中参数bonus为年终奖;(5)定义成员函数void print() const,打印员⼯信息,打印格式如下图所⽰。
java类和对象练习题

1.在如下所示的JAVA代码中,this关键字是指(B)。
public class Person{private String name;public void setName(String name){=name;}}(选择一项)(选择一项)A) Person类B) Person类自身对象的引用C) setName()方法的参数nameD) setName()方法2.以下对于JAVA中构造方法说法正确的是(C).(选择一项)A) 构造方法的名字可以与类名不一致B) 构造方法不能被重载C) 一个类必须包含至少一个构造方法D) 构造方法可以有返回值类型3.以下关于JAVA中的构造方法表述错误的是(B)。
(选择一项)A) 构造方法的名字和类名相同B) 构造方法不能被重载C) 构造方法的作用主要是在创建对象时执行一些初始化操作D) 构造方法没有返回值类型4.以下关于java中的方法重载说法错误的是(D)。
(选择一项)A) 重载的方法其方法名必须相同B) 重载的方法其参数个数或参数类型不同C) 构造方法可以被重载D) 成员方法不可以被重载5.在如下所示的Sample类中,共有( C)个构造方法public class Sample{private int x;private Sample(){x=1;}public void Sample(double f){this.x=(int)f;}public Sample(String s){}(选择一项)A) 4B) 3C) 2D) 16.构造方法重载的要素不包括(B)(选择一项)A) 方法名与类名相同B) 返回值类型不同C) 参数列表不同D) 在同一个类中7.给定如下JAVA代码,编译运行,结果将是(B)public class Sample{public double result(double d1,double d2){return d1<d2 ? d1 : d2;}public double result(int d1,double d2){return d1<d2 ? d1 : d2;}public double result(int d1,int d2){return d1-d2;}private int result(int i){return i;}public static void main(String [] args){Sample s=new Sample();System.out.print(s.result(2,3.0)+",");System.out.print(s.result(4.0,4.5)+",");System.out.print(s.result(10,9));}}(选择一项)A) 3.0 , 4.0, 1B) 2.0, 4.0, 1C) 3.0, 4.5, 1D) -1, 4.0, 18.给定如下Java代码,下列()方法可以加入到Sample类中,并且能够编译正确。
c++第6章-类和对象1-习题

c++第6章-类和对象1
-习题课
胡凤珠
6.1 判断题 × 1.使用class定义的类,其默认的访问权限是公有的,使用struct定义 的类,其默认的访问权限是私有的。 × 2.类中的成员函数都是公有的,数据成员都是私有的。 × 3.定义在类体内的成员函数是内联函数,定义在类体外的成员函数不 能是内联函数。 √ 4.类定义后,它的成员个数及名称就不会再被改变了。 × 5.定义或说明对象时,系统会自动调用构造函数为创建的对象初始化。 如果类中没有定义任何构造函数时,就无法给定义的对象初始化。 √ 6.定义一个对象时,系统只为该对象的数据成员开辟内存空间,而成 员函数是同类对象共享的。 √ 7.对象成员的表示方法与结构变量成员的表示方法相同。 √ 8.创建对象时系统自动调用相应的构造函数为对象初始化,没有相应 的构造函数时,系统会自动生成。 √ 9.构造函数是一个其名与类名相同的特殊的成员函数。 × 10.析构函数是一个函数体为空的成员函数。
#include <iostream.h> class Rectangle { public: Rectangle(int a,int b)//2个参数的构造函数Rectangle { width=a; length=b; }//负责对对象的宽和长数据成员初始化 int Area()//求矩形的面积 { return width*length; } int Periment()//求矩形的周长 { return 2*(width+length); } void Changesize(int a,int b)//改变矩形的宽和长 { width=a; length=b; } void Print();//负责打印求的的面积和周长 private: int width,length; }; void Rectangle::Print() { cout<<"AREA="<<Area()<<endl; cout<<"PERIMENT="<<Periment()<<endl; } void main() { Rectangle r(5,8);//定义对象r 初始化 r.Print(); r.Changesize(3,9);//调用对象r的成员函数Changesize改变宽和长 r.Print(); }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类和对象一.单项选择题1.在声明类时,关键字private、public和protected出现____B__。
A).至少一次B).至多一次C).public至少一次D).任意次数2.面向对象程序设计将数据和 A 封装在一起,作为一个相互依存,不可分割的整体来处理。
A) 对数据的操作 B) 信息 C) 数组 D)数据抽象3.下列说法中错误的是___C__。
A).构造函数没有类型B).创建对象时构造函数自动被调用C).在一个类中,只能定义一个构造函数D).构造函数的函数名与类同名4..以下叙述中不正确的是A____。
A).类中的数据成员可以是私有或公有的,而类中的成员函数必须是公有的B).拷贝构造函数的作用是使用一个已经存在的对象去初始化一个新的同类的对象C).类中的构造函数可以重载,而析构函数不能重载D).构造函数和析构函数都应是类的公有成员函数5.下列___C___不是类的成员函数。
A).构造函数B).析构函数C).友元函数D).拷贝构造函数6.通常拷贝初始化构造函数的参数是__ C ___。
A)某个对象名 B)某个对象的成员名C)某个对象的引用名 D)某个对象的指针名7.类Mclass的拷贝初始化构造函数是___D____。
A)Mclass( )B)Mclass(Mclass)C)Mclass(Mclass *)D) Mclass(Mclass&)8.下列对析构函数的描述中,正确的是 A___。
A)一个类中只能定义一个析构函数B)析构函数名与类名不同;C)析构函数的定义只能在类体内D)析构函数可以有一个或多个参数9.以下对析构函数描述正确的是___C___。
A).析构函数返回类型应是void B).函数体内不能有循环语句C)无形参,也不能重载D).函数体内必须有delete语句10.关于成员函数,以下叙述中不正确的是___A____。
A).成员函数一定是内联函数B).成员函数可以重载C).成员函数的参数可以设置默认值D).成员函数可以是另一个类的友元函数11.在面向对象的程序设计中,作用域符(::)的功能是___D__。
A).标识作用域的级别B).指出作用域的大小C) 定义作用域的大小D).标识某个成员函数是属于哪个类的12.静态成员函数没有_C_____。
A).返回类型B).返回值C).this指针D).局部变量13..关于类的静态数据成员和静态成员函数,以下不正确的叙述是A___。
A).类外可以直接引用类的静态数据成员和静态成员函数B).类的静态数据成员不能在类的构造函数中初始化C).类的其他函数可以调用类的静态成员函数D).类的静态数据成员被类的所有对象共享14.以下关于类和对象叙述正确的是C___。
A).一个类只能有一个对象B).一个对象可以属于几个不同的类C)对象是类的一个具体实例D)一个类中可以有本类的对象18.下面关于友员函数的说法中,正确的是_____B___ 。
A)友员函数是本类的一个成员函数B)友员函数可以通过对象访问本类的所有成员C)友员函数有this指针D)友员函数可以直接访问本类的所有成员20.假定AB为一个类,则执行“AB a(4),b[5],*p[2];”语句时,自动调用该类构造函数的次数为 A 。
A)6 B)7 C)9 D)11二.阅读程序1.写出以下程序运行结果。
#include <iostream.h>class cube{ public:cube(int ht=2,int wd=5,int dp=3){ height=ht; width=wd; depth=dp;cout<<″depth=″<<depth<<″construncted called″<<endl;}~cube() { cout<<″depth=″<<depth<<″Destructed called″<<endl;}int volume() {return height *width*depth;}private: int height,width,depth;};void main(){ cube cone(10,20,15), ctwo;cout<<cone.volume()<<endl;cout<<ctwo.volume()<<endl;}运行结果:depth=15 construncted called450depth=3construncted called30depth=3construncted calleddepth=15 construncted called2.写出以下程序运行结果。
#include <iostream.h>class A{ int a,b;public:A(){ }A(int i,int j):a(i),b(j){ cout<<"constructor\n"; }~A() { cout<<a<<"distructor\n"; }};void main(){ A ob2(2,5);A ob1(ob2);}运行结果:ConstructorConstructor2 distructor2 distructor3.当输入3、4和输入10、20时,写出以下程序输出结果。
#include <iostream.h>class TC{ private: double lead1, lead2,total;int p1,p2;public: TC( ){p1=15;p2=20;}TC(int x,int y){p1=x; p2=y; }void datap(){ cout<<″输入2个整数:″;cin>>lead1>>lead2;total=p1*lead1+p2*lead2;}void display() { cout<<″total=″<<total<<endl;} };void main(){ TC A,B(6,8);A.datap();A.display();}运行结果:,输入2个整数:3,4 total=125输入2个整数:10,20 total=2204.写出以下程序运行结果。
#include<iostream.h>class value{private: int a;public: value(){a=1;}value(int i){a=i;}void list(){cout<<a<<” “;}};value data1[4];value data2[4]={10,20,30};void main(){int i;for(i=0;i<4;i++) data1[i].list();cout<<endl;for(i=0;i<4;i++) data2[i].list();cout<<endl;}运行结果:1 1 1 110 20 30 15.写出以下程序运行结果。
#include <iostream.h>class A{ public: A(int i,int j) { a=i; b=j; cout<<″constructor.\n″;} ~A( ) { cout<<″Destructor″<<a<<b<<endl;} private: int a,b;};void main(){ A *pa,*pb;pa=new A(4,6);pb=new A(10,15);delete pa;delete pb;}运行结果:constructor.constructor.Destructor1015Destructor466.写出以下程序运行结果。
#include <iostream.h>class count{ public:count () { count1++;}static int data () { return count1; }~count( ){ count1--; }private: static int count1;};int count ::count1=60;void main(){ count a,b,c,d,e;cout<<count:: data()<<endl;cout<<a.data()<<endl;cout<<e.data()<<endl;}运行结果:6565657.写出以下程序运行结果。
#include <iostream.h>class myclass{ private: int x,y;static long sum;public: myclass(int a,int b) { x=a;y=b;}void getxy(){ sum*=x*y;cout<<″sum=″<<sum<<endl;}};long myclass::sum=1;void main(){ myclass ob1(1,2);ob1·getxy();myclass ob2(3,4);ob2·getxy();myclass ob3(5,6);ob3·getxy();}运行结果:sum=2sum=24sum=7208.写出以下程序运行结果。
#include <iostream.h>class sample{ int x,y;public: sample(){x=0;y=0;}sample(int i,int j){x=i;y=j;}void copy(sample &A) { x=A.x; y=A.y;}void add( ){x+=y++; y+=x++;}void display(){ cout<<″x=″<<x<<endl; cout<<″y=″<<y<<endl; } };void main(){ sample ob1,ob2(1,2);ob2.add( );ob1.copy(ob2);ob1.add( );ob1.display();}运行结果:X=11Y=179.写出以下程序运行结果。