C++习题(静态成员)
C++复习题(3)

private:
int R1,R2;
};
void R::print()
{
cout<<R1<<":"<<R2<<endl;
}
void R::print() const
{
cout<<R1<<";"<<R2<<endl;
}
void main(){
R a(5,4);
a.print();
double A::*pm;//定义指向A类double类型指针pm
pm = &A::x;//将pm指向A类中的x成员;
pa->*pm = 8.8;//通过pa和pm给其成员x赋值
double *spm = &(A::z);//定义指向A类double类型静态成员指针spm
*spm = 9.9;//通过spm给其成员z赋值}
{
X=a;
}
void Print()
{cout<<"X= "<<X<<endl;}
private:
int X;
const float Y;
};
void main(){
const MyClass my(10);
my.SetX(20);//常对象不能访问普通成员函数
my.Print();//常对象不能访问普通成员函数
{cout<<"X= "<<X<<endl;}
private:
int X;
C++程序练习题及答案

1、在关键字private 后面定义的成员为类的()成员。
A、私有2、关于函数模板叙述正确的是()。
C、通过使用不同的类型参数,函数模板可以生成不同类型的函数3、C 语言的编译系统对宏命令的处理是( ) 。
D、在对源程序中其它成分正式编译之前进行4、软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的()。
A、可维护性5、采用重载函数的目的是()。
D、使用方便,提高可读性参考答案D6、派生类的对象对它的基类成员中()是可以访问的。
A、公有继承的公有成员;7、在公有继承的情况下,基类成员在派生类中的访问权限()。
B、保持不变8、关于面向对象系统分析,下列说法中不正确的是()。
B、面向对象分析阶段对问题域的描述比实现阶段更详细9、假定一个类对象数组为A[n] ,当离开它定义的作用域时,系统自动调用该类析构函数的次数为( ) 。
C、n10、关于函数的返回值说法正确的是()。
A、由return 语句返回时,只带回一值,其类型在函数定义时确定。
11、假定AA为一个类,a 为该类公有的数据成员,px 为指向该类对象的一个指针,则访问px 所指对象中数据成员a 的格式为()。
C、px->a12、有以下程序#include <iostream.h>void main( ){ char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"};cout<<p[3]<<endl;}执行后输出结果是()B、abbd13、友员的作用之一是()A、提高程序的运行效率14、假定AA为一个类,int a() 为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为()。
A、int AA::a()15、下列关于函数的说法中,不正确的是()。
C习题及答案

第一、二章习题1.关于C++语言,下列说法不正确的是A.C++具有简洁、高效和接近汇编语言的特点B.C++本身几乎没有支持代码重用的语言结构C.C++语言不是一种纯面向对象的语言D.C++支持面向对象的程序设计,这是它对C的重要改进B2.使用关键字________说明的函数为内联函数。
inline3.C++支持两钟多态性,即________和________。
编译时的多态性运行时的多态性4.在下面横线处填上适当字句,使程序输出结果为5,10 # include <iostream.h>void main(){________int n=5;int& ________=n;ref=ref+5;cout<<n<<”,”<<ref;}const ref5.const int *p;表明A.p本身是常量B.p指向一个固定的int类型的地址,而p的内容可以修改C.p只能指向一个整型常量D.p只能指向一个被const修饰的int类型的常量C6.数据封装给数据提供了与外界联系的________,只有通过这些________,使用规范的方式,才能访问数据。
标准接口接口7.在下面横线处填上适当字句,使程序完整。
int arr[]={1,2,3,4,5};________index(int i){return a[i];}void main(){index(3)= ________;//将a[3]改为6}int & 68.#include <iostream.h>void main(){int *p,i,j;cin>>j;//输入4p=new int[j];if(!p){cout<<”Allocation error\n”;} for(i=0;i<j;i++)p[i]=i;for(i=0;i<j;i++)cout<<p[i]<<““; cout<<endl;delete []p;}输出为:4(这是输入的数据)0 1 2 39.#include <iostream.h>void comp(const int&,int&);int main(){int n=6,t=10;cout<<”n=”<<n<<”,t=”<<t<<endl;comp(n,t);cout<<”n=”<<n<<”,t=”<<t<<endl;return 0;}void comp(const&in1,int &in2){in2=in1*10+in2;}输出为:n=6, t=10n=6,t=7010.下列属于C++头文件约定使用的扩展名的是i..cppii..hppiii..civ..c++B11.C++提供了一种新的注释方式:从“//”开始,直到________,都被计算机当做注释。
C 课后习题答案第七章

C++作业答案第7章继承7.1 选择题1.在c++中,类与类之间的继承关系具有( c )。
(a) 自反性 (b) 对称性 (c) 传递性 (d) 反对称性2.下列关于类的继承描述中,( a,b )是错误的。
(a) 派生类可以访问基类的所有数据成员,调用基类的所有成员函数(b) 派生类也是基类,所以基类具有派生类的全部属性和方法(c) 继承描述类的层次关系,派生类可以具有与基类相同的属性和方法(d) 一个基类可以有多个派生类,一个派生类可以有多个基类3.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( a )。
(a) public 成员 (b)private成员(c) protected成员 (d)友员4.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( b )。
(a) public 成员 (b)private成员(c) protected成员 (d)友员5.当一个派生类保护继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( c )。
(a) public 成员 (b)private成员(c) protected成员 (d)友员6.不论派生类以何种方式继承基类,都不能使用基类的( b )。
(a) public 成员 (b)private成员(c) protected成员 (d)public 成员和protected成员7.下面描述中,错误的是( b, c )。
(a) 在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问(b) 在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问(c) 在基类定义的public和protected成员在保护继承的派生类中不可见(d) 在派生类中不可见的成员要变成可访问的需进行访问声明8.在c++中,不能被派生类继承的函数是( b,c )。
(a) 成员函数 (b)构造函数(c) 析构函数 (d)静态成员函数9.在创建派生类对象时,构造函数的执行顺序是( d )。
c++语言程序设计教程(第二版)习题解答(填空选择部分)_沈显军_杨进才_张勇

1.1习题1解答1.(1)机器语言是计算机直接理解执行的语言,由一系列(二进制)指令组成,其助符构成了汇编语言;接近人的自然语言习惯的程序设计语言为高级语言。
(2)结构化程序设计方法主要内容有:自顶向下,逐步求精;面向对象方法将现实世界中的客观事物描述成具有属性和行为的对象,抽象出共同属性和行为,形成类。
(3)C++程序开发通常要经过5个阶段,包括:编辑,编译,连接,运行,调试。
首先是编辑阶段,任务是编辑源程序,C++源程序文件通常带有.cpp扩展名。
接着,使用编译器对源程序进行编译,将源程序翻译为机器语言代码(目标代码),过程分为词法分析、语法分析、代码生成3个步骤。
在此之前,预编译器会自动执行源程序中的预处理指令,完成将其他源程序文件包括到要编译的文件中,以及执行各种文字替换等。
连接器的功能就是将目标代码同缺失函数的代码连接起来,将这个“漏洞”补上,生成可执行文件。
程序运行时,可执行文件由操作系统装入内存,然后CPU从内存中取出程序执行。
若程序运行进程中出现了错误,还在需要对程序进行调试。
(4)对象与对象之间通过消息进行相互通信。
(5)类是具有相同属性和行为的一组对象的抽象;任何一个对象都是某个类的一个实例。
(6)多态性是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
(7)面向对象的软件开发过程主要包括面向对象的方法分析、面向对象的设计、面向对象的编程、面向对象的测试和面向对象的维护。
(8)泛型程序设计是指在程序设计时,将数据类型参数化,编写具有通用性和可重用的程序。
(9)# include <iostream>是一条预处理指令(语句),在编译(或预处理)时由编译器(或预编译器)执行,其功能是将iostream文件包含(复制)到指令处。
(10)C++中使用cin作为标准输入流对象,通常代表键盘,与提取操作符>>连用;使用cout作为标准输出流对象,通常代表显示设备,与<<连用。
VC习题参考答案

VC习题参考答案1.7指针和引用55.已知intd=5,某pd=&d,b=3;求下列表达式的值。
A.某pd某bB.++某pd-bC.某pd++D.++(某pd)答:15,3,5,656.选择填充。
(1)选择正确的说明语句为()。
A.intN['b'];B.intN[4,9];C.intN[][];D.int某N[10];答:B(2)若有定义:inta=100,某p=&a;则某p的值是()。
A.变量p的地址B.变量a的地址值C.变量a的值D.无意义答:C.(3)下述程序的输出结果是()。
#includevoidmain(){inta[5]={2,4,6,8,10};int某p=a,某某q=&p;cout<A.4,4B.2,2C.4,2D.4,5答:B(4)下述程序片段的输出是()。
inta[3][4]={{1,2,3,4},{5,6,7,8}};int某,某p=a[0];某=(某p)某(某p+2)某(某p+4);cout<A.15B.14C.16D.13答:A(5)若有以下定义,则下列对数组引用正确的是()。
int(某q)[3]=newint[2][3];A.q[2][3]B.某qC.某(某q+2)D.某(某(q+2)+3)答:C(6)若要用如下程序片段使指针变量p指向一个存储动态分配的存储单元:float某p;p=(float某)newfloat;则空白处应填入:A.float某B.某floatC省略;D.(float)(7)下列表示引用的方法中,()是正确的。
已知:intm=10;A.int&某=m;B.int&y=10;C.int&z;D.float&t=&m;答:A57.分析下列程序的结果。
#includeint&fun(intn,int[]){int&m=[n];returnm;}voidmain(){int[]={15,4,3,2,1,0};fun(3,)=10;cout<答:1058.用指针作为函数的参数,设计一个实现两个参数交换的函数。
c++复习题

C++复习题本书课后的习题及以下一、选择题:(60题)01、下列关于C++函数的叙述中,正确的是( )。
A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值C)函数在被调用之前必须先声明 D)函数不能自己调用自己02、下列关于类和对象的叙述中,错误的是( )。
A)一个类只能有一个对象 B)对象是类的具体实例C)类是对某一类对象的抽象 D)类和对象的关系是一种数据类型与变量的关系03、在C++中,用于实现运行时多态性的是( )。
A)内联函数 B)重载函数 C)模板函数 D)虚函数04、下列关于运算符重载的叙述中,正确的是( )。
A)通过运算符重载,可以定义新的运算符 B)有的运算符只能作为成员函数重载C)若重载运算符+,则相应的运算符函数名是+ D)重载二元运算符时,必须声明两个形参05、对于语句 cout<<x<<endl;错误的是描述是( )。
A)“cout”是一个输出流对象B)“endl”的作用是输出回车换行C)“x”是一个变量D)“<<”称作提取运算符06、有如下类声明,则类MyDERIVED中保护的数据成员和成员函数的个数是( )。
class MyBASE{ private: int k;public: void set(int n){ k=n;}int get( )const{ return k;} };class MyDERIVED: protected MyBASE{ protected: int j;public: void set(int m, int n){ MyBASE::set(m); j=n;}int get( ) const { return MyBASE::get( )+j; } };A)4 B)3 C)2 D)107、已知在一个类体中包含如下函数原型: Volume operator-(Volume)const;,下列关于这个函数的叙述中,错误的是( )。
c++复习题及答案

1、填空题()多态分为:专用多态和通用多态。
2、选择题(10分)下面对构造函数的描述不正确的是(C )A 可以重载B 其名字与类名相同C 可以显式调用构造函数D 构造函数是成员函数E 构造函数不能是虚函数3、判断题(正确的请写T,错误的请写F)(20分)静态成员函数可以直接调用类中说明的非静态成员。
(F)windows应用程序采用基于消息的事件驱动运行机制。
(T)(一)填空题在类体内使用关键字(static )说明的成员称为静态成员。
2、重载的函数要求参数的(个数)和(类型)不同。
3、如果要表示某个变量的值不能修改,用修饰符(const )限制。
4、对函数int fun( int x,int y) 中的参数x指定默认值10 正确的声明方式是(int fun(int y,int x=10) )。
5、C++语言规定,成员函数如果被定义在类体内,则为默认为(内联成员函数)。
6、在类层次结构中,创建子类对象时,(派生类)构造函数最后被执行。
7、C++规定,运行多态性通过(基)类的指针或者(引用)调用(虚函数)来实现。
8、派生类的生成过程经历了三个步骤:(吸收基类成员)、(改造基类成员)和(添加新的成员)。
9、面向对象程序设计的4个基本特征是(抽象)、(继承)、(封装)、(多态)。
10、Windows应用程序采用基于(消息)的事件驱动运行机制。
11、通常将用来派生新类的类称为(基类),又称为父类,而将派生出来的新类称为(派生类),又称为子类。
12、含有(纯虚)函数的类称为抽象类。
13、引用与被引用的实体具有相同的(地址)。
14、类成员的访问权限有3种(共有类型)、(私有类型)、(保护类型)。
15、通过函数改变实参的数据,c++ 可以通过( 指针)或者(引用)实现。
16、c++通过(函数重载)实现静态多态性,其(形参个数或类型)必须不同。
18、c++类的用途有两种,一种是生成类的对象,另一种是通过(继承)派生出新类。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
n=2, sum=2 n=3, sum=5 n=5, sum=10
4. 分析以下程序执行的结果
#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); }
x=10, y=20
x=0, y=0 x=1, y=2 x=10, nclude<iostream.h> class Sample { public: int x; int y; void disp() { cout<<"x="<<x<<",y="<<y<<endl; } }; void main() { int Sample::*pc; Sample s,*p=&s; pc=&Sample::x; p->*pc=10; pc=&Sample::y; p->*pc=20; p->disp(); }
3. 分析以下程序执行的结果
#include<iostream.h> class Sample { int n; static int sum; public: Sample(int x) {n=x;} void add() {sum+=n;} void disp() { cout<<"n="<<n<<",sum="<<sum<<endl; } }; int Sample::sum=0; // 静态数据成员赋初值 void main() { Sample a(2),b(3),c(5); a.add(); a.disp(); b.add(); b.disp(); c.add(); c.disp(); }
constructing object: x=1
2. 分析以下程序执行的结果
#include<iostream.h> class Sample { public: Sample(); Sample(int); ~Sample(); void display(); protected: int x; }; Sample::Sample() { x=0; cout<<"constructing normally\n"; } Sample::Sample(int m) { x=m; cout<<"constructing with a number:"<<x<<endl; }
A=2, B=7 A=5, B=7
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(1,2),s3(10,20); Sample *pa[3]={&s1,&s2,&s3}; for(int i=0;i<3;i++) pa[i]->disp(); }
v=2, t=7
9. 分析以下程序执行的结果
#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(); }
C++习题(静态成员) 习题(静态成员) 习题
1. 分析以下程序执行的结果
#include<iostream.h> class Sample { int x; public: Sample(int a) { x=a; cout<<"constructing object:x="<<x<<endl; } }; void func(int n) { static Sample obj(n); } void main() { func(1); func(10); }
v=2, t=7
8. 分析以下程序执行的结果
#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; }
void Sample::display() { cout<<"display a number:"<<x<<endl; } Sample::~Sample() { cout<<"destructing\n"; } void main() { Sample obj1; Sample obj2(20); obj1.display(); obj2.display(); } constructing normally constructing with a number:20 display a number: 0 display a number: 20 destructing destructing
x=10, y=20
7. 分析以下程序执行的结果
#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; }