oj平台做题汇总3
来源:互联网 发布:2017中国最大数据公司 编辑:程序博客网 时间:2024/05/04 13:18
//定义一个Teacher(教师)类(教师号,姓名,性别,薪金)和一个Student(学生)类//(学号,姓名,性别,成绩),二者有一部分数据成员是相同的,num(号码),name(姓名),sex(性别)。//编写程序,将一个Student对象(学生)转换为Teacher(教师)类,只将以上3个相同的数据成员移植过去。//可以设想为: 一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,//应当保留并成为其教师数据的一部分。#include <iostream>#include <iomanip>using namespace std;class Student{public: Student(){} Student(int n,string na,char s,float sc):num(n),name(na),sex(s),score(sc){} void display() { cout<<"num:"<<num<<endl; cout<<"name:"<<name<<endl; cout<<"sex:"<<sex<<endl; cout<<"score:"<<score<<endl; } int get_num() { return num; } string get_name() { return name; } char get_sex() { return sex; }private : int num; string name; char sex; float score;};class Teacher{public: Teacher(){} Teacher(int n,string na,char s,float p):num(n),name(na),sex(s),pay(p){} Teacher(Student &s) { num=s.get_num(); name=s.get_name(); sex=s.get_sex(); } void display() { cout<<"num:"<<num<<endl; cout<<"name:"<<name<<endl; cout<<"sex:"<<sex<<endl; cout<<"pay:"<<pay<<endl; } void setpay(double p) { pay=p; }private : int num; string name; char sex; float pay;};int main(){ cout<<setiosflags(ios::fixed); cout<<setprecision(2); int num; char name[20]; char sex; float score; float pay; cin>>num>>name>>sex>>pay; Teacher teacher1(num,name,sex,pay); cin>>num>>name>>sex>>score; Student student1(num,name,sex,score); cout<<"student1:"<<endl; student1.display(); Teacher teacher2=Teacher(student1); teacher2.setpay(1500); cout<<"teacher2:"<<endl; teacher2.display(); return 0;}
//请编写程序,处理一个复数与一个double数相加的运算,//结果存放在一个double型的变量d1中,输出d1的值,再以复数形式输出此值。//定义Complex(复数)类,在成员函数中包含重载类型转换运算符://operator double() { return real; }#include <iostream>#include <iomanip>using namespace std;class Complex{public: Complex(); Complex(double r); Complex(double r,double i); operator double(); void display();private: double real; double imag;};//***********Complex::Complex(){}Complex::Complex(double r){ real=r; imag=0;}Complex::Complex(double r,double i){ real=r; imag=i;} Complex::operator double() { return real; } void Complex::display() { cout<<"("<<real<<", "<<imag<<")"<<endl; }//**************int main(){ cout<<setiosflags(ios::fixed); cout<<setprecision(2); double real,imag; cin>>real>>imag; Complex c1(real,imag); double d1; cin>>d1; d1=d1+c1; cout<<"d1="<<d1<<endl; Complex c2=Complex(d1); cout<<"c2="; c2.display(); return 0;}
//有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加(如c=a+b)。//重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。#include <iostream>using namespace std;class Matrix{public: Matrix(); friend Matrix operator+(Matrix &,Matrix &); friend ostream& operator<<(ostream&,Matrix&); friend istream& operator>>(istream&,Matrix&);private: int mat[2][3];};//*****************Matrix::Matrix(){}Matrix operator+(Matrix &m1,Matrix &m2){ Matrix m; int i,j; for(i=0;i<2;i++) { for(j=0;j<3;j++) { m.mat[i][j]=m1.mat[i][j]+m2.mat[i][j]; } } return m;}ostream& operator<<(ostream&out,Matrix&m){ int i,j; for(i=0;i<2;i++) { for(j=0;j<2;j++) { out<<m.mat[i][j]<<" "; } out<<m.mat[i][2]<<endl; } return out;}istream& operator>>(istream&in,Matrix&m){ int i,j; for(i=0;i<2;i++) { for(j=0;j<3;j++) { in>>m.mat[i][j]; } } return in;}/* C++代码 */int main(){ Matrix a,b,c; cin>>a; cin>>b; c=a+b; cout<<c<<endl; return 0;}
//定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。//参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意。//例如,c1+c2,i+c1,c1+i均合法(设i为整数,c1,c2为复数)。编写程序,分别求两个复数之和、整数和复数之和。#include <iostream>#include <iomanip>using namespace std;class Complex{public: Complex() { real=0; imag=0; } Complex(double r,double i) { real=r; imag=i; } Complex operator+(Complex &c2); Complex operator+(int &i); friend Complex operator+(int&,Complex &); void display();private: double real; double imag;};//*****************Complex Complex::operator+(Complex &c2){ return Complex(this->real+c2.real,this->imag+c2.imag);}Complex Complex::operator+(int &i){ return Complex(this->real+i,this->imag);}Complex operator+(int&i,Complex &c){ return Complex(c.real+i,c.imag);}void Complex::display(){ cout<<"("<<real<<","<<imag<<"i)"<<endl;}/* C++代码 */int main(){ double real,imag; cin>>real>>imag; Complex c1(real,imag); cin>>real>>imag; Complex c2(real,imag); cout<<setiosflags(ios::fixed); cout<<setprecision(2); Complex c3=c1+c2; cout<<"c1+c2="; c3.display(); int i; cin>>real>>imag; cin>>i; c3=Complex(real,imag)+i; cout<<"c1+i="; c3.display(); cin>>i; cin>>real>>imag; c1=Complex(real,imag); c3=i+c1; cout<<"i+c1="; c3.display(); return 0;}
//定义一个复数类Complex,重载运算符“+”,“-”,“*”,“/”,//使之能用于复数的加、减、乘、除。运算符重载函数作为Complex类的成员函数。编写程序,分别求两个复数之和、差、积和商。#include <iostream>#include <iomanip>using namespace std;class Complex{public: Complex(); Complex(double r,double i); Complex operator+(Complex &c2); Complex operator-(Complex &c2); Complex operator*(Complex &c2); Complex operator/(Complex &c2); void display();private: double real; double imag;};/* C++代码 */Complex::Complex(){}Complex::Complex(double r,double i){ real=r; imag=i;}Complex Complex::operator+(Complex &c2){ return Complex(this->real+c2.real,this->imag+c2.imag);}Complex Complex::operator-(Complex &c2){ return Complex(this->real-c2.real,this->imag-c2.imag);}Complex Complex::operator*(Complex &c2){ return Complex(this->real*c2.real-this->imag*c2.imag,this->imag*c2.real+this->real*c2.imag);}Complex Complex::operator/(Complex &c2){ return Complex((this->real*c2.real+this->imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag),(this->imag*c2.real-this->real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag));}void Complex::display(){ cout<<"("<<real<<","<<imag<<"i)"<<endl;}//****************int main(){ double real,imag; cin>>real>>imag; Complex c1(real,imag); cin>>real>>imag; Complex c2(real,imag); cout<<setiosflags(ios::fixed); cout<<setprecision(2); Complex c3=c1+c2; cout<<"c1+c2="; c3.display(); c3=c1-c2; cout<<"c1-c2="; c3.display(); c3=c1*c2; cout<<"c1*c2="; c3.display(); c3=c1/c2; cout<<"c1/c2="; c3.display(); return 0;}
//定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。//将运算符函数重载为非成员、非友元的普通函数。编写程序,求两个复数之和。#include <iostream>#include <iomanip>using namespace std;class Complex{public: Complex(); Complex(double r,double i); double get_real(); double get_imag(); void display();private: double real; double imag;};//****************Complex::Complex(){}Complex::Complex(double r,double i){ real=r; imag=i;}double Complex::get_real(){ return real;}double Complex::get_imag(){ return imag;}void Complex::display(){ cout<<"("<<real<<","<<imag<<"i)"<<endl;}Complex operator +(Complex &c1,Complex &c2){ return Complex(c1.get_real()+c2.get_real(),c1.get_imag()+c2.get_imag());}/* C++代码 */int main(){ double real,imag; cin>>real>>imag; Complex c1(real,imag); cin>>real>>imag; Complex c2(real,imag); Complex c3=c1+c2; cout<<setiosflags(ios::fixed); cout<<setprecision(2); c3.display(); return 0;}
<pre name="code" class="cpp">//声明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,//求出大数和小数。说明:在类模板外定义各成员函数。
#include <iostream>#include <iomanip>using namespace std;template<class numtype>class Compare{public: Compare(numtype a,numtype b); numtype max(); numtype min();private: numtype x,y;};//****************template<class numtype>Compare<numtype>::Compare(numtype a,numtype b){ x=a; y=b;}template<class numtype>numtype Compare<numtype>::max(){ return (x>y)?x:y;}template<class numtype>numtype Compare<numtype>::min(){ return (x<y)?x:y;}/* C++代码 */int main(){ int i1,i2; cin>>i1>>i2; Compare<int> cmp1(i1,i2); cout<<cmp1.max()<<" "<<cmp1.min()<<endl; float f1,f2; cin>>f1>>f2; Compare<float> cmp2(f1,f2); cout<<setiosflags(ios::fixed); cout<<setprecision(2); cout<<cmp2.max()<<" "<<cmp2.min()<<endl; char c1,c2; cin>>c1>>c2; Compare<char> cmp3(c1,c2); cout<<cmp3.max()<<" "<<cmp3.min()<<endl; return 0;}
//设计一个日期类和时间类,编写display函数用于显示日期和时间。//要求:将Time类声明为Date类的友元类,通过Time类中的display函数引用Date类对象的私有数据,//输出年、月、日和时、分、秒。
#include <iostream>using namespace std;class Time;class Date{private: int year,month,day;public: Date(int y,int m,int d):year(y),month(m),day(d){} friend class Time;};class Time{private: int hour,minute,second;public: Time(int h,int m,int s):hour(h),minute(m),second(s){} void display(Date &d) { cout<<d.year<<"/"<<d.month<<"/"<<d.day<<endl; cout<<hour<<":"<<minute<<":"<<second<<endl; }};int main(){ int year,month,day; cin>>year>>month>>day; Date d1(year,month,day); int hour,minute,second; cin>>hour>>minute>>second; Time t1(hour,minute,second); t1.display(d1); return 0;}
//商店销售某一商品,每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,//一次购10件以上者,//还可以享受9.8折优惠。现已知当天m个销货员销售情况为// 销货员号(num) 销货件数(quantity) 销货单价(price)//// 101 5 23.5//// 102 12 24.56//// 103 100 21.5////请编写程序,计算出当日此商品的总销售款sum以及每件商品的平均售价。要求用静态数据成员和静态成员函数。//(提示: 将折扣discount,总销售款sum和商品销售总件数n声明为静态数据成员,再定义静态成员函数average(求平均售价)//和display(输出结果)。
#include <iostream>#include <iomanip>using namespace std;class Product{private: static int n;//总销售件数 static float sum;//总销售额 static float discount; int num;//售货员号 float price;//个人销售额 int quantity;//个人销售件数public: Product(){} Product(int n,int q,float p):num(n),quantity(q),price(p){} static float average(); static void display(); void total();};float Product::average(){ return (sum/n);}void Product::total(){ n+=quantity; if(quantity<=10) { sum+=(price*(1-discount)*quantity); } else { sum+=(price*(1-discount)*quantity*0.98); }}void Product::display(){ cout<<sum<<endl; cout<<average()<<endl;}//***********float Product::discount=0.05;float Product::sum=0;int Product::n=0;int main(){ const int NUM =10; Product Prod[10]; int m,i; cin>>m; int num; int quantity; float price; for(i=0; i<m; i++) { cin>>num>>quantity>>price; Product temp(num,quantity,price); Prod[i]=temp; } for(i=0; i<m; i++) Prod[i].total(); cout<<setiosflags(ios::fixed); cout<<setprecision(2); Product::display(); return 0;}
0 0
- oj平台做题汇总3
- oj平台做题汇总
- oj平台做题汇总
- OJ平台汇总
- 第13周oj平台题目汇总
- 第14周 oj平台汇总
- 今天开始做oj题
- oj汇总
- OJ和OJ平台
- OJ做题常见的几个错误
- [ACM] 推荐做题的OJ
- 做C题之oj系统?
- 华为OJ平台题:字符串加解密
- 第十五周OJ平台项目3
- OJ不完全汇总
- 2016.7.12 做题汇总! 打卡!
- 国内3DGIS平台汇总2013版本
- 国内3DGIS平台汇总2013版本
- Eclipse中提高Android SDK Manager下载速度方法
- 01-mysql-简介
- 02-mysql-安装
- 多态的使用意义
- Android Camera系统
- oj平台做题汇总3
- 用XCL-Charts定制多柱形堆积图
- UNICODE了解一下又不会die
- 手机助手的那点事儿--经验之谈
- HDU 3665 Seaside(简单Floyd)
- 讲讲金融业务(一)--自助结算终端POS
- R语言学习系列(1)
- 正则表达式:回车和换行的区别
- 03-mysql-进入数据库前的操作