• 重庆大学c++2022级-期末模拟考试


    A.单选题

    2-1下列程序代码,正确的输出结果是( )

     
     
    1. int a=0xfe;
    2. char b=062;
    3. cout<","<

    A.

    0xfe,062

    B.

    fe,62

    C.

    254,2

    D.

    254,62

    2-2下列代码能正确执行的是( )

    A.

     
     
    1. char a='C';
    2. const char& p=a;

    B.

     
     
    1. char a='C';
    2. char* const p;
    3. p=&a;

    C.

     
     
    1. char a='C';
    2. const char& p;
    3. p=a;

    D.

     
     
    1. char a='C';
    2. char& p;
    3. p=a;

     2-3

    new和delete运算符正确的使用是( )

    A.

     
     
    int* p=new int[10]; delete p;

    B.

     
     
    int* p=new int(10); delete []p;

    C.

     
     
    vector<int>* v=new vector<int>[10]; delete []v;

    D.

     
     
    int* a=new int[]{1,2,3,4}; delete []a;

     2-4

    下列哪个代码能够实现x和y值的交换( )

    A.

     
     
    1. void fun(int a,int b) {
    2. int x = a;
    3. a = b;
    4. b = x;
    5. }
    6. int main() {
    7. int x = 1, y = 2;
    8. fun(&x, &y);
    9. cout << x << ","<
    10. return 0;
    11. }

    B.

    1. void fun(int* a,int* b) {
    2. int x = *a;
    3. *a = *b;
    4. *b = x;
    5. }
    6. int main() {
    7. int x = 1, y = 2;
    8. fun(&x,&y);
    9. cout << x << ","<
    10. return 0;
    11. }

    C.

    1. void fun(int& a,int& b) {
    2. int x = a;
    3. a = b;
    4. b = x;
    5. }
    6. int main() {
    7. int x = 1, y = 2;
    8. fun(&x, &y);
    9. cout << x << ","<
    10. return 0;
    11. }

    D.

    1. void fun(const int&a,const int&b) {
    2. int x = a;
    3. a = b;
    4. b = x;
    5. }
    6. int main() {
    7. int x = 1, y = 2;
    8. fun(x, y);
    9. cout << x << ","<
    10. return 0;
    11. }

     2-5

    下面有一个结构体,对结构体的错误使用是( )

    1. struct Book{
    2. string name;
    3. double price;
    4. }

    A

    Book b{"C++",20};
    

    B

    1. Book b;
    2. b->name="C++";
    3. b->price=20;

    C

    1. Book *b=new Book[2];
    2. b[0].name="C++";
    3. b[0].price=20;

    D

    1. Book *p=new Book();
    2. p->name="C++";
    3. p->price=20;

     2-6

    下列种类的函数中,哪一种不是类的成员函数?

    A.

    构造函数

    B.

    析构函数

    C.

    友元函数

    D.

    拷贝构造函数

    2-7 

    父类Base和子类Derive的定义如下。请问在子类中,继承的父类成员f,x,y的访问控制权限分别是:

    1. class Base
    2. {
    3. public:
    4. void f();
    5. protected:
    6. int x;
    7. private:
    8. int y;
    9. };
    10. class Derive : protected Base
    11. {
    12. };

    A.

    public, protected, private

    B.

    public, public, public

    C.

    private, private, private

    D.

    protected, protected, private

     2-8

    当变量x的输入值是9时,下面程序的运行结果是:

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. int x;
    7. cin>>x;
    8. try
    9. {
    10. cout<<"begin"<
    11. if(x>100)
    12. {
    13. cout<<"1"<
    14. throw string("too big.");
    15. }
    16. else
    17. {
    18. cout<<"x="<
    19. }
    20. cout<<"2"<
    21. }
    22. catch(string e)
    23. {
    24. cout<<"3:"<
    25. }
    26. cout<<"end"<
    27. return 0;
    28. }

    A

    1. begin
    2. 1
    3. 2
    4. end

    B

    1. begin
    2. 1
    3. 3: too big.
    4. 2
    5. end

    C

    1. begin
    2. x=9
    3. 2
    4. end

    D

    1. begin
    2. 1
    3. 3: too big.
    4. end

     2-9

    下列哪个代码不会调用对象的拷贝构造函数( C)

    1. A.
    2. MyClass a;
    3. MyClass b=a;
    4. B.
    5. MyClass a;
    6. MyClass b(a);
    7. C.
    8. MyClass a;
    9. MyClass& b=a;
    10. D.
    11. void f(MyClass obj)
    12. {
    13. ....
    14. }
    15. MyClass a;
    16. f(a);

    2-10根据下列类模板声明,正确初始化对象的方式是( A)

    1. template<typename T1, typename T2>
    2. class MyClass{
    3. private:
    4. T1 x;
    5. T2 y;
    6. public:
    7. MyClass(T1 _x, T2 _y):x(_x),y(_y){}
    8. };
    1. A.
    2. MyClass<int,char> a(10,'a');
    3. B.
    4. MyClass a(10,'a');
    5. C.
    6. MyClass<int,char> a;
    7. D.
    8. MyClass a;

    Fn函数题

    6-1 类的定义(教师类Teacher)

    分数 10

    全屏浏览题目

    切换布局

    作者 刘骥

    单位 重庆大学

    本题要求定义一个教师类Teacher,数据成员包含姓名name和年龄age,类的声明见给出的代码,请给出类的完整实现,并通过测试程序。

    类的声明:

     
     
    1. class Teacher{
    2. private:
    3. string name;
    4. int age;
    5. public:
    6. Teacher(string name,int age);
    7. string getName() const;
    8. int getAge() const ;
    9. void setName(string name);
    10. void setAge(int age);
    11. };

    测试程序:

     
     
    1. #include
    2. #include
    3. using namespace std;
    4. class Teacher{
    5. private:
    6. string name;
    7. int age;
    8. public:
    9. Teacher(string name,int age);
    10. string getName() const;
    11. int getAge() const ;
    12. void setName(string name);
    13. void setAge(int age);
    14. };
    15. /* 请在这里填写答案 */
    16. int main(){
    17. Teacher a("Wang",20);
    18. cout<<"name:"<getName()<
    19. cout<<"age:"<getAge()<
    20. a.setName("Zhang");
    21. a.setAge(30);
    22. cout<<"name:"<getName()<
    23. cout<<"age:"<getAge()<
    24. return 0;
    25. }

    测试程序的输入:

    
    

    测试程序的输出:

    1. name:Wang
    2. age:20
    3. name:Zhang
    4. age:30

    注意:“:”是英文冒号

    提示

    下列代码为类实现的骨架代码

    1. Teacher::Teacher(string name,int age){
    2. //代码
    3. }
    4. string Teacher::getName() const{
    5. //代码
    6. }
    7. int Teacher::getAge() const{
    8. //代码
    9. }
    10. void Teacher::setName(string name)
    11. {
    12. //代码
    13. }
    14. void Teacher::setAge(int age)
    15. {
    16. //代码
    17. }

    代码长度限制

    16 KB

    时间限制

    400 ms

    内存限制

    64 MB

     参考答案

    1. /* 请在这里填写答案 */
    2. Teacher::Teacher(string name, int age)
    3. {
    4. //代码
    5. this->name = name;
    6. this->age = age;
    7. }
    8. string Teacher::getName() const
    9. {
    10. //代码
    11. return name;
    12. }
    13. int Teacher::getAge() const
    14. {
    15. //代码
    16. return age;
    17. }
    18. void Teacher::setName(string name)
    19. {
    20. //代码
    21. this->name = name;
    22. }
    23. void Teacher::setAge(int age)
    24. {
    25. //代码
    26. this->age = age;
    27. }

    6-2 加、不等和输入输出的运算符重载(2维向量Vec2)

    分数 10

    全屏浏览题目

    切换布局

    作者 刘骥

    单位 重庆大学

    本题要求定义一个二维向量类Vec2,类的声明见给出的代码,请给出类的完整实现,并通过测试程序。类的声明包括如下内容:

    1. 数据成员,向量的第一维u和第二维v;
    2. u和v的访问函数;
    3. 构造函数;
    4. 加号、减号运算符重载(遵守二维向量的运算规则);
    5. ==和!=运算符重载(遵守二维向量的运算规则)
    6. 输入、输出运算符重载。

    类实现代码需要补充构造函数以及加、不等、输入输出运算。

    类的声明:

    1. class Vec2{
    2. private:
    3. double u;
    4. double v;
    5. public:
    6. Vec2(double u=0,double v=0);
    7. double getU() const;
    8. double getV() const;
    9. Vec2 operator+(const Vec2&b);
    10. friend Vec2 operator-(const Vec2&a,const Vec2&b);
    11. bool operator==(const Vec2&b) const;
    12. friend bool operator!=(const Vec2&a,const Vec2&b);
    13. friend ostream&operator<<(ostream&os,const Vec2&c);
    14. friend istream&operator>>(istream&is,Vec2&c);
    15. };

    测试程序:

    1. #include
    2. using namespace std;
    3. class Vec2{
    4. private:
    5. double u;
    6. double v;
    7. public:
    8. Vec2(double u=0,double v=0);
    9. double getU() const;
    10. double getV() const;
    11. Vec2 operator+(const Vec2&b);
    12. friend Vec2 operator-(const Vec2&a,const Vec2&b);
    13. bool operator==(const Vec2&b) const;
    14. friend bool operator!=(const Vec2&a,const Vec2&b);
    15. friend ostream&operator<<(ostream&os,const Vec2&c);
    16. friend istream&operator>>(istream&is,Vec2&c);
    17. };
    18. double Vec2::getU() const
    19. {
    20. return u;
    21. }
    22. double Vec2::getV() const
    23. {
    24. return v;
    25. }
    26. Vec2 operator-(const Vec2&a,const Vec2&b){
    27. return Vec2(a.u-b.u,a.v-b.v);
    28. }
    29. bool Vec2::operator==(const Vec2&b) const{
    30. return u==b.u&&v==b.v;
    31. }
    32. /* 请在这里填写答案 */
    33. int main(){
    34. Vec2 a;
    35. cin>>a;
    36. cout<<"a: "<
    37. Vec2 b(3,4);
    38. Vec2 c=a+b;
    39. cout<<"c: "<
    40. Vec2 d=a-b;
    41. cout<<"d: "<
    42. cout<<"a==a: "<<(a==a)<
    43. cout<<"a!=a: "<<(a!=a)<
    44. return 0;
    45. }

    测试程序的输入:

    10 5

    测试程序的输出:

    1. a: u=10,v=5
    2. c: u=13,v=9
    3. d: u=7,v=1
    4. a==a: 1
    5. a!=a: 0

    注意:“:”和“,”为英文,“:”后有一个空格

    提示

    下列代码为类实现的骨架代码

    1. Vec2::Vec2(double u,double v){
    2. //代码
    3. }
    4. Vec2 Vec2::operator+(const Vec2&b){
    5. //代码
    6. }
    7. bool operator!=(const Vec2&a,const Vec2&b)
    8. {
    9. //代码
    10. }
    11. ostream&operator<<(ostream&os,const Vec2&c){
    12. //代码
    13. }
    14. istream&operator>>(istream&is,Vec2&c){
    15. //代码
    16. }

    参考答案

    1. Vec2::Vec2(double u, double v)
    2. {
    3. //代码
    4. this->u = u;
    5. this->v = v;
    6. }
    7. Vec2 Vec2::operator+(const Vec2& b)
    8. {
    9. //代码
    10. Vec2 temp;
    11. temp.u = this->u + b.u;
    12. temp.v = this->v + b.v;
    13. return temp;
    14. }
    15. bool operator!=(const Vec2& a, const Vec2& b)
    16. {
    17. //代码
    18. if (a.u == b.u && a.v == b.v)
    19. {
    20. return 0;
    21. }
    22. return 1;
    23. }
    24. ostream& operator<<(ostream& os, const Vec2& c)
    25. {
    26. //代码
    27. os << "u=" << c.u << ",v=" << c.v;
    28. return os;
    29. }
    30. istream& operator>>(istream& is, Vec2& c)
    31. {
    32. //代码
    33. is >> c.u >> c.v;
    34. return is;
    35. }

    6-3 继承和多态(水果和香蕉)

    请设计水果和香蕉类,并通过测试程序,具体要求如下:

    1. 水果(Fruit)是基类,成员包含:
      • 保护成员变量重量(weight,int类型)
      • 公有构造函数
      • 公有析构函数
      • 公有函数display
    2. 香蕉(Banana)从水果类公有继承,成员包含:
      • 私有成员变量产地(origin,string类型)
      • 公有构造函数
      • 公有析构函数
      • 公有函数display

    对应代码

    1. Fruit f(10);
    2. f.display();

    输出为:

    1. Fruit Constructor
    2. weight=10
    3. Fruit Destructor

    对应代码

    1. Banana a("Chongqing",10);
    2. a.display();

    输出为:

    1. Fruit Constructor
    2. Banana Constructor
    3. origin=Chongqing,weight=10
    4. Banana Destructor
    5. Fruit Destructor

    对应代码

    1. Fruit *pf=new Banana("Chongqing",10);;
    2. pf->display();
    3. delete pf;

    输出为:

    1. Fruit Constructor
    2. Banana Constructor
    3. origin=Chongqing,weight=10
    4. Banana Destructor
    5. Fruit Destructor

    测试程序

    1. #include
    2. #include
    3. using namespace std;
    4. /* 请在这里填写答案 */
    5. int main(){
    6. Fruit *pf=new Banana("Chongqing",10);;
    7. pf->display();
    8. delete pf;
    9. return 0;
    10. }

    测试程序的输入

    测试程序的输出

    1. Fruit Constructor
    2. Banana Constructor
    3. origin=Chongqing,weight=10
    4. Banana Destructor
    5. Fruit Destructor

    参考答案

    1. class Fruit
    2. {
    3. public:
    4. Fruit()
    5. {
    6. cout << "Fruit Constructor" << endl;
    7. }
    8. Fruit(int a)
    9. {
    10. cout << "Fruit Constructor" << endl;
    11. weight = a;
    12. }
    13. virtual void display()
    14. {
    15. cout << "weight=" << weight << endl;
    16. }
    17. virtual ~Fruit()
    18. {
    19. cout << "Fruit Destructor" << endl;
    20. }
    21. protected:
    22. int weight;
    23. };
    24. class Banana :public Fruit
    25. {
    26. public:
    27. Banana(string str, int weit)
    28. {
    29. cout << "Banana Constructor" << endl;
    30. weight = weit;
    31. origin = str;
    32. }
    33. void display()
    34. {
    35. cout << "origin=" << origin << ",weight=" << weight << endl;
    36. }
    37. ~Banana()
    38. {
    39. cout << "Banana Destructor" << endl;
    40. }
    41. private:
    42. string origin;
    43. };

     编程题

    7-1 约数

    分数 10

    全屏浏览题目

    切换布局

    作者 葛亮

    单位 重庆大学

    当整数a除以整数b(b≠0),除得的商正好是整数而没有余数时,称b是a的约数。给你两个正整数A和B, 如果B是A的约数,请打印输出A+B, 否则打印输出A−B。

    输入格式:

    输入包括两个正整数A和B(1≤B≤A≤100)。

    输出格式:

    输出结果。

    输入样例1:

    12 4
    

    输出样例1:

    16
    

    输入样例2:

    20 8
    

    输出样例2:

    12
    

    输入样例3:

    1 1
    

    输出样例3:

    2

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. int a, b;
    6. cin >> a >> b;
    7. bool flag = 0;
    8. if (a % b == 0)
    9. {
    10. flag = 1;
    11. }
    12. if (flag == 1)
    13. {
    14. cout << a + b;
    15. }
    16. else
    17. {
    18. cout << a - b;
    19. }
    20. }

    7-2 逆序整数

    分数 10

    全屏浏览题目

    切换布局

    作者 葛亮

    单位 重庆大学

    对于n位的两个正整数x和y,可以把x表示为x1​x2​…xn​,其中xi​(1≤i≤n)表示整数x第i位上的数字;把y表示为y1​y2​…yn​,其中yi​(1≤i≤n)表示整数y第i位上的数字。如果x1+k​=yn−k​(0≤k≤n−1)始终成立,则x和y互为逆序整数。

    给你两个正整数A和B, 判断两个整数是否互为逆序整数,并输出相应的结果。

    注:题目保证正整数A和B的个位数字不是0。

    输入格式:

    先在第一行输入位数n,然后在接下来的两行分别输入位数为n的正整数A和B(1≤n≤50)。

    输出格式:

    输入样例1:

    1. 2
    2. 89
    3. 98

    输出样例1:

    89 and 98 are reverse.
    

    输入样例2:

    1. 3
    2. 981
    3. 289

    输出样例2:

    981 and 289 are not reverse.
    

    提示:

    输入的两个正整数可能会超过long long int所能表示数的范围。可以用字符串来表示正整数。

    输出结果以“.”结尾。

    代码长度限制

    16 KB

    时间限制

    400 ms

    内存限制

    64 MB

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. int n;
    6. string A; string B;
    7. cin >> n;
    8. cin >> A >> B;
    9. int cishu = 0;
    10. for (int k = 0; k < n; k++)
    11. {
    12. if (A[k] == B[n - 1 - k])
    13. {
    14. cishu;
    15. }
    16. else
    17. {
    18. cishu++;
    19. }
    20. }
    21. if (cishu == 0)
    22. {
    23. cout << A << " and " << B << " are reverse.";
    24. }
    25. else
    26. {
    27. cout << A << " and " << B << " are not reverse.";
    28. }
    29. }

    7-3 一维世界的疫情传播

    分数 10

    全屏浏览题目

    切换布局

    作者 葛亮

    单位 重庆大学

    可怕的阿尔法病毒正在一维世界传播,如果某人的活动范围与病毒携带者的活动范围有交集,则有被感染的可能。假设有一名病毒携带者A在位于X的家附近活动,他到过的地方用xi​表示(这些地点不重复),对于X和xi​之间的区域,都认为是A的活动范围。另外有一名健康者B,他在位于Y的家附近活动,他到过的地方用yi​表示(这些地点不重复),对于Y和yi​之间的区域,都认为是B的活动范围。所有的地点都位于整数点上,−100≤X,Y,xi​,yi​≤100,X=Y,xi​=X,yi​=Y。现在需要判断B是否有被感染的可能。

    输入格式:

    第一行输入N,M,X,Y四个整数,接下来2行分别是N个xi​和M个yi​的值。整数值之间都用空格隔开。具体如下:

    NMXY

    x1​x2​…xN​

    y1​y2​…yM​

    输出格式:

    用家的位置表示A和B两人,输出是否有被感染的可能,具体格式请参见样例。

    输入样例1:

    1. 3 2 10 20
    2. 8 15 13
    3. 16 22

    输出样例1:

    10 and 20: impossible
    

    输入样例2:

    1. 4 2 -48 -1
    2. -20 -35 -91 -23
    3. -22 66

    输出样例2:

    -48 and -1: possible
    

    输入样例3:

    1. 5 3 6 8
    2. -10 3 1 5 -100
    3. 100 6 14

    输出样例3:

    6 and 8: possible
    

    代码长度限制

    16 KB

    时间限制

    400 ms

    内存限制

    64 MB

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. int N, M, X, Y;
    6. cin >> N >> M >> X >> Y;
    7. int* x = new int[N];
    8. int* y = new int[M];
    9. //lipu
    10. int x_Max = X, x_Min = X;
    11. int y_Max = Y, y_Min = Y;
    12. for (int i = 0; i < N;i++)
    13. {
    14. cin >> x[i];
    15. if (x[i] > x_Max)
    16. {
    17. x_Max = x[i];
    18. }
    19. if (x[i] < x_Min)
    20. {
    21. x_Min = x[i];
    22. }//找到x小组数据区间x_Min-x_Max;
    23. }
    24. for (int i = 0; i < M; i++)
    25. {
    26. cin >> y[i];
    27. if (y[i] > y_Max)
    28. {
    29. y_Max = y[i];
    30. }
    31. if (y[i] < y_Min)
    32. {
    33. y_Min = y[i];
    34. } //找到y小组数据区间x_Min-x_Max;
    35. }
    36. bool isPossible = 0;
    37. if (x_Max < y_Min || y_Max < x_Min)
    38. {
    39. isPossible = 0;
    40. }
    41. else
    42. {
    43. isPossible = 1;
    44. }
    45. if (isPossible == 1)
    46. {
    47. cout << X << " and " << Y << ": possible";
    48. }
    49. else
    50. {
    51. cout << X << " and " << Y << ": impossible";
    52. }
    53. return 0;
    54. }

  • 相关阅读:
    vue 移动端app预览和保存pdf踩坑
    模块接口测试
    VTK——设置交互样式上的鼠标回调函数
    【无标题】
    上周热点回顾(6.12-6.18)
    如何判断去噪之后的变压器局部放电是内部还是外部信号
    【20221028】【每日一题】左叶子之和
    C++模板详解
    《LeetCode力扣练习》代码随想录——数组(二分查找---Java)
    北京化工大学2022-2023-1 ACM集训队每周程序设计竞赛(10)题解
  • 原文地址:https://blog.csdn.net/mo_zhongzhou/article/details/128111251