实验12 运算符重载
- 格式:doc
- 大小:199.50 KB
- 文档页数:27
运算符重载基础概念练习题1、下列运算符中,()运算符在C++中不能重载。
A=B()C::Ddelete2、下列运算符中,()运算符在C++中不能重载。
A:B[]CnewD&&3、下列关于C++运算符函数的返回类型的描述中,错误的是()。
A可以是类类型B可以是int类型C可以是void类型D可以是float类型4、下列运算符不能用友元函数重载的是()。
A+B=C某D<<5、在重载运算符函数时,下面()运算符必须重载为类成员函数形式。
A+B-C++D->6、下列关于运算符重载的描述中,正确的是()A运算符重载可以改变运算符的操作数的个数B运算符重载可以改变优先级C运算符重载可以改变结合性D运算符重载不可以改变语法结构7、友元运算符obj>obj2被C++编译器解释为()。
Aoperator>(obj1,obj2)B>(obj1,obj2)Cobj2.operator>(obj1)Dobj1.oprator>(obj2)8、在表达式某+y某z中,+是作为成员函数重载的运算符,某是作为非成员函数重载的运算符。
下列叙述中正确的是()。
Aoperator+有两个参数,operator某有两个参数Boperator+有两个参数,operator某有一个参数Coperator+有一个参数,operator某有两个参数Doperator+有一个参数,operator某有一个参数9、重载赋值操作符时,应声明为()函数。
A友元B虚C成员D多态10、在一个类中可以对一个操作符进行()重载。
A1种B2种以下C3种以下D多种11、在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。
A.作为友元函数重载的1元运算符B.作为成员函数重载的1元运算符C.作为友元函数重载的2元运算符D.作为成员函数重载的2元运算符12、在成员函数中进行双目运算符重载时,其参数表中应带有()个参数。
一、实验内容:用友元函数重载运算符,使对整型的运算符=、+、-、*、/ 适用于分数运算。
SRC见,Exp10.1.cpp;实验小结:1)友元重载运算符模版:例子:运算符重载为友元函数举例#include<iostream>using namespace std;class complex //复数类定义{public:complex(double r=0.0,double i=0.0) {real=r;imag=i;}friend complex operator + (complex c1,complex c2); //运算符+重载友元函数friend complex operator - (complex c1,complex c2); //运算符-重载友元函数void display();private:double real;double imag;};complex operator + (complex c1,complex c2) //运算符重载友元函数实现{return complex(c1.real+c2.real,c1.imag+c2.imag);}complex operator - (complex c1,complex c2) //运算符重载友元函数实现{return complex(c1.real-c2.real,c1.imag-c2.imag);}void complex::display(){cout<<"("<<real<<","<<imag<<")"<<endl;}int main(){complex c1(5,4),c2(2,10),c3;cout<<"c1="; c1.display();cout<<"c2="; c2.display();c3=c1-c2; //使用重载运算符完成复数减法cout<<"c3=c1-c2="; c3.display();c3=c1+c2; //使用重载运算符完成复数加法cout<<"c3=c1+c2="; c3.display();}1)无参构造函数,有时尽量写初始赋值。
国家二级C++机试(运算符重载、模板和C++流)模拟试卷6(总分:58.00,做题时间:90分钟)一、选择题(总题数:29,分数:58.00)1.若在表达式y/x中,''/''是作为成员函数重载的运算符,则该表达式还可以表示为( )。
(分数:2.00)A.x.operator/(y)B.operator/(x,y)C.y.operator/(x) √D.operator/(y,x)解析:解析:运算符函数的函数名是由运算符前加关键字operator构成的。
所以当“/”作为运算符重载后,其格式为operator/。
所以其作为成员函数调用时的格式为y.operator/(x)。
2.有类定义如下: class Type{ public: Type(int i=0); Type operator-(int); friend Type operator+(Type,Type); private: int val; };若有对象定义Type c1;则下列语句序列中,错误的是( )。
(分数:2.00)A.Type(3)+c1;B.e1+Type(3);C.3-c1:√D.c1-3;解析:解析:由于在类Type中对“-”进行了重载,所以根据“-”重载的形式定义,c1-3是正确的,而3-c1是错误的表达式。
3.若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。
(分数:2.00)A.Data+(Data);B.Data operator+{Data};√C.Data+operator{Data};D.operator+(Data,Data);解析:解析:“+”是一个二元运算符,因此作为成员函数重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数是对象本身。
运算符函数的函数名是由运算符前加关键字operator构成的。
4.若要对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是( )。
控制面板试卷遒分:分试题数量:答题120分-钟一剩余时间:调整字号:12 14 16 1820调整背景:国家二级C++机试(运算符重载)模拟试卷3全部题型1.选择题选择题1.运算符重载是对已有的运算符赋予多重含义,因此()。
A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义□ B.可以改变一个己有运算符的优先级和操作数个数C.只能重载C++中已经有的运算符,不能定义新运算符D. C++中己经有的所有运算符都可以重载正确答案:c解析:此题考查的是运算符重载。
运算符重载是针对C++语言原有的运算符进行的,并不能创造新的运算符。
2.通过运算符重载,可以改变运算符原有的()。
A.操作数类型B.操作数个数C.优先级D.结合性正确答案:A解析:此题考查的是运算符重载。
运算符重载具有保持其原有的操作数个数、优先级、语法结构和结合性不变的特性。
故本题选项A正确。
答题卡1A B C D2 A B C D3 A B C D4 A B C D5 A B C D6A B C D7 A B C p8 A B C D9 A B C D WA B C D11 A B CD12A BCD13A BCD14A B C D -----15 A B C D 16A B C D 17A BCD18A B C D 19A BCD20A BCD21A BCD 22 A B C D3.下列关于运算符重载的描述中,正确的是()。
A.运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B.•元运算符只能作为成员函数重载C.二元运算符重载为非成员函数时,参数表中有一个参数D.C++中可以重载所有的运算符正确答案:A解析:此题考查的是运算符的重载。
运算符重载为成员函数时,形参个数一般为运算符元数减1;重载为非成员函数时,形参个数一般和运算符元数相等。
所以二元运算符重载为非成员函数时,参数表中应有两个参数,C选项错误:运算符重载为成员函数,若参数表中无参数,重载的是一元运算符,选项A 正确:一元运算符中,“・”(取负)、"++”、"・・”等均可重载为成员函数:C++ 语言中,”、*”、"・>*"、":: ”、“?:”五个运算符不能重载。
《C++程序设计》实验指导目录实验0 认识开发环境........................................错误!未定义书签。
实验1 数据类型与输入输出............................错误!未定义书签。
实验2 分支语句 ................................................错误!未定义书签。
实验3 循环语句 ................................................错误!未定义书签。
实验4 函数和程序结构....................................错误!未定义书签。
实验5 数组 ........................................................错误!未定义书签。
实验6 指针和引用 ............................................错误!未定义书签。
实验7 类和对象 ................................................错误!未定义书签。
实验8 继承和派生 ............................................错误!未定义书签。
实验9 多态 ........................................................错误!未定义书签。
实验10 输入/输出流.........................................错误!未定义书签。
实验0 认识开发环境实验目的●了解和使用集成开发环境。
●熟悉集成开发环境的基本编辑命令及功能键,学会常规窗口操作,熟悉常用的菜单命令。
●学习完整的C++程序开发过程(编辑、编译、连接、调试、运行及查看结果)。
《Python程序设计》课程标准一、课程名称Python程序设计二、适用专业本课程标准适用计算机网络技术专业, 大数据技术与应用专业三、课程性质《Python程序设计》是软件技术等相关专业的专业基础课。
主要讲述Python程序设计的基础知识和相关技术。
是计算机网络技术, 大数据技术与应用的专业基础课程。
《Python程序设计》课程的教学目的是学生通过学习该课程, 掌握Python程序设计语言的基本知识和使用Python语言进行软件开发的思想和基本方法, 进而掌握程序设计的基本步骤和通用方法, 提高通过编写程序解决实际问题的能力, 为今后进一步使用数据采集和分析等大数据及人工智能方面的运用打好基础。
课程着眼于学生的长远发展, 重点培养其软件开发、大数据及人工智能领域岗位基本工作技能、职业素养、社会适应能力、交流沟通能力、团队协作能力、创新能力和自主学习能力。
四、教学目标通过本课程的学习, 使得学生能够理解Python的编程模式, 熟练运用Python列表、元组、字典、集合等基本数据类型以及列表推导式、切片等语法来解决实际问题, 熟练掌握Python分支结构、循环结构、异常处理结构、函数设计以及类的设计与使用, 熟练掌握字符串常用方法与操作, 熟练使用正则表达式处理字符串, 熟练使用Python读写文本文件以及Word、Excel文档, 理解Python面向对象程序设计原理, 掌握使用Python编写网络爬虫程序的方法, 了解numpy数组运算与矩阵运算, 掌握Python+pandas进行数据处理的基本用法, 掌握使用Python+matplotlib进行数据可视化的用法。
课程根据“自主式一体化教学”模式, 按照Python的有关知识由浅入深、从易到难进行教学, 课后布置实训与习题练习, 实现“教、学、做”一体, 从而切实提高学生的持续发展能力。
(一)总体目标通过《Python程序设计》课程的教学, 使学生具有基本的Python程序设计能力、一定的语句编写能力、一定的数据处理分析能力、解决问题的能力、一定的创新能力与良好的沟通能力。
《面向对象程序设计》实验指导书(新)《面向对象程序设计》实验指导书一、课程教学与实验教学计划学时比:48/16二、适用专业:信息管理与信息系统三、实验目的基本要求能够充分理解面向对象程序设计的思想和应用方法。
能够使用面向对象编程语言进行相应的程序设计和开发。
理解面向对象的基本思想、概念和特性以及面向对象的分析、建模、设计技术与方法。
掌握C++语言基本构成、类与对象、消息传递与函数、函数与运算符重载、继承性、多态性与虚拟函数、数据封装和隐藏及Windows 程序设计基础。
通过实验动手实践,使学生能够掌握面向对象程序设计的特征和基本思想,以及相应的具体实现和Windows程序设计基础知识。
四、实验内容实验一:循环控制(一)实验目的要求:熟悉VC++集成开发环境,学习使用控制台应用程序;创建工程,建立可执行文件并执行,观察结果。
掌握变量的声明和定义方法,掌握循环语句和条件语句的定义、作用和使用方法。
(二)实验设备:1.服务器;2.交换机;3.计算机。
(三)实验内容:1.编程求1!+2!+3!+4!+…+12!。
2.编程求所有的3位数素数,且该数是对称的。
所谓“对称”是指一个数,倒过来还是该数。
例如,375不是对称数,因为倒过来变成了573。
实验二:递归函数(一)实验目的要求:掌握函数的概念和使用方法,掌握递归函数的概念和使用方法。
(二)实验设备:1.服务器;2.交换机;3.计算机。
(三)实验内容:1.用递归函数来求1!+2!+3!+…+12!。
2.用递归的方法建立一个函数int fibonacci(int n),求Fibonacci数列中第n个数的值。
实验三:用气泡法排序(一)实验目的要求:掌握文件读写的方法,掌握递归函数的概念和使用方法。
(二)实验设备:1.服务器;2.交换机;3.计算机。
(三)实验内容:建立一个文件,文件中包含一系列数,用这些数构成一个数组,并按照数值,为这个数组从小到大排序,把排序结果输出到另一个文件中。
实验12 运算符重载(2) 牛旭艳 智能二班 20110807201 一、实验目的 1、进一步理解运算符重载,运用成员函数和友元函数等方法实现运算符的重载。
二、实验内容 1、重载函数调用运算符(),将以下的二维数组的下标表示方法: chessBoard[row][column]改为常用的表示方法: chessBoard(row,column)
2、重载下标运算符使之返回集合中最大的元素、次最大的元素以及第三大的元素。 3、开发多项式类Polynomial,多项式的每一项用数组表示,每项包含一个系数和一个指数。例如:2x4的指数为4,系数为2。 请开发一个完整的Polynomial类,包括构造函数、析构函数以及"get"函数和"set"函数。该类还要提供下述重载的运算符(分别使用成员函数和友元函数): 1)重载加法运算符+,将两个多项式相加; 2)重载减法运算符-,将两个多项式相减; 3)重载赋值运算符=,将一个多项式赋给另外一个多项式; 4)重载乘法算符*,将两个多项式相乘; 5)重载加法赋值运算符+=、减法赋值运算符-=以及乘法赋值运算符*=。
4.设计一个日期类Date,,要求: (1)包含年(year)、月(month)和日(day)私有数据成员。 (2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-、重载输出运算符<>等。 提示:由于各C++编译器对于重载输入/出运算符为友元的兼容性都存在问题,最好重载输入/出运算符不声明为成员函数与友元函数,而声明一般函数,为编程更方便,可增加一些成员函数,比如:
void SetYear(int y); // 设置年 int SetMonth(int m); // 设置月 int SetDay(int d); // 设置日 int GetYear() const; // 返回年 int GetMonth() const; // 返回月 int GetDay() const; // 返回日 static int IsLeapyear(int y); // 判断年份y是否为润年 static int GetDays(int y); // 年份y的天数 static int GetDays(const Date &d); // 日期d当前月份的天数 static int DateToNum(const Date &d); // 返回从公元1年1月1日起的天数 static Date NumToDate(int n); //由从公元1年1月1日起的天数返回日期
润年条件:年份能被4整除,并且年份不能被100整除,或者年份能被400整除 润年天数:366 平年天数:365 润年2月份天数:29 平年2月份天数:28
5.设计一个时间类Time,要求: (1)包含时(hour)、分(minute)和秒(second)私有数据成员。 (2)包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载关于一时间减去另一时间的减加运算符-、重载输出运算符<>等。 提示:可仿照第4题编程实现,可将时间转换成秒数,将秒数转成时间进行辅助编程。 时间转换成秒数:
秒数 = 时 * 3600 + 分 * 60 + 秒 秒数转换成时间: 时 = 秒数 / 3600 分 = (秒数 - 时 * 3600) / 60 秒 = 秒数 % 60
为编程更方便,可增加一些成员函数,比如: void SetHour(int hh); // 设置小时 void SetMinute(int mm); // 设置分钟 void SetSecond(int ss); // 设置秒 int GetHour() const; // 返回小时 int GetMinute() const; // 返回分钟 int GetSecond() const; // 返回秒
三、实验程序及结果 1、 #include using namespace std; class chessBoard { private: int a[2][2]; public: chessBoard(int y,int b,int c,int d) { a[0][0]=y; a[0][1]=b; a[1][0]=c; a[1][1]=d;
} int & operator()(int b,int c); }; int & chessBoard::operator()(int b,int c) { return a[b][c]; } int main() { chessBoard v(1,2,3,4); v(0,1)=v(1,0); cout 2、 #include class xiabiao { public: xiabiao()//构造函数赋予数组初值 { for(int i = 0;i < 10;i++) if(i>5) jihe[i] =(-1)* 2 * i; else jihe[i] =i + 3; cout<<"所有元素:" 3、 #include #include class Polynomial { public: Polynomial(); Polynomial operator+(const Polynomial&)const; Polynomial operator-(const Polynomial&)const; Polynomial operator*(const Polynomial&); Polynomial& operator+=(const Polynomial&); Polynomial& operator-=(const Polynomial&); Polynomial& operator*=(const Polynomial&); void EnterTerms();//输入函数 void PrintPolynomial( )const;//打印函数 private: int exponents[100]; int coefficients[100]; void polynomialCombine(Polynomial&);//合并同类项 }; Polynomial::Polynomial() { for(int i=0;i<100;i++)//置零 { coefficients[i]=0; exponents[i]=0; } } void Polynomial::PrintPolynomial() const//输出函数 { int start;//输出累加系数 bool zero=false; if(coefficients[0])//常数存在 { cout