C++ DLUT 上机作业(一)

2023-11-09

C++ DLUT 上机作业(一)

声明:不同老师有不同要求,仅供参考,不喜勿喷
另外,所有代码在Dev C++可运行
在这里插入图片描述

1、/*定义一个分数类如下,要求实现分数的初始化与设置、四则运算及约分以及输出等功能,并在主函数中测试。

class Rational{
int m; // 分母
int n; // 分子
public:
Rational(int nn=1,int mm=1); //构造
bool setM( int ); // 设置分母,注意不能为零
void setN( int ); //设置分子
Rational R_add( const Rational& A); //加法操作, 返回和对象
void R_sub(Rational & A, Rational &B); //减法操作A-B
Rational R_mul(Rational & A); //乘法操作,返回乘积对象
void R_div(Rational & A, Rational &B); //除 A/B
void simple( ); //约分
void print(); //以分数形式显示,注意约分和符号
};
编写一个驱动程序,对该类进行测试*/

#include<iostream>

using namespace std;

class Rational{
	private:
		int m;   // 分母
        int n;   // 分子
    public:
    	Rational(int nn=1,int mm=1);
		bool setM(int); // 设置分母,注意不能为零
		void setN(int);  //设置分子
        Rational R_add( const Rational& A);   //加法操作, 返回和对象
	    void R_sub(Rational & A, Rational &B);     //减法操作A-B
	    Rational R_mul(Rational & A);    //乘法操作,返回乘积对象
	    void R_div(Rational & A, Rational &B); //除 A/B
	    void simple();        //约分
	    void print();  //以分数形式显示,注意约分和符号        
};
int flag=0;
int gcd(int a,int b)
{
	return b==0?a:gcd(b,a%b);
}
Rational::Rational(int nn,int mm)
{
	setN(nn);
	flag=setM(mm);
}
bool Rational::setM(int mm)
{
	if(mm!=0)
	{
		m=mm;
		return 1;
	}
	cout<<"错误"<<endl;
	return 0;
}
void Rational::setN(int nn)
{
	n=nn;
}
Rational Rational::R_add(const Rational& A)
{
	Rational C;
	C.m=A.m*m;
	//通分相加 
	C.n=C.m/A.m*A.n+C.m/m*n;
	return C;
}
void Rational::R_sub(Rational &A, Rational &B)
{
	//通分相减
	n=A.n*B.m-B.n*A.m;
	m=A.m*B.m;
}
Rational Rational::R_mul(Rational &A)
{
	Rational C;
	C.m=m*A.m;
	C.n=n*A.n;
	return C;
}
void Rational::R_div(Rational &A, Rational &B)
{
	m=A.m*B.n;
	n=A.n*B.m;
}
void Rational::simple() 
{
	int GCD=gcd(m,n);
	m/=GCD;
	n/=GCD;
}
void Rational::print()
{
	cout<<"The result is:"<<endl;
	if(m==0)
	{
		cout<<"除数不能为0!"<<endl;
		flag=0;
	}
	else if(n!=0)
	{
		if(n%m==0)
		{
			cout<<n/m<<endl;
		}
		else
		{
			cout<<n<<"/"<<m<<endl;
		}
	}
	else
	{
		cout<<"0"<<endl;
	}
}
int main()
{
	while(!flag)
    {
		int am,an,bm,bn;
		cout<<"请输入A,B的分子分母:"<<endl;
    	cin>>an>>am>>bn>>bm;
    	Rational a(an,am),b(bn,bm);
		if(flag)
		{
			int n;
			if(am==0||bm==0)
			{
				cout<<"分母不能为零"<<endl;
				break; 
			}
			cout<<"分数加法:1 ; 分数减法:2 ; 分数乘法:3 ; 分数除法:4."<<endl;
			cin>>n;
			switch(n)
			{
				case 1:
					a=a.R_add(b);break;
				case 2:
					a.R_sub(a,b);break;
				case 3:
					a=a.R_mul(b);break;
				case 4:
					a.R_div(a,b);break;
			}
			a.simple();
			a.print();
			return 0;
		}
	}
	return 0;
}

2、/*定义并测试日期类 Date ,类包括私有数据成员 year, month, day; 公有成员函数实现以下功能:

1)各种构造函数,有参数与默认构造函数
2)设置时间bool set( int y, int m, int d),并对该时间的有效性进行检测
3)输出时间,按国际日期方式打印 mm/ dd / yyyy
4)判断该日期是一年的第几天
5)判断该日期是的有效性*/

#include<iostream>

using namespace std;

class Date
{
	private:
		int year,month,day;
	public:
		Date();
		Date(int y,int m,int d);
		void get();
		int theDay();
		int monthdays();	
		void display(bool flag);
		bool set(int y,int m,int d);
};
Date::Date(int y,int m,int d)
{
	year=y;
	month=m;
	day=d;
}
Date::Date()
{
	year=2021;
	month=1;
	day=1;
}
int Date::monthdays()
{
	switch(month)
	{
		case 2:
            if(year%4==0&&year%100!=0||year%400==0)
                return 29;
            else
                return 28;
        case 4: case 6: case 9: case 11:
            return 30;
        default:
            return 31;
	}
}
int Date::theDay()
{
	int s;
	switch(month)
	{
		case 1:
			s=day;
			break;
		case 2:
			s=31+day;
			break;
		case 3:
			s=59+day;
			break;
		case 4:
			s=90+day;
			break;
		case 5:
			s=120+day;
			break;
		case 6:
			s=151+day;
			break;
		case 7:
			s=181+day;
			break;
		case 8:
			s=212+day;
			break;
		case 9:
			s=243+day;
			break;
		case 10:
			s=273+day;
			break;
		case 11:
			s=304+day;
			break;
		case 12:
			s=334+day;
			break;
	}
	if(year%4==0&&year%100!=0||year%400==0)
	{
		if(month>2)
		s+=1;
	}
	return s;
}
bool Date::set(int y,int m,int d)
{
	int days=monthdays();
	if(y>=0)
	{
		if(m>0&&m<=12)
		{
			if(d>0&&d<=days)
			{
				return true;
			}
		}
	}
	return false;
}
void Date::display(bool flag)
{
	if(flag)
	{
	    int days=theDay();
		cout<<"该日期正确"<<endl;
		cout<<"当前时间:"<<month<<"/"<<day<<"/"<<year<<endl;
	    cout<<"该日期是该年的第"<<days<<"天"<<endl; 
	}
	else
	{
		cout<<"该日期错误,请重新运行"<<endl;
	}
}
void Date::get()
{
	int y,m,d;
	int t=2;
	cout<<"输入1:可自定义日期;输入2:可获取默认时间"<<endl;
	cin>>t;
	if(t==1)
	{
		cout<<"请输入日期:";
		cin>>y>>m>>d;
		year=y;
		month=m;
		day=d;
		display(set(y,m,d));
	}
	if(t==2)
	{
		display(set(year,month,day));
	}
}
int main()
{
	Date date;
	date.get();
	return 0;
}

3、/*设计描述学生类,私有数据成员包括学号和姓名int id; char name[20]; 公有成员函数实现以下功能:

  1. 定义各种构造函数,实现对成员的初始化,学生对象的默认名字是“ssdut”
    

    2)显示学生相关信息的show(), 按清晰格式输出学生的所有信息

    3)设置学生姓名的setName( char* n);

请给出完整的学生类定义,并对其在main()中进行测试*/

#include<iostream>
#include<cstring>

using namespace std;

class Student
{
	private:
		int id;
		char name[20];
	public:
		Student();
		Student(int num,const char* n);
		Student(int num);
		void setName(char* m);
		void show();
};
Student::Student()
{
	id=0;
	strcpy(name,"ssdut");
}
Student::Student(int num)
{
	id=num;
	strcpy(name,"ssdut");
}
Student::Student(int num,const char* n)
{
	id=num;
	strcpy(name,n);
}
void Student::setName(char *m)
{
	strcpy(name,m);
}
void Student::show()
{
	cout<<"学号:"<<id<<endl;
	cout<<"姓名:"<<name<<endl;
}
int main()
{
    char name[20];
	cin>>name;
	Student s(4,name);
	s.show();
	Student s0,s1(1),s2(2,"haha");
	s0.show();
	s1.show();
	s2.show();
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ DLUT 上机作业(一) 的相关文章

随机推荐

  • 插值查找(两种方法)

    一 什么是插值查找 1 插值查找算法类似于二分查找 不同的是插值查找每次从自适应 mid 处开始查找 2 二分查找中mid值是left和right所指序列下标的和的1 2即 mid left right 2 3 而插值查找的mid 值是通过
  • Unity3D-Blur-实现屏幕特效十字耀斑

    原文链接 http gad qq com article detail 7181189
  • springboot面试题

    一 SpringBoot 和spring springMVC的区别 Spring它的主要特征是依赖注入 它有两大核心主要是IOC和AOP IOC 应用程序对象的创建 配置 维护 依赖交给了SpringIOC容器统一进行管理 从而实现松耦合
  • OpenCV入门教程,超详细OpenCV入门教程!10小时让你轻松掌握opencv的使用

    OpenCV是一个基于BSD许可 开源 发行的跨平台计算机视觉和机器学习软件库 可以运行在Linux Windows Android和mac OS 操作系统上 它轻量级而且高效 由一系列 C 函数和少量 C 类构成 同时提供了Python
  • 激活函数的作用

    什么是人工神经网络 现在 我相信我们大家都很熟悉什么是A NN了 但接下来请允许我按照自己的理解给A NN下个定义 它是一个强健有力的 同时也非常复杂的机器学习技术 它可以模仿人类的大脑 继而模仿大脑的运作 正如我们的人脑一样 在一个层次上
  • linux(Ubuntu) 下安装sqlite3

    1 介绍 sqlite3是linux上的小巧的数据库 一个文件就是一个数据库 2 安装 要安装sqlite3 可以在终端提示符后运行下列命令 sudo apt get install sqlite3 检查版本 sqlite3 version
  • ant design vue(vue3)的a-tree组件点击文字实现菜单展示

    最近的写的一个项目 需要用的a tree 甲方就觉得那个小三角不好点 需要点文字也可以展开 就需要小小的改动一哈 效果图 过程 实现起来还是很简单的 1 我们可以看ant的官方文档 发现有一个事件expand是当我们展开 收起时就会触发 e
  • vue:loading动画

    1 更改入口文件main js import Vue from vue import App from App vue import router from router import store from store import as
  • Vue -- Mixins 详解

    最近在做页脚版权年份的自动更新 但项目里有多个地方都需要改动 了解到 Vue 里有 mixin 这个概念 发现可以很方便地抽取出来 进行组件化统一管理 下面介绍一下 mixin 的概念 特点和应用场景 介绍 官方解释 混入 mixin 提供
  • 使用 Vue 3.0 和 Element UI 实现功能增加、按钮操作和查询框功能详解

    简介 Vue 3 0 和 Element UI 是当今流行的前端开发工具 结合它们可以轻松构建出强大的用户界面 本篇技术博客将详细介绍如何利用 Vue 3 0 和 Element UI 实现功能增加 按钮操作以及通过查询框输入信息来进行信息
  • JS 数组对象去重

    原数据 let arr goodsId 1 quota 12 skuId 1 goodsId 2 quota 12 skuId 2 goodsId 1 quota 12 skuId 1 去重后数据 let arr goodsId 1 quo
  • ubuntu系统整体克隆时遇到system back无法识别固态硬盘

    ubuntu系统整体克隆 使用System back软件 安装相关软件 1 安装System back 2安装 GParted 制作系统盘 1 启动system back软件 2制作镜像 系统恢复 1选择U盘启动 2系统分区 在配置环境的时
  • C语言字符串逆转

    define CRT SECURE NO WARNINGS include
  • shell编程一百例 day-1

    shell编程一百例 今晚份 能力有限 未按顺序 未完待续 1 输出 Hello World 2 猜数游戏 3 键盘输入三个数 升序输出
  • 麒麟系统调试

    一 raid 报错 mdadm RUN ARRAY failed Invalid argument 原因 zcat proc config gz 查看配置 驱动未加载全 解决办法 modprobe dm raid modprobe raid
  • 一道经典的C++题,关于分钱的问题,适合新手阅读(黑客X档案论坛题目) [c#]...

    前几天CSDN论坛的首页 看到一则帖子 题目是 一道经典的C 题 关于分钱的问题 适合新手阅读 黑客X档案论坛题目 链接如下 http blog csdn net gisfarmer archive 2009 02 08 3869236 a
  • 手术导航系统原理简介、主要工作及应用

    目录 1 手术导航系统简介 2 手术导航系统的工作原理及构造 3 手术导航系统通常需完成四项主要工作
  • 在Windows10环境安装CUDA11.7及PyTorch1.13--使用Nvidia RTX A4000开始炼丹之旅

    在Windows10环境安装CUDA11 7及PyTorch1 13 使用Nvidia RTX A4000开始炼丹之旅 前言 这个双十一 RTX3090矿卡反倒是涨价了 RTX3090Ti当然也涨价了 只好从x宝搞一只工包丽台RTX A40
  • QScintilla应用(1) 安装及简介

    相关网址 下载地址 在线文档 1 下载并解压 将下载的压缩包解压之后 得到以下目录结构 目录结构含义如下 目录名 用途 Qt4Qt5 编译文件夹 生成对应的DLL文件 designer Qt4Qt5 相关的设计师插件的编译文件夹 examp
  • C++ DLUT 上机作业(一)

    文章目录 C DLUT 上机作业 一 1 定义一个分数类如下 要求实现分数的初始化与设置 四则运算及约分以及输出等功能 并在主函数中测试 2 定义并测试日期类 Date 类包括私有数据成员 year month day 公有成员函数实现以下