上大一,老师布置了一道题,内容就是:两个有理数相加(要求输入时以分数形式,输出时也以分数形式),这道题用了大概2个多小时吧(欢迎指导),废话不多说了,直接上程序:

#include

using namespace std;

class rational

{

public:

void setnumber(int n,int d);

void getnumber(int& n,int& d);

void gcd(int n,int d);

bool operator==(int)const;

rational operator+(const rational& r) const;

rational operator-(const rational& r) const;

rational operator*(const rational& r) const;

rational operator/(const rational& r) const;

private:

int numerator;

int denominator;

};

void rational::setnumber(int n,int d)

{

numerator=n;denominator=d;

}

void rational::getnumber(int& n,int& d)

{

n=numerator;d=denominator;

}

void rational::gcd(int n,int d)

{

int a,b,c;

a=n;b=d;

if(n>d)

{

do

{

c=a%b;

a=b;

b=c;

}while(c=0);

numerator=n/a;

denominator=d/a;

}

else

{

do

{

c=b%a;

b=a;

a=c;

}while(c=0);

numerator=n/b;

denominator=d/b;

}

}

istream& operator>>(istream& is,rational& r)

{

int n,d;

is>>n;

is.ignore(1);

is>>d;

r.setnumber(n,d);

return is;

}

ostream& operator<

{

int n,d;

r.getnumber(n,d);

os<

return os;

}

bool rational::operator==(int)const

{

if(denominator==0)

return true;

else

return false;

}

rational rational::operator+(const rational& r) const

{

rational temp;

temp.numerator=numerator*r.denominator+r.numerator*denominator;

temp.denominator=denominator*r.denominator;

return temp;

}

rational rational::operator-(const rational& r) const

{

rational temp;

temp.numerator=numerator*r.denominator-r.numerator*denominator;

temp.denominator=denominator*r.denominator;

return temp;

}

rational rational::operator*(const rational& r) const

{

rational temp;

temp.numerator=numerator*r.numerator;

temp.denominator=denominator*r.denominator;

return temp;

}

rational rational::operator/(const rational& r) const

{

rational temp;

temp.numerator=numerator*r.denominator;

temp.denominator=denominator*r.numerator;

return temp;

}

void main()

{

int n,d;

char ch;

rational r1;

rational r2;

rational r3;

cin>>r1;

cin>>ch;

cin>>r2;

if(r1==0||r2==0)

{

cout<

}

else

{

switch(ch)

{

case‘+‘:

r3=r1+r2;

break;

case‘-‘:

r3=r1-r2;

break;

case‘*‘:

r3=r1*r2;

break;

case‘/‘:

r3=r1/r2;

break;

default:

cout<

}

r3.getnumber(n,d);

r3.gcd(n,d);

r3.getnumber(n,d);

cout<

}

}

由于对博客不熟悉,不会发图片,就这样子了,看不懂的可以提问题。

时间: 04-06

有理数加法要简化c语言编程,两个有理数相加(要求输入时以分数形式,输出时也以分数形式)...相关推荐

  1. C语言将两个数字相加,然后将和作为链接列表返回(附完整源码)

    C语言将两个数字相加,然后将和作为链接列表返回 C语言将两个数字相加,然后将和作为链接列表返回完整源码(定义,实现,main函数测试) C语言将两个数字相加,然后将和作为链接列表返回完整源码(定义,实 ...

  2. 二维数组c语言矩阵加法,C 语言实例 – 两个矩阵相加 - C 语言基础教程

    C 语言实例 使用多维数组将两个矩阵相加. #include int main(){ int r, c, a[100][100], b[100][100], sum[100][100], i, j; ...

  3. 【C语言】编写一个程序,当输入小写字母a,输出大写字母Z,当输入小写字母b,输出大写字母Y,以此类推,当输入小写字母z,输出大写字母A。

    这个问题不仅仅是将字母转化成对应的小写或者大写字母.那我们应该怎么来解决呢,首先我们分析一下这个问题. 当输入的字母由a变为b时,对应的输出由Z编程Y,我们知道字符在内存中是以ASCII码值的形式存储 ...

  4. c语言编程两人对战五子棋,c语言写的五子棋人与人对战

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define m 30 int main (void) { int count;//计数器算横纵行的结果 int w ...

  5. C语言编程 5.7 从键盘中输入一个英文字母,如果它是大写则转化为小写。如果它是小写则转化为大写,并将其ASCll码显示到屏幕上。

    方法一: #include <stdio.h> void main() {         char ch; printf("请输入字母"); ch=getchar() ...

  6. c语言编程存款问题,c程序问题输入存款金额money存期yea...

    2016-11-16 19:23最佳答案 main1().运价计费尾数四舍五入;stdio;5,输入行驶里程与等待时间;);3; case 2,如果带返回值这是使用前的定义或者声明;).\,输出时保留 ...

  7. c语言编程 0-6的数字对应星期,输入一个数字0~6 用中英文显示星期几 如何用vb编程...

    满意答案 stivr 推荐于 2017.09.28 采纳率:41%    等级:12 已帮助:28014人 新建VB工程,添加一个Text1和一个Command1,然后复制以下代码: Private ...

  8. c语言16进制按10进制输出,C语言编程:写一个函数,输入一个16进制数,输出相应的10进制数。...

    满意答案 chengexin 2013.05.27 采纳率:59%    等级:11 已帮助:10599人 #include #include #include #define N 1000 char ...

  9. C语言编程:求水仙花数。输入一个正整数n,计算n位水仙花数。

    /*求水仙花数.输入一个正整数n,计算n位水仙花数.*/ #include<stdio.h> //编译预处理命令int mypow (int x, int n); //声明自己的幂函数in ...

最新文章

  1. 【Java】排序算法 之 【归并排序】 总结
  2. 首个获得FDA批准的脑机接口设备:“突破性”脑机接口设备用于造福人类
  3. 点击弹窗 input直接是待输入状态_第六课:你知道如何用两行代码做个弹窗吗?看这里...
  4. 中object转为list集合_java基础集合小结
  5. jq 地区(省市县区)联动菜单
  6. Know more about commit
  7. 《统一沟通-微软-技巧》-14-Exchange 2010 With SP1-2-UM Integration-1
  8. jQuery杂项进阶(四)
  9. 网易云音乐的算法有什么特点_当算法设计音乐厅时会发生什么?
  10. jquery 逗号分割截取字符串_Python中常用的8种字符串操作方法
  11. termux 开启 sshd
  12. 手把手教你搭建LyncServer2013之发布Office Web App服务器(十二)
  13. Java中继承方法的使用,以及使用方法的注意事项,继承方法重写的理解,白话文详解,简单易理解
  14. js调用摄像头拍照,js调用摄像头在线拍照,js调用电脑摄像头拍照
  15. 局域网打印机怎么连接_苹果手机怎么连打印机?苹果系统怎么连接网络打印机?一看就会...
  16. android 版本选择,谷歌服务框架版本如何选择 我该下载哪个版本解析
  17. C语言使用栈和队列实现停车场管理
  18. Android 11.0 自定义仿小米全面屏手势导航左右手势滑动返回UI效果
  19. JAVA课程设计(小游戏贪吃蛇)完整源码附素材(二)
  20. C++ 机房预约系统

热门文章

  1. 【Fusion360】常用快捷键和技巧
  2. Linux 查看用户操作记录
  3. Cents XAMPP/LAMP phpmyadmin Access Denied
  4. winpython,安装与使用(anaconda)
  5. 给你一台小车车,怎么让它自动驾驶起来?
  6. linux的spawn权限不足,linux expect, spawn自动登录
  7. 动漫人物身体绘画教程,超棒的简化教学
  8. NVIDIA Jetson AGX Xavier主机刷机与SSD安装
  9. 专利申请-周期及状态
  10. 华为 android 安全,华为 EMUI/Magic UI 安全更新 2020-5