2021 面向对象方法与C++程序设计(大连理工大学) 最新满分章节测试答案
本答案对应课程为:点我自动跳转查看
本课程起止时间为:2021-03-01到2021-05-31
【作业】1 面向对象概述 课后思考及程序设计题
1、 问题:简答题: 1. C++引入了I/O流运算符,与 C语言相比,它们好处是什么?2. C++中define与const定义常量有什么区别?3. 与C语言的动态分配内存函数相比,new 和delete运算符的优点是什么?
评分规则: 【 根据自己的理解,描述C++与C语言相似语法的不同,每题10分。
】
2、 问题:按要求将下面C程序改成能够正确运行的CPP程序,分析程序功能并回答问题。#include<stdio.h>void swap1(char a, char b ){ char t; t=a; a=b; b=t;}void swap2(char p, char q){ char t = 0; t=p; p=q; q=t;}void swap3(char p, char q){ char t; t=p;p=q;q=t;}void swap4(char * p, char * q){ char t = 0; t=p;p=q;q=t;} int main(){ char c1 = ‘A’, c2=’B’; char str1[]="Jackson", str2[]="Gates"; char p1 = str1, p2 = str2;//分析运行结果 swap2(p1, p2); printf("%s, %s", p1, p2); swap3(p1, p2); printf("%s, %s", p1, p2); p1 = "Gates"; p2 = "Jackson";//交换两个指针变量的值应如何调用函数; printf("%s, %s", p1, p2); //输出Jackson,Gates return 0;}(1)交换两个字符变量的值应调用哪个函数;使调用cout<<"c1="<<c1<<",c2 ="<< c2; 输出c1=B,c2=A (2)分析运行结果 swap2(p1, p2); cout<<"p1="<<p1<<",p2 ="<< p2<<endl; swap3(p1, p2); cout<<"p1="<<p1<<",p2 ="<< p2<<endl; (3)交换两个指针变量的值应如何调用函数; p1 = "Gates"; p2 = "Jackson";cout<<p1<<","<< p2<<endl; //输出Jackson,Gates 是否可以调用下列函数实现? swap2(str1,str2); swap3(str1,str2); swap4(&str1,&str2);(4) 用引用作参数的方法定义函数,分别交换字符数据以及指向字符串的指针
评分规则: 【 #include<iostream>using namespace std;void swap1(int a, int b){ int t; t=a; a=b; b=t;}void swap2(int a, int b){ int t; t=a; a=b; b=t;}void swap3(int a, int b){ int t; t=a; a=b; b=t;}void swap4(int a, int b){ int t = 0; t=a; a=b; b=t;}void swap5(int a, int b){ int t ; t=a; a=b; b=t;}void swap6(int &a, int &b){ int t ; t=a; a=b; b=t;}int main(){ int x=3,y=8; int px = &x, py = &y; //swap ? cout<<"x = "<<x<<", y = "<<y<<endl; cout<<"px = "<<px<<", py = "<<py<<endl; return 0;}
】
【作业】2 类与对象 类与对象程序设计题
1、 问题:设计描述学生类,私有数据成员包括学号和姓名int id; char name[20]; 公有成员函数实现以下功能:1) 定义各种构造函数,实现对成员的初始化,学生对象的默认名字是“ssdut” 2)显示学生相关信息的show(), 按清晰格式输出学生的所有信息 3)设置学生姓名的setName( char* n);请给出完整的学生类定义,并对其在main()中进行测试。
评分规则: 【 给出完整的代码
】
2、 问题:定义一个分数类如下,要求实现分数的初始化与设置、四则运算及约分以及输出等功能,并在主函数中测试。 class Rational{ int m; // 分母 int n; // 分子public:Rational(int nn=1,int mm=1); //构造bool setM( int ); // 设置分母,注意不能为零void setN( int ); //设置分子 Rational R_add( const Rational& A); //加法操作, 返回和对象 void R_sub(Rational & A, Rational &B); //减法操作A-B Rational R_mul(Rational & A); //乘法操作,返回乘积对象 void R_div(Rational & A, Rational &B); //除 A/B void simple( ); //约分 void print(); //以分数形式显示,注意约分和符号};
评分规则: 【 给出完整的代码
】
1 面向对象概述 单元测试——从C程序到C++代码
1、 问题:关于C++和C语言的描述中,下面哪种说法是正确的( )。
选项:
A: C++是C的一个子集
B:C程序在C++环境中可以运行
C:C++程序在C环境中可以运行
D:C++与C语言相互不兼容
答案: 【C程序在C++环境中可以运行】
2、 问题:关于引用,下列的说法中错误的是() 。
选项:
A:引用变量是给被引用的变量取一个别名
B:引用主要是用来作函数的形参和函数的返回值
C:在声明引用变量时,要给它另开辟内存单元
D:在声明引用时,必须同时对它进行初始化
答案: 【在声明引用变量时,要给它另开辟内存单元】
3、 问题:以下哪组函数能正确重载,函数调用不会产生二义性()。
选项:
A:swap( int, int); void swap(int, int);
B: void fun(char); void fun(char, char=’\0’);
C: int fun(int p, int n); float fun(int a[], int&m);
D: void fun(char, int, double); void fun(char[], int);
答案: 【 void fun(char*, int, double); void fun(char[], int);】
4、 问题:采用重载函数的目的是()。
选项:
A: 实现代码的共享
B: 减少存储的空间
C:提高执行的速度
D:共享函数名,提高可读性
答案: 【共享函数名,提高可读性】
5、 问题:调用下列哪个函数,能交换两个指针的指向()。 char str[]="China"; char p1 = str, p2 = “加油”; Swap (p1, p2); cout<< p1 << p2; // 加油China
选项:
A:void Swap(char p, char q){ char t = 0; t=p; p=q; q=t;}
B:void Swap(char p, char q){ char t; t=p;p=q;q=t;}
C:void Swap(char * p, char * q){ char t = 0; t=p;p=q;q=t;}
D:void Swap(char &p, char * &q){ char t = 0; t=p; p=q; q=t;}
答案: 【void Swap(char &p, char * &q){ char t = 0; t=p; p=q; q=t;}】
2 类与对象 类与对象单元测试1
1、 问题:下列有关类的说法不正确的是()
选项:
A:类是一种用户自定义的数据类型,包括数据成员和成员函数
B:在类中private、protected和public可以按任意顺序、任意出现多次
C:在类中如果不作特别说明,所有的数据均为私有类型
D:在类中如果不作特别说明, 成员函数均为公有类型
答案: 【在类中如果不作特别说明, 成员函数均为公有类型 】
2、 问题:在类定义的外部,可以被访问的成员是
选项:
A:所有类成员
B:private或protected的类成员
C:public的类成员
D:public或private的类成员
答案: 【public的类成员 】
3、 问题:以下叙述中不正确的是
选项:
A:一个类中可以有多个同名的成员函数
B:在一个类中可以声明另一个类的对象作为它的数据成员
C:类定义的最后要以分号结束
D:系统为类分配的存储空间可通过sizeof计算
答案: 【系统为类分配的存储空间可通过sizeof计算 】
4、 问题:以下叙述中正确的是?
选项:
A:为了方便,推荐将类成员函数全部在类内实现
B:类成员函数在类外实现时,语法和普通函数相同
C:普通函数和类成员函数均可以设置默认参数
D:普通函数可以重载,而类成员函数不可以重载
答案: 【普通函数和类成员函数均可以设置默认参数 】
5、 问题:假设有类class A{int a;public:A next;A(int=0);void set(int a);};以下语句正确的为( )。
选项:
A:A a;a.a = 3;a.next = &a;
B:A p = new A(2);p->set (3);delete p;
C:A ptr = new A[2];delete ptr;
D:A a;a.next = new A(1);delete a;
答案: 【A p = new A(2);p->set (3);delete p; 】
6、 问题:以下正确的是
选项:
A:一个类只能定义一个构造函数
B:一个类只能定义一个析构函数
C:构造函数返回值类型为void
D:一个类一定有无参构造函数
答案: 【一个类只能定义一个析构函数 】
7、 问题:已知类A中一个成员函数说明为:void set(A &a); ,其中A &a的含意是
选项:
A:指向类A的指针为a;
B:将a的地址值赋值给变量set;
C:a是类A的对象引用,用来作函数set( )的形参;
D:变量A与a按位相与作为函数set( )的参数;
答案: 【a是类A的对象引用,用来作函数set( )的形参; 】
8、 问题:假定AB为一个类,则执行“AB a, b(2), c[3], *p=&a;”语句时共调用该类默认构造函数的次数为
选项:
A:5
B:6
C:3
D:4
答案: 【4】
9、 问题:假设OneClass为一个类,则该类的拷贝初始化构造函数的声明语句为:
选项:
A:OneClass(OneClass p);
B:OneClass& (OneClass p);
C:OneClass (OneClass *p);
D:OneClass(OneClass & p);
答案: 【OneClass(OneClass & p); 】
10、 问题:已知类A中的一个公有成员函数void f();,则以下错误的是
选项:
A:A a; a.f();
B:A a; A*a1 = &a; a1->f();
C:A a; A &a1 = a; a1->f();
D:A a; A &a1 = a; a1.f();
答案: 【A a; A &a1 = a; a1->f(); 】
3 运算符重载 运算符重载单元测试
1、 问题:下列关于运算符重载的描述中,正确的是
选项:
A:运算符重载可以改变运算符的优先级、结合性与操作数的个数;
B:通过重载可以改变运算符作用于基本类型数据的操作;
C:通过运算符重载可以为自定义类型数据定义新的运算符;
D:以上分析都不对;
答案: 【以上分析都不对; 】
2、 问题:下列运算符中,哪个运算符在C++中不能重载:
选项:
A:?:;
B:[]
C:>=
D:&&
答案: 【?:; 】
3、 问题:下列运算符不能用友元函数重载的是:
选项:
A:+
B:=
C:*
D:<<
答案: 【= 】
4、 问题:下列运算符中, 哪个运算符在C++中不能重载:
选项:
A:=
B:()
C:::
D:delete
答案: 【:: 】
5、 问题:对于类A对象obj1与obj2, 表达式obj>obj2被C++编译器解释为:
选项:
A:若该运算符被重载为成员函数,则解释为operator>(obj1,obj2) ;
B:若该运算符被重载为友元函数,则解释为operator>(obj1,obj2) ;
C:若该运算符被重载为成员函数,则解释为obj2.operator>(obj1) ;
D:若该运算符被重载为友元函数,则解释为obj1.oprator>(obj2);
答案: 【若该运算符被重载为友元函数,则解释为operator>(obj1,obj2) ; 】
本文章不含期末不含主观题!!
本文章不含期末不含主观题!!
支付后可长期查看
有疑问请添加客服QQ 2356025045反馈
如遇卡顿看不了请换个浏览器即可打开
请看清楚了再购买哦,电子资源购买后不支持退款哦