《C 程序设计》上机指导与补充习题(6)

2020-04-15 13:38

二、实验内容

1.设计并测试点类Point,其数据成员是直角坐标系的点坐标,友元函数distance用来计算两点间的距离。2.设计一个书类Book,能够保存书名、定价,所有书的本数和总价。实验七、运算符重载(2学时)一、实验目的

1.掌握运算符重载的规则。2.掌握几种常用的运算符重载的方法。3.了解转换构造函数的使用方法。4.了解在VisualC++6.0环境下进行运算符重载要注意的问题。二、实验内容

1.阅读下面的程序,写出程序运行的结果。(1)#includeclassABC{inta,b,c;public:ABC(intx,inty,intz):a(x),b(y),c(z){}friendostream&operator<<(ostream&out,ABC&f);};ostream&operator<<(ostream&out,ABC&f){out<<\returnout;}intmain(){ABCobj(10,20,30);cout<classNumber{intn;public:Number(intx):n(x){}Number&operator++(){++n;return*this;}Number&operator++(int){n++;return*this;}friendNumber&operator--(Number&o);friendNumber&operator--(Numbero,int);voiddisplay(){cout<<\Numberis:\};Number&operator--(Number&o){--o.n;returno;}Number&operator--(Numbero,int){o.n--;returno;}intmain(){NumberN1(10);++++++N1;N1.display();N1++;N1.display();--N1;N1.display();N1------;N1.display();return0;}2.设计并实现一个日期类Date,要求:(1)可以建立具有指定日期(年、月、日)的Date对象,默认日期是2009.1.1。(2)可以从输出流输出一个格式为“年-月-日”的日期,其中年是四位数据,月、日可以是一位也可以是两位数据。(3)可以动态地设置年、月、日。(4)可以用运算符==、!=、<和>对两个日期进行比较。(5)可以用运算符++、--、+=、-=等完成天数的加减一天或若干天的操作(6)Date类必须能够正确表达日期,不会出现类似于13月,32日一类的情况。Date类还必须处理闰年的问题,闰年包括:所有能被400整除的年份,以及能被4整除同时又不能被100整除的年份。(7)写出主函数对该类进行测试。3.下面是一个数组类CArray的定义。要求:(1)在此基础上增加print()成员函数打印数组,(2)重载“=”、“+”、“-”运算符使之能对该数组类对象进行赋值、加减运算。(3)写出主函数对该类进行测试。classCArray{private:int*p_arr;intsize;public:CArray();//缺省构造函数CArray(int*p_a,ints);//构造函数CArray(constCArray&r_other);//复制构造函数~CArray();//析构函数intoperator[](intpos)const;//访问数组元素值的下标运算符重载函数int&operator[](intpos);//设置数组元素值的下标运算符重载函数Carray&operator=(constCarray&other)//赋值运算符“=”重载函数Carray&operator+(constCarray&other)//加运算符“=”重载函数Carray&operator-(constCarray&other)//减运算符“=”重载函数voidprint()const;};CArray::CArray(){p_arr=NULL;size=0;}CArray::CArray(int*p_a,ints){if(s>0){size=s;p_arr=newint[size];for(inti=0;i=size)returnp_arr[size-1];if(pos<0)returnp_arr[0];returnp_arr[pos];}int&CArray::operator[](intpos){if(pos>=size)returnp_arr[size-1];if(pos<0)returnp_arr[0];returnp_arr[pos];}4.下面是一个自定义字符串类的声明。请写出该类所有成员函数的类外定义代码。classstring{private:unsignedbuflen;char*buffer;public:string();//构造函数string(unsigned);string(char);string(constchar*);string(conststring&);//复制构造函数~string();//析构函数//重载赋值运算符string&operator=(conststring&right);string&operator+=(conststring&right);char*operator+=(constchar*right);friendstringoperator+(conststring&left,conststring&right);//字符串连接stringoperator()(unsignedstart,unsignedlen);//取子串unsignedlength()const;//求字符串长度char&operator[](unsignedindex)const;//访问单个字符intcompare(conststring&)const;//字符串比较operatorconstchar*()const;//到普通c字符串的转换friendostream&operator<<(ostream&,string&);//字符串的输出};实验八、模板(2学时)一、实验目的

1.函数模板的定义与调用。2.掌握类模板的声明与使用方法。二、实验内容

1.设计一个函数模板,实现两数的交换,并用int、float、double、char类型的数据进行测试。2.设计一个函数模板,实现从int、float、double、char类型的数组找出最大值元素。提示:可用类型参数传递数组、用非类型参数传递数组大小,为了找出char*类型数组中的最大值元素,需要对该类型进行重载或特化。3.编写一个顺序表类模板。4.建立两个int类型的向量vector,利用merge算法将其合并,然后用sort算法对合并后的向量进行排序,最后输出排序结果。实验九、输入输出流(自学)一、实验目的

1.深入理解C++的输入输出的含义与其实现方法。2.掌握标准输入输出流的应用,包括格式输入输出。3.掌握对文件的输入输出操作。二、实验内容

1.阅读下面的程序,写出程序运行的结果。(1)#include#includeusingnamespacestd;intmain(){fstreamout,in;out.open(\out<<\fact\\n\out<<\file\\n\out<<\thesameasinputing/outputingdataonscreen...\\n\out.close();charbuffer[80];in.open(\while(!in.eof()){in.getline(buffer,80);cout<#include#includeusingnamespacestd;classWorker{private:intnumber,age;charname[20];doublesal;public:


《C 程序设计》上机指导与补充习题(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国信贷风险专题分析报告2011年第14期—现金流视角下企业偿债能

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: