PTA-C++(静态成员与友元1*)

目录

  • 一、判断题
  • 二、单选题
  • 三、填空题
  • 四、函数题
    • 6-1 工资与提成
    • 6-1 工资与提成
    • 6-3 猫和老鼠有多重
  • 五、编程题
    • 7-1 友元函数的练习

一、判断题

1.静态数据成员不能在类中初始化,使用时需要在类体外声明。(T)

2.静态数据成员不能在类中初始化,使用时需要在类体外声明。(F)

3.友元函数不是类的成员函数,只是独立于该类的一般函数。(T)

4.一个类的友元函数可以访问该类的私有成员。(T)

5.一个类的友元函数可以访问该类的私有成员。(F)

二、单选题

2-1
下面关于友元的描述中,错误的是:(D)

A.友元函数可以访问该类的私有数据成员
B.一个类的友元类中的成员函数都是这个类的友元函数
C.友元可以提高程序的运行效率
D.类与类之间的友元关系可以继承

2-2
关于友元函数的描述中,错误的是?(B)

A.友元函数不是成员函数
B.友元函数必须在类体内定义
C.友元函数可以访问类的私有数据成员
D.友元函数破坏了类的封装

2-3
引入友元的主要目的是为了(C)

A.增强数据安全性
B.提高程序的可靠性
C.提高程序的效率和灵活性
D.保证类的封装性

2-4
下面程序的输出结果是(D)

#include
using namespace std;

class MyClass {
public:
MyClass() {
++count;
}
~MyClass() {
–count;
}
static int getCount() {
return count;
}
private:
static int count;
};
int MyClass::count = 0;
int main() {
MyClass obj;
cout << obj.getCount();
MyClass obj2;
cout << MyClass::getCount();
cout << obj2.getCount();
return 0;
}

A.121
B.232
C.221
D.122

2-5
下面对静态数据成员的描述中正确的是(B)。

A.类的不同对象有不同的静态数据成员值
B.静态数据成员是类的所有对象共享的数据
C.类的每个对象都有自己的静态数据成员
D.静态数据成员不能通过类的对象调用

2-6
在下面有关静态成员函数的描述中,正确的是(A)。

A.在建立对象前,就可以为静态数据成员赋值
B.静态成员函数在类外定义时要用static前缀
C.静态成员函数只能在类外定义
D.在静态成员函数中可以使用this指针

三、填空题

1.静态数据成员初始化必须在类外进行。

2.(4分)A variable that is part of a class, yet is not part of an object of that class, is called a static member. There is exactly one copy of a static member instead of one copy per object, as for ordinary non-static members.

四、函数题

6-1 工资与提成

分数 10
作者 范鹏程
单位 内蒙古师范大学
根据main函数的调用以及程序的输出完成类定义,实现指定的功能

测试main函数样例:
#include
#include
#include
using namespace std;

/请在这里写上相应的类定义/

int main(){
Salesman sman[]={
Salesman(“Li”,4,100,0.5),
Salesman(“Wang”,3,200,0.4),
Salesman(“Liu”,2,300,0.3)
};
Salesman::show();
cout<<“Average commission is:”< return 0;
}

输入样例:
在这里给出一组输入。例如:


输出样例:
在这里给出相应的输出。例如:

There are 3 salesmen,sales amount is:620
Average commission is:206.667

暂无

6-1 工资与提成

分数 10
作者 范鹏程
单位 内蒙古师范大学
根据main函数的调用以及程序的输出完成类定义,实现指定的功能

测试main函数样例:
#include
#include
#include
using namespace std;

/请在这里写上相应的类定义/

int main(){
Salesman sman[]={
Salesman(“Li”,4,100,0.5),
Salesman(“Wang”,3,200,0.4),
Salesman(“Liu”,2,300,0.3)
};
Salesman::show();
cout<<“Average commission is:”< return 0;
}

输入样例:
在这里给出一组输入。例如:


输出样例:
在这里给出相应的输出。例如:

There are 3 salesmen,sales amount is:620
Average commission is:206.667

暂无

6-3 猫和老鼠有多重

分数 10
作者 fpc
单位 内蒙古师范大学
定义猫和老鼠:Cat与Mouse两个类,二者都有weight属性,定义二者的一个友元函数totalweight(),计算二者的重量和。

裁判测试程序样例:
#include
using namespace std;

/* 请在这里填写答案 */

int main()
{
int w1,w2;
cin>>w1>>w2;
Cat tom(w1);
Mouse jerry(w2);
cout< }
输入样例:
100 200
输出样例:
300

class Cat{
    public:
        Cat(int x){weight=x;}
        friend int totalWeight(Cat &a,Mouse &b);
    private:
        int weight;
};

class Mouse{
    friend class Cat;
    public:
        Mouse(int y){weight=y;}
        friend int totalWeight(Cat &a,Mouse &b);
    private:
        int weight;
};

int totalWeight(Cat &a,Mouse &b)
{
    return a.weight+b.weight;
}

五、编程题

7-1 友元函数的练习

分数 10
作者 赵晨
单位 浙江大学
定义Boat与Car两个类,两者都有私有的整型weight属性,定义两者的一个友元函数getTotalWeight(),计算二者的重量和。

参考主函数:
int main()
{
int n,m;
cin>>n>>m;
Boat boat(n);
Car car(m);
cout<<“船和汽车共重”< }

输入格式:
请在这里写输入格式。例如:输入在一行中给出2个整数m和n。

输出格式:
请在这里描述输出格式。例如:对每一组输入,在一行中输出:船和汽车共重M+n吨值。

输入样例:
在这里给出一组输入。例如:

40 30
输出样例:
在这里给出相应的输出。例如:

船和汽车共重70吨

暂无

你可能感兴趣的:(C++基础,c++,算法,开发语言)