实验 4 类与对象(二)(河工大廊坊)

简介: 1.设计一个日期类Date,用于表示日期值(年、月、日)。具有成员数据:年、月、日;成员函数有:有参和无参的构造函数进行日期数据初始化;设置日期函数;获取日期值函数(可分为3个,分别获取年、月、日的值);判断是否闰年的函数;校验日期合法性的函数;(提示:需要确定月份(1-12),日子(根据月份及闰年/平年)(1-28,29,30,31))。编写主函数对该类进行测试。

1.设计一个日期类Date,用于表示日期值(年、月、日)。具有成员数据:年、月、日;成员函数有:


有参和无参的构造函数进行日期数据初始化;


设置日期函数;


获取日期值函数(可分为3个,分别获取年、月、日的值);


判断是否闰年的函数;


校验日期合法性的函数;


(提示:需要确定月份(1-12),日子(根据月份及闰年/平年)(1-28,29,30,31))。

编写主函数对该类进行测试。


#include<iostream>
using namespace std;
class Date{
private:
  int y,m,d;
public:
  Date()
  :y(0),m(0),d(0){}
  Date(int a,int b,int c)
  :y(a),m(b),d(c){}
  void set_date(int a,int b,int c){
  y=a;
  m=b;
  d=c;
  }
  int get_y()const{return y;}
  int get_m()const{return m;}
  int get_d()const{return d;}
  int Pdyear()const{
    if(y%400==0)
        return 1;//返回1是闰年
    else{
        if(y%4==0&&y%100!=0)
            return 1;
        else
            return 0;返回0不是闰年
    }
  }
  bool hfx(int a=1)const{
    switch(a){
    case 1:cout<<"闰年"<<endl;break;
    case 0:cout<<"不是闰年"<<endl;break;
    }//判断闰年
    if(m>12||m<1){
      cout<<"不合法"<<endl;
      return false;
    }
    else{
      if(m==2){
        switch(a){
          case 1:
            if(d>29||d<1){cout<<"不合法"<<endl;return false;}
            else {
              cout<<"合法"<<endl;return true;}
          case 0:
            if(d>28||d<1){cout<<"不合法"<<endl;return false;}
            else {
              cout<<"合法"<<endl;return true;}
        }
      }
      else if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
        if(d>31||d<1){
          cout<<"不合法"<<endl;return false;}
        else{
          cout<<"合法"<<endl;return true;}
      }
      else{
        if(d>30||d<1){
          cout<<"不合法"<<endl;return false;}
        else{
          cout<<"合法"<<endl;return true;}
      }
    }
  }
};
int main(){
  int a=1;
  int yy=0,mm=0,dd=0;
  Date d1(1949,10,1),d2;
  cout<<d1.get_y()<<"年"<<d1.get_m()<<"月"<<d1.get_d()<<"日"<<endl;
  d1.hfx(d1.Pdyear());
  cout<<d2.get_y()<<"年"<<d2.get_m()<<"月"<<d2.get_d()<<"日"<<endl;
  while(a){
    cout<<"请输入年月日,用空格隔开"<<endl;
    cin>>yy>>mm>>dd;
    d2.set_date(yy,mm,dd);
    d2.hfx(d2.Pdyear());
    cout<<"---------------"<<endl;
    cout<<"是否继续测试--输入1继续--输入0退出"<<endl;
    fflush(stdin);
    cin>>a;
    cout<<"---------------"<<endl;
    fflush(stdin);  
  }
  system("pause");
  return 0;
}


2.定义一个矩形类CRect,包含私有数据成员为对角线两点的坐标:x1、y1、x2、y2,(均为整型)。除提供必要的构造函数,该类还提供多个成员函数,可分别实现:求周长、求面积、设置坐标值、读取值、显示输出矩形基础信息(两点坐标值)。编写主函数,输入矩形对角线两点的坐标值,计算输出矩形的周长和面积。


#include<iostream>
using namespace std;
class CRect{
private:
  double x1,y1,x2,y2;
public:
  CRect()
    :x1(0),y1(0),x2(0),y2(0){}
  CRect(double a,double b,double c,double d)
    :x1(a),y1(b),x2(c),y2(d){}
  double get_x1()const{return x1;}
  double get_y1()const{return y1;}
  double get_x2()const{return x2;}
  double get_y2()const{return y2;}
  void set(double a,double b,double c,double d){
    x1=a;
    y1=b;
    x2=c;
    y2=d;
  } 
  void CCR(){
    double a=0,b=0;
    a=x1-x2;
    b=y1-y2;
    if(a<0)
      a=-1*a;
    if(b<0)
      b=-1*b;
    cout<<(a+b)*2<<endl;;
  }
  void SCR(){
    double a=0,b=0;
    a=x1-x2;
    b=y1-y2;
    if(a<0)
      a=-1*a;
    if(b<0)
      b=-1*b;
    cout<<(a*b)<<endl;;
  }
  void output(double a,double b,double c,double d)const{
    cout<<"对角线两点坐标:";
    cout<<'('<<a<<','<<b<<')'<<'('<<c<<','<<d<<')'<<endl;
  }
};
int main(){
  double a=0,b=0,c=0,d=0;
   CRect c1;
   c1.output(c1.get_x1(),c1.get_y1(),c1.get_x2(),c1.get_y2());
  cout<<"请输入两个二维坐标"<<endl;
  cin>>a>>b>>c>>d;
  c1.set(a,b,c,d);
  cout<<"基本信息:"<<endl;
  c1.output(c1.get_x1(),c1.get_y1(),c1.get_x2(),c1.get_y2());
  cout<<"周长:";c1.CCR();
  cout<<"面积:";c1.SCR();
  system("pause");
  return 0;
}


3.利用string类实现字符串的输入、赋值、比较、字符查找等功能。


#include<iostream>
#include<string>
using namespace std;
int main(){
  string a,b;
  int position;
  cout<<"请输入a的字符串"<<endl;
  cin>>a;
  cout<<"a的值"<<a<<endl;
  b=a;
  cout<<"b的值"<<b<<endl;
  cout<<"请输入b的字符串"<<endl;
  cin>>b;
  cout<<"比较a与b的大小"<<endl;
  int m=b.compare (a);
  if(m<0)
    {cout<<"b大于a"<<endl;}
  else if(m>0)
    {cout<<"a大于b"<<endl;}
  else
    {cout<<"a等于b"<<endl;}
  cout<<"输入要在a中找查的字符串"<<endl;
  string n;
  cin>>n;
  position=a.find(n);
  if(position != a.npos)
    cout << "找到了位置是 : " << position << endl;
  else
  {cout << "没有找到 "<< endl;}
  system("pause");
  return 0;
}


目录
相关文章
|
6月前
|
Java
Java程序设计实验3 | 面向对象(上)(二)
分数的分子和分母用两个整型数表示,类所拥有的方法包括对分数进行加、减、乘、除等运算,以及输出分数的方法,输出分数的格式应该是:分子/分母。
46 0
|
6月前
|
Java
Java程序设计实验3 | 面向对象(上)(一)
实验目的是理解和掌握面向对象编程的基本概念,包括类的声明、实例化和调用,方法及构造方法的定义,方法重载,值传递和地址传递,以及使用this关键字和static关键字。
56 0
|
6月前
|
缓存 编译器 C语言
|
C语言
C语言程序设计(王立柱)第五章答案 结构,联合,枚举
只有聪明人才能看见的摘要~( ̄▽ ̄~)~
91 0
|
移动开发 Java Android开发
java程序设计——实验五
1.在JFrame 窗口中添加组件 2.对话框实现: 可以使用JSwing中的JOptionPane类。 3.在例8.17的基础上,扩充文本编辑器的功能。
98 0
java程序设计——实验五
|
小程序 Java 开发工具
java程序设计——实验一
1.通过一个简单的applet程序MyJavaApplet.java,并在浏览器中运行,在(10,20)坐标点处输出蓝色字"Hello, Java Applet World!",在合适的位置画直线、画圆等几何图形。 2.编写一个向Applet传递参数的程序,要求至少传递两个参数。 3通过使用for循环和位移运算符,解决如下问题:一球从10000高度自由落下 ,每落一次就会返还原高度一半高度,求第十次反弹的高度,有多少米? 4.用户从键盘输入一个1~99999之间的数,程序将判断这个数是几位数,并判断
235 0
java程序设计——实验一
|
小程序 Java Android开发
java程序设计——实验二
1.编写Applet 程序 (二).修饰符的使用 1.程序功能:通过两个类StaticDemo、Demo2_2 说明静态变量/方法与实例变量/方法的区别。 2.编写类文件Demo2_2.java,程序源代码如下。 (三). 1.方法中参数传递的练习 1.编写一个传值调用的程序文件Demo2_3.java。 (1)程序功能:程序首先给整型变量x 和y 赋一个初值10,然后使用传值调用方式调用方法ff1对x 和y 做乘方及输出x 和y 的乘方值,最后再输出x 和y 的乘方值。 (2)程序源代码如下。 (三).
412 0
java程序设计——实验二
|
Java Android开发 容器
java程序设计——实验四
在Jframe中添加标签、按钮并使用网格布局 程序功能:在Jframe框架中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中的位置。显示结果如图所示。 3. 在面板中添加组件 (1) 程序功能:在Jframe中添加面板容器,并分别在Jframe、面板容器中添加组件并使用不同的布局管理方式。 (2) 编写2.java 程序文件,显示结果如图所示。要求设置最底层的JFrmae容器为顺序布局,Jframe框架中直接添加一个标签,同时在Panel1中以边界布局添加四个方向按钮和一个标签.Panel2中以网
151 0
java程序设计——实验四
|
小程序 Java 图形学
java程序设计——实验六
1.实现一个红色反弹球的程序,当球撞击边框时,球从边框弹回并以相反方向运动。 2 实现一个时钟, 效果如图所示
179 0
java程序设计——实验六
|
Java 编译器 Android开发
java程序设计——实验三
一.了解异常处理机制,使用try…catch 语句处理异常 2.异常类型不匹配的程序 3.包含多个catch 子句的异常处理程序 二.使用throw 语句抛出异常 三.使用throws 子句 四.使用输入输出流类
225 0
java程序设计——实验三