分数 2
作者 董俊
单位 燕山大学
编译预处理指令#include的处理方式是在编译代码前使用string.h文件的内容替换这条指令。
T
F
1-2
分数 2
作者 罗艳
单位 成都锦城学院
下面两个全局函数构成函数重载。
int Add(int a, int b) {return a+b;}
int Add(int x, int y) {return x-y;}。
T
F
1-3
分数 2
作者 郑远
单位 中国民用航空飞行学院
定义了构造函数之后,类不再提供默认的构造函数。
T
F
1-4
分数 2
作者 Gloria
单位 沈阳师范大学
动态联编调用函数操作是指向对象的指针或对象引用。
T
F
1-5
分数 2
作者 Gloria
单位 沈阳师范大学
派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型。
T
F
1-6
分数 2
作者 杨雪华
单位 沈阳师范大学
point *p[3];point是类名,p为定义指向对象数组的指针 。
T
F
1-7
分数 2
作者 杨雪华
单位 沈阳师范大学
在定义对象数组时,可以直接进行初始化,也可以通过赋值语句实现赋值。
T
F
1-8
分数 2
作者 黄淑伟
单位 沈阳师范大学
通过基类引用调用基类和派生类中的同名虚函数时,若该引用引用的是一个派生类的对象,那么被调用的是派生类的虚函数。
T
F
1-9
分数 2
作者 黄淑伟
单位 沈阳师范大学
如果公有派生,则可以用基类对象的地址赋值给派生类的指针。
T
F
1-10
分数 2
作者 黄淑伟
单位 沈阳师范大学
静态成员的特点是不管这个类创建了多少个对象,其静态成员在内存中只保留一份副本,这个副本为该类的所有对象共享,或者说静态成员为类所有。
T
F
1-11
分数 2
作者 黄淑伟
单位 沈阳师范大学
如果A是B的友元类,那么B的成员函数可以访问A的私有成员。
T
F
1-12
分数 2
作者 董俊
单位 燕山大学
基类中的私有成员不论通过何种派生方式,到了派生类中均变成不可直接访问成员。
T
F
1-13
分数 2
作者 董俊
单位 燕山大学
int i; int &ri=i;对于这条语句,ri和i这两个变量代表的是同一个存储空间。
T
F
1-14
分数 2
作者 黄万丽
单位 曲阜师范大学
静态成员函数不能是虚函数,所以不能实现动态多态,即运行时多态。
T
F
1-15
分数 2
作者 黄淑伟
单位 沈阳师范大学
已知类 A 是类 B 的友元,类 B 是类 C 的友元,则类 A 一定是类 C 的友元 。
T
F
2-1命名空间应用于:
A.
在类外定义类的成员函数
B.
避免各个不同函数、变量等的名称冲突
C.
提高代码的执行速度
D.
以上答案都正确
2-2
分数 2
作者 李祥
单位 湖北经济学院
关于函数的重载
下面 4 组重载函数的声明中,▁▁▁▁▁ 是正确的。
A.
void F();
char F();
int F();
double F();
B.
void F(int a);
void F(int b);
void F(int c);
void F(int d);
C.
void F();
void F(int x);
void F(double x);
void F(int x, int y);
D.
void F();
void F(int x);
void F(int x, int y);
void F(int x = 0, int y = 0);
2-3
分数 2
作者 李祥
单位 湖北经济学院
关于赋值兼容规则
赋值兼容规则是指在需要基类对象的任何地方, 都可以使用 ▁▁▁▁▁ 派生类的对象来替代。
A.
私有
B.
保护
C.
公有
D.
任何
2-4
分数 2
作者 董卫萍
单位 绍兴文理学院元培学院
下面对静态数据成员的描述中,正确的是( )
A.
静态数据成员是类的所有对象共享的数据
B.
类的每个对象都有自己的静态数据成员
C.
类的不同对象有不同的静态数据成员值
D.
静态数据成员不能通过类的对象调用
2-5
分数 2
作者 董卫萍
单位 绍兴文理学院元培学院
有如下类定义:
class Point
{
int x,y;
public:
Point():x(0),y(0){}
Point(int a,int b=0):x(a),y(b){}
};
若执行语句 Point a(2),b[3],*c[4];
则Point类的构造函数被调用的次数是( )
A.
2次
B.
3次
C.
4次
D.
5次
2-6
分数 2
作者 李祥
单位 湖北经济学院
关于封装性
在 C++ 中,实现封装性需借助于 ▁▁▁▁▁。
A.
枚举
B.
类
C.
数组
D.
函数
2-7
分数 2
作者 文冬
单位 燕山大学
引入友元的主要目的是为了
A.
增强数据安全性
B.
提高程序的可靠性
C.
提高程序的效率和灵活性
D.
保证类的封装性
2-8
分数 2
作者 黄淑伟
单位 沈阳师范大学
以下关于友元的说法哪个是不正确的?
A.
一个类的友元函数可以访问类对象的私有成员
B.
友元类关系是相互的,即若类A是类B 的友元,类B也是类A的友元
C.
在一个类中可以将另一个类的成员函数声明为友元
D.
类之间的友元关系不能传递
2-9
分数 2
作者 黄淑伟
单位 沈阳师范大学
下列哪一个说法是不正确的?
A.
某个变量的引用等价于这个变量,相当于该变量的一个别名
B.
定义引用时一定要将其初始化成引用某个变量
C.
初始化后,它就一直引用该变量不会再别引用别的变量了
D.
引用可以引用变量,也可以引用常量和表达式
2-10
分数 2
作者 范鹏程
单位 内蒙古师范大学
若类A的构造函数定义为
A(int aa=1, int bb=0) { a = aa; b = bb; }
则执行:A x(4);后,x.a和x.b的值分别是( )
A.
1,0
B.
1,4
C.
4,0
D.
4,1
2-11
分数 2
作者 李廷元
单位 中国民用航空飞行学院
下列关于this指针的叙述中,正确的是
A.
任何与类相关的函数都有this指针
B.
类的成员函数都有this指针
C.
类的友元函数都有this指针
D.
类的非静态成员函数才有this指针
2-12
分数 2
作者 李志明
单位 燕山大学
下面,有关派生类构造函数的论述,错误的是( )
A.
派生类构造函数,需要为基类构造函数传递参数;
B.
派生类构造函数,需要为内嵌子对象的初始化传递参数;
C.
派生类构造函数,仅对派生类的新增数据成员初始化传递参数;
D.
派生类构造函数,可以采用初始化列表的方式为常成员函数传递初始化参数。
2-13
分数 2
作者 李廷元
单位 中国民用航空飞行学院
在公有继承的情况下,在派生类中能够访问的基类成员包括
A.
公有成员
B.
保护成员
C.
公有成员、保护成员和私有成员
D.
公有成员和保护成员
2-14
分数 2
作者 何振峰
单位 福州大学
关于纯虚函数和抽象类的描述中,( )是错误的。
A.
纯虚函数是一种特殊的虚函数,它没有具体的实现
B.
抽象类是指具有纯虚函数的类
C.
一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类
D.
抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
2-15
分数 2
作者 王秀
单位 福州大学
以下说法中正确的是()
A.
在虚函数中不能使用this指针
B.
在构造函数中调用虚函数不是动态联编
C.
抽象类的成员函数都是纯虚函数
D.
构造函数和析构函数都不能是虚函数
7-1 计算全班学生C++课程的总成绩和平均成绩
分数 10
全屏浏览
作者 杨雪华
单位 沈阳师范大学
定义一个类Student,记录学生C++课程的成绩。要求使用静态数据成员或静态成员函数计算全班学生C++课程的总成绩和平均成绩。
输入格式:
输入5个不超过100的正整数,作为C++成绩。
输出格式:
在第一行中输出成绩的和,第二行输出平均成绩。
输入样例:
90 80 70 60 50
输出样例:
350
70
#include<iostream>
using namespace std;
class Student
{
int grade;
static int sum;
public:
Student(int a)
{
sum=sum+a;
}
static void dis()
{
cout<<sum<<endl<<sum/5;
}
};
int Student::sum=0;
int main()
{
int a;
for(int i=0;i<5;i++)
{
cin>>a;
Student s(a);
}
Student s(0);
s.dis();
return 0;
}
7-2 动物爱吃什么
分数 10
全屏浏览
作者 杨雪华
单位 沈阳师范大学
1.设计一个基类动物类(animal),包含private数据成员:动物编号int num;和动物名称string name;public成员函数:getnum( )用于获取其编号, getname( )用于获取其名称和一个纯虚函数eat( ),以及构造函数。
2.由animal类派生出狗类Dog和猫类Cat,每个类中均有自己的构造函数,根据输出结果设计这两个类并在主函数中完成设计类的输出测试
3.要求在主函数中必须使用基类指针调用虚函数eat( ).
输入格式:
输入两行,每一行分别是动物编号num和动物名称name,中间空格分隔。
输出格式:
输出两行,每一行显示动物编号num、动物名称name和爱吃的食物。
输入样例:
在这里给出一组输入。例如:
1 金毛
2 波斯
输出样例:
在这里给出相应的输出。例如:
1号金毛啃骨头
2号波斯吃小鱼
#include<iostream>
using namespace std;
class animal
{
private:
string name;
int num;
public:
animal(string name,int num)
{
this->name = name;
this->num = num;
}
int getnum(){
return this->num;
}
string getname() { return this->name; }
virtual void eat() = 0;
};
class Cat:public animal
{
public:
Cat(string name ,int num):animal(name,num){}
void eat()//1号金毛啃骨头
{
cout << this->getnum() << "号" << this->getname() << "吃小鱼" << endl;
}
};
class Dog:public animal
{
public:
Dog(string name,int num):animal(name,num){}
void eat()
{
cout << this->getnum() << "号" << this->getname() << "啃骨头" << endl;
}
};
int main()
{
string name; int num;
cin >> num>> name;
Dog D(name, num);
animal& a = D;
a.eat();
cin >> num >> name;
Cat C(name, num);
animal* ap = &C;
ap->eat();
system("pause");
}
7-3 抽象基类Shape派生3个类
分数 10
全屏浏览
作者 沙金
单位 石家庄铁道大学
声明抽象基类Shape,由它派生出三个类,圆形Circle,矩形Rectangle,三角形Triangle,用一个函数输出三个面积。
输入格式:
在一行中依次输入5个数,圆的半径,长方形的高和宽,三角形的高和底,中间用空格分隔
输出格式:
圆的面积,长方形的面积,三角形的面积,小数点后保留2位有效数字,每个面积占一行。
输入样例:
在这里给出一组输入。例如:
3 3 4 3 4
输出样例:
在这里给出相应的输出。例如:
28.27
12.00
6.00
#include <iostream>
#include <iomanip>
using namespace std;
class Shape
{
public:
double Area;
public:
void Show()
{
cout << fixed << setprecision(2) << Area << endl;
}
};
class Circle : public Shape
{
private:
double r;
public:
Circle(double tr)
{
r = tr;
Area = 3.1415926 * r * r;
}
};
class Rectangle : public Shape
{
private:
double w, h;
public:
Rectangle(double tw, double th)
{
w = tw;
h = th;
Area = w * h;
}
};
class Triangle : public Shape
{
private:
double d, h;
public:
Triangle(double td, double th)
{
d = td;
h = th;
Area = d * h / 2;
}
};
int main()
{
double a, b, c, d, e;
cin >> a >> b >> c >> d >> e;
Circle s1(a);
s1.Show();
Rectangle s2(b, c);
s2.Show();
Triangle s3(d, e);
s3.Show();
return 0;
}
7-4 单继承中的构造函数与析构函数
分数 10
全屏浏览
作者 杨雪华
单位 沈阳师范大学
编写代码实现一个表示点的父类Dot和一个表示圆的子类Cir,求圆的面积。
Dot类有两个private数据成员 float x,y;
Cir类新增一个private的数据成员半径float r 和一个public的求面积的函数getArea( );
主函数已经给出,请编写Dot和Cir类。
#include <iostream>
#include<iomanip>
using namespace std;
const double PI=3.14;
//请编写你的代码
int main(){
float x,y,r;
cin>>x>>y>>r;
Cir c(x,y,r);
cout<<fixed<<setprecision(2)<<c.getArea()<<endl;
return 0;
}
输入格式:
输入圆心和半径,x y r中间用空格分隔。
输出格式:
输出圆的面积,小数点后保留2位有效数字,注意:const double PI=3.14,面积=PI*r*r
。
输入样例:
在这里给出一组输入。例如圆的中心点为原点(0,0),半径为3:
0 0 4
输出样例:
在这里给出相应的输出。例如:
Dot constructor called
Cir constructor called
50.24
Cir destructor called
Dot destructor called
#include <iostream>
#include<iomanip>
using namespace std;
const double PI=3.14;
class Dot{
private:
float x,y;
public:
Dot(int a,int b):x(a),y(b){
printf("Dot constructor called\n") ;
}
Dot(){
printf("Dot constructor called\n") ;
}
virtual ~Dot(){
printf("Dot destructor called\n");
}
};
class Cir:public Dot{
private :
float r;
public :
Cir(){
printf("Cir constructor called\n") ;
}
Cir(int a,int b,int c):Dot(a,b),r(c){
printf("Cir constructor called\n") ;
}
~Cir(){
printf("Cir destructor called\n");
}
float getArea(){
return r*r*PI;
}
};
int main(){
float x,y,r;
cin>>x>>y>>r;
Cir c(x,y,r);
cout<<fixed<<setprecision(2)<<c.getArea()<<endl;
return 0;
}