本答案对应课程为:点我自动跳转查看
本课程起止时间为: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反馈
如遇卡顿看不了请换个浏览器即可打开
请看清楚了再购买哦,电子资源购买后不支持退款哦

   

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注