资源描述
第一次作业:
重载函数k,功能分别是计算n(n>=0)的阶乘、两个字符串连接在一起并将后三个字符输出。
#include "iostream.h"
#include "string.h"
void k(char s1[],char s2[])
{
int m;
strcat(s1,s2);
m=strlen(s1);
cout<<"m="<<m<<endl;
cout<<s1[m-3]<<s1[m-2]<<s1[m-1]<<endl;
}
void k(int n)
{
int i,s=1;
for(i=1;i<=n;i++)
{s=s*i;}
cout<<s<<endl;
}
void main()
{char a1[20],a2[20];
int n;
cin>>a1>>a2;
cin>>n;
k(a1,a2);
k(n);
}
第二次作业:
设计一个圆类,计算圆的面积和周长。再设计一个圆柱类,其成员包含圆类的对象,计算圆柱的体积。
#include <iostream.h>
const double PI = 3.14159;
//声明类Circle 及其数据和方法
class Circle
{
private:
float radius;
public:
Circle(float r) //构造函数
{radius=r;}
double Area() //圆面积
{ return PI * radius * radius; }
double length() //圆周长
{ return 2*PI * radius; }
};
//声明圆柱类
class Column
{
private:
Circle c; //内嵌对象,圆的对象c作为Column的数据成员
float high;
public:
Column(float r,float high1) :c(r) //构造函数
{ high=high1;}
void V() //圆体积
{ cout<<c.Area()*high<<endl;}
};
void main ()
{
float radius;
float high;
// 提示用户输入半径和高
cout<<"Enter the radius of the Circle: ";
cin>>radius;
cout<<"Enter the radius of the high: ";
cin>>high;
Column c1(radius,high); // 声明Column对象
c1.V();
}
第三次作业
描述卡车类Truck,其私有成员为wage、distance和price,分别表示卡车的载货量(单位:吨)、行驶的里程(单位:里)和运费单价(单位:元/每吨每里),请分别用友元函数和静态成员函数计算某一辆卡车的运费。
#include<iostream>
using namespace std;
class Truck
{
public:
Truck(float w,float d,float p)
{
weight=w;distance=d;price=p;
}
static double sum(Truck &T)
{
return T.weight*T.distance*T.price;
}
friend double sum(Truck &T);
private:
float weight;
float distance;
float price;
};
double sum(Truck &T)
{
return T.weight*T.distance*T.price;
}
void main()
{
Truck a(50,20,10);
cout<<Truck::sum(a)<<endl; 或cout<<a.sum(a)<<endl;
cout<<sum(a)<<endl ;
}
第四次作业:
设计一个圆类,计算圆的面积和周长。再设计一个派生类圆柱类,计算圆柱的体积。
#include <iostream.h>
const double PI = 3.14159;
//声明类Circle 及其数据和方法
class Circle
{
private:
float radius;
public:
Circle(float r) //构造函数
{radius=r;}
double Area() //圆面积
{ return PI * radius * radius; }
double length() //圆周长
{ return 2*PI * radius; }
};
//声明圆柱类
class Column:public Circle
{
private:
float high;
public:
Column(float r,float high1):Circle(r) //构造函数
{ high=high1;}
void V() //圆体积
{ cout<< Area()*high<<endl; }
};
void main ()
{
float radius;
float high;
// 提示用户输入半径
cout<<"Enter the radius of the Circle: ";
cin>>radius;
cout<<"Enter the radius of the high: ";
cin>>high;
Column c1(radius,high); // 声明派生类Column的对象
c1.V();
}
第五次作业
Point类描述点这一概念,其中数据成员x和y表示点的横坐标和纵坐标。Circle类描述圆这一概念,它是Point的派生类,Circle类中新增数据成员radius表示圆的半径。请用C++代码描述这两个类,并用Circle类的友元函数Display输出圆的圆心的横、纵坐标和圆的半径,写出main函数的实现。
#include <iostream.h>
const double PI = 3.14159;
//声明类Circle 及其数据和方法
class Point
{
private:
float x,y;
public:
Point(float x1, float y1) //构造函数
{x=x1;y=y1;}
float getx()
{return x;}
float gety()
{return y;}
};
//声明圆类
class Circle:public Point
{
private:
float radius;
public:
Circle (float x2, float y2,float r):Point(x2,y2) //构造函数
{radius =r;}
float getR()
{return radius;}
friend void display(Circle &c);
};
void display(Circle &c)
{cout<<c.getx()<<" "<<c.gety()<<" "<<c.getR()<<endl;}
void main ()
{
float x,y;
float radius;
// 提示用户输入点的横纵坐标
cout<<"Enter the x,y of the Point: ";
cin>>x>>y;
cout<<"Enter the radius of the Circle ";
cin>>radius;
Circle c1(x,y,radius); // 声明派生类Circle的对象
display(c1);}
第六次作业
类T描述出租车类,成员s、k与p分别表示起车价格、行驶公里数和每公里单价,其中成员函数count用于计算乘客使用出租车的费用;使用出租车的费用=起车价格+(公里数-2.5)*单价。类J描述学生成绩类,成员m、c和e分别表示数学、语文和英语成绩,num表示学号,name表示姓名,其中成员函数count用于计算学生的数学、语文和英语的平均成绩,请通过抽象类K的指针或引用实现某次使用出租车的费用和某个学生平均成绩的计算,写出主函数的实现。
#include <iostream.h>
#include<string.h>
class K
{
public:
virtual double count()=0;
};
class T:public K
{
double s,k,p;
public:
T(double s1,double k1,double p1)
{s=s1;k=k1; p=p1;}
double count(){return s+(k-2.5)*p;}
};
class J:public K
{ int num;
char name[20];
double m,c,e;
public:
J(int num1,char name1[],float m1,float c1,float e1)
{
num=num1;strcpy(name,name1);m =m1; c =c1;e=e1;
}
int getNum(){return num;}
char* getName(){return name;}
double count(){return (m+c+e)/3;}
};
void main( )
{ T b(120,3,150);
J j(12,"zhangsan",34,65.7,1200);
K *k;
k =&b;
cout<<k-> count()<<endl;
k=&j;
cout<< j.getNum()<<j.getName()<<k-> count()<<endl;
}
第七次作业
#include<iostream>
#include<stdlib.h>
using namespace std;
class People{
public:
People(char n[])
{
strcpy(name,n);
}
char* getName()
{
return name ;
}
private:
char name[10];
};
class MP:public People{
public:
MP(char n[],double w,int d1):People(n)
{
wage=w;
d=d1;
}
double getWage(){return wage;}
friend void Add(MP &m);
private:
double wage;
int d;
};
void Add(MP &m)
{
switch(m.d)
{
case 1:m.wage=m.wage+50;break;
case 2:m.wage=m.wage+80;break;
case 3:m.wage=m.wage+100;break;
}
cout<<m.getName()<<" "<<m.wage<<endl;
}
void main()
{
MP m1("zhangsan",50000,1);
MP m2("zhangsan",50000,2);
MP m3("zhangsan",50000,3);
Add(m1);
Add(m2);
Add(m3);
}
第八次作业:
设计一个圆类,运算符重载+号,计算两个圆面积的和。
#include <iostream.h>
const double PI = 3.14159;
class Circle
{ private:
float radius;
public:
Circle(float r=0); //构造函数
double Area() const; //圆面积
double operator +(Circle &c);
};
Circle::Circle(float r)
{radius=r;}
double Circle::Area() const
{ return PI * radius * radius;}
double Circle::operator +(Circle &c)
{ return Area()+c.Area();}
void main ()
{ float radius1,radius2;
cout<<"Enter the radius of the Circle: ";
cin>>radius1>>radius2;
Circle c1(radius1);
Circle c2(radius2);
c1+c2;
cout<<"AddArea="<<c1+c2<<endl;
}
第九次作业:
设计一个圆类,计算并保存圆的面积和周长。
#include <iostream.h>
#include <fstream>
using namespace std;
const double PI = 3.14159;
//声明类Circle 及其数据和方法
class Circle
{
private:
float radius;
public:
Circle(float r) //构造函数
{radius=r;}
double Area() //圆面积
{ return PI * radius * radius; }
double length() //圆周长
{ return 2*PI * radius; }
};
void main ()
{ float radius;
cout<<"Enter the radius of the Circle: ";
cin>>radius;
Circle c(radius);
struct{
float area;
float length;
}circle1;
circle1.area=c.Area();
circle1.length=c.length();
ofstream outfile("circle",ios::binary);
outfile.write((char*) &circle1,sizeof(circle1));
outfile.close();
}
展开阅读全文