12 14日修改:该代码对于分数的判断不够完整存在一定的 防御性编程问题 事后加以修改 修改后的代码 请查看
分数类型加减乘除的实现

思路:
1.初始化
2.分数的显示
3.分数化简
4.加减乘除实现
看似麻烦实际上最本质的操作就是 求最大公约数和最小公倍数
代码实现

#include <stdio.h>int gcd(int a,int b)//求最大公约数
{int tmp;int r;if(a<b){tmp=a;a=b;b=tmp;}while(b!=0){r=a%b;a=b;b=r;}return a;
}
int lcm(int a,int b)//求最小公倍数
{int Lcm,tmp;if(b<a){tmp=b;b=a;a=tmp;}else if(b==0)Lcm=a;else if(a==0)Lcm=b;elseLcm=(a*b)/gcd(a,b);return Lcm;
}
void SimpFraction(int a,int b)
{printf("the fraction in lowest term is %d/%d \n",a/gcd(a,b),b/gcd(a,b));}
void AddFraction(int a,int b,int c, int d)//加法
{int Snumerator;int Sdenominator;int Lcm;Lcm=lcm(b,d);if((b==d)){Sdenominator=d;Snumerator=a+c;}else if(Lcm==b||Lcm==d){Sdenominator=Lcm;if(b<d)Snumerator=(a*b)+c;if(d<b)Snumerator=(c*d)+a;}else{Sdenominator=Lcm;Snumerator=a*(Lcm/b)+c*(Lcm/d);}printf("分数相加得:%d/%d \n",Snumerator/gcd(Snumerator,Sdenominator),Sdenominator/gcd(Snumerator,Sdenominator));}
void SubFraction(int a,int b,int c,int d)//减法
{int Snumerator;int Sdenominator;int Lcm;Lcm=lcm(b,d);if((b==d)){Sdenominator=d;Snumerator=a-c;}else if(Lcm==b||Lcm==d){Sdenominator=Lcm;if(b<d)Snumerator=(a*b)-c;if(d<b)Snumerator=(c*d)-a;}else{Sdenominator=Lcm;Snumerator=a*(Lcm/b)-c*(Lcm/d);}printf("分数相减得:%d/%d \n",Snumerator/gcd(Snumerator,Sdenominator),Sdenominator/gcd(Snumerator,Sdenominator));
}
void MulFraction(int a,int b,int c,int d)//乘法
{int Snumerator;int Sdenominator;Sdenominator=b*d;Snumerator=a*c;if(Sdenominator==0)printf("分数无意义 \n");else if(Snumerator==0)printf("分数相乘得0 \n");elseprintf("分数相乘得:%d/%d \n",Snumerator/gcd(Snumerator,Sdenominator),Sdenominator/gcd(Snumerator,Sdenominator));
}
void DivFraction(int a,int b,int c,int d)//除法
{int Snumerator;int Sdenominator;Sdenominator=b*c;Snumerator=a*d;if(Sdenominator==0)printf("分数无意义 \n");else if(Snumerator==0)printf("分数相除得0 \n");elseprintf("分数相除得:%d/%d \n",Snumerator/gcd(Snumerator,Sdenominator),Sdenominator/gcd(Snumerator,Sdenominator));}void main()
{int a,b,c,d;printf("please enter two fractions'numerator and denominator:");scanf("%d,%d,%d,%d",&a,&b,&c,&d);if(a==0&&b==0&&c==0&&d==0)printf("error");SimpFraction(a,b);SimpFraction(c,d);AddFraction(a,b,c,d);SubFraction(a,b,c,d);MulFraction(a,b,c,d);DivFraction(a,b,c,d);
}

测试结果 :(切记 测试输入的时候 一定要输入"," 不然输入","后续加减乘除运算均为计算错误)

please enter two fractions'numerator and denominator:114,114514,514,114514
the fraction in lowest term is 57/57257
the fraction in lowest term is 257/57257
分数相加得:314/57257
分数相减得:200/-57257
分数相乘得:14649/57138577
分数相除得:57/257
Press any key to continueplease enter two fractions'numerator and denominator:615,1722,1107,1923
the fraction in lowest term is 5/14
the fraction in lowest term is 369/641
分数相加得:8371/8974
分数相减得:1961/-8974
分数相乘得:1845/8974
分数相除得:3205/5166
Press any key to continueplease enter two fractions'numerator and denominator:1,0,2,7
the fraction in lowest term is 1/0
the fraction in lowest term is 2/7
分数相加得:2/7
分数相减得:-2/7
分数无意义
分数无意义
Press any key to continueplease enter two fractions'numerator and denominator:0,22,78,45
the fraction in lowest term is 0/1
the fraction in lowest term is 26/15
分数相加得:26/15
分数相减得:-26/15
分数相乘得0
分数相除得0
Press any key to continue

【c】分数类型的定义 c语言分数类型加减乘除的实现相关推荐

  1. C语言bool类型变量命名,bool类型怎么用(c语言bool类型 怎么用)

    bool类型怎么用(c语言bool类型 怎么用) 2020-06-23 01:59:07 共10个回答 什么语言的?bool和其他的一样,比如int,只是bool只有两个值,true或者false.b ...

  2. struct类型重定义 不同的基类型_C++学习大纲:联合类型

    C++联合类型 联合类型(又称共同体类型),一种能够表示多种数据(类型可以相同可以不同,变量名字不同就行)的数据类型. 1. 联合类型的定义 union {}; 与结构类型类似,只是把struct 换 ...

  3. c语言枚举类型编程,浅析C语言枚举类型

    在学习C语言的结构体过程中,我们接触到比较重要的内容要数枚举类型这一环了.那么到底什么是C语言中的枚举类型呢?它在我们编写程序时又起着什么样的作用呢?下面课课家小编就为大家简单介绍C语言中的枚举类型和 ...

  4. c语言怎么用枚举类型的字符串,c语言枚举类型的用法

    枚举类型就相当于助记符,帮助程序员记忆的.比如现在要画一张地图,用到红黄蓝绿四种颜色.为了存储方便,我们规定0=红,1=黄,2=蓝,3=绿.但是当编程到某一阶段时,程序员可能忘记了哪个数字具体对应哪种 ...

  5. c语言布尔变量定义,C语言布尔类型介绍 C语言标准(C89)没有定义布尔类型,如果你使用true...

    10的叠乘值为 3628800 输出结果为: //导入 stdbool.h 来使用布尔类型#include #include //计算n!,n的值在main中定义int main(void){ int ...

  6. struct类型重定义 不同的基类型_汇总贴:STEP7的复杂数据类型有哪些?

    复杂数据类型是由基本数据类型通过一定的规则,有机结合在一起,形成的新的.复杂数据类型,STEP7中定义了以下几种复合数据类型: 一.数组ARRAY ARRAY表示由一个相同数据类型的数据组合在一起,形 ...

  7. struct类型重定义 不同的基类型_C++构造数据类型

    结构体(struct) 定义: 结构体是一个数据类型,是由多个不同类型的数据组成的数据集合.关键字为:struct . 优点: 大大减少程序代码的离散性,使程序代码阅读更加符合逻辑. 语法: stru ...

  8. c语言中字符型变量的类型标识符是,C语言中类型标识符有哪些

    满意答案 564vlaci 2015.10.29 采纳率:48%    等级:12 已帮助:6409人 C语言中的标识符 1) 标识符由字母.数字.下划线"_"组成,并且首字母不能 ...

  9. java 运动会分数统计_数据结构题目-运动会分数统计

    题目描述 在很多的电视大赛中,通常当选手表演结束后,现场观众通过手中的按键对参赛选手进行投票,然后对选手获得的票数进行统计,从高到低进行降序排列,从而自动产生冠军.亚军和季军.现在要求编写一程序模拟实 ...

最新文章

  1. python实现全景图片拼接
  2. 【Collection、泛型】
  3. rust(25)-皮尔逊相关系数
  4. js获取时间段内属于星期一的日期们
  5. Katas编写的Java教程:Mars Rover
  6. 不同工作组能访问吗_「长笛众测」你能听出3K-9W不同价位长笛的区别吗?
  7. ERROR ITMS-90206:Invalid Bundle. The bundle at ‘xx.app/xx/xx.framework' contan
  8. 中国计算机设计大赛国二省一比赛总结——新冠病毒管理系统
  9. Euraka启动记录
  10. 使用IDA对ipa进行反编译
  11. 厦门大学计算机专业录取分数线2019,【厦门大学:2019-2016山西省各专业录取分数线】...
  12. yilia 的html模板,Hexo搭建个人博客:yilia主题配置(七) - 自定义Subnav图标
  13. php给html标签添加样式,html button标签的样式怎么设置?html button标签的样式介绍...
  14. redhat linux 禁用网卡,RedHat Linux下防火墙配置技巧
  15. 【C语言上机练习题目-代码+运行结果】
  16. 鼠标API函数(windows)
  17. 算法练习(21):Frog Jump
  18. LG30刷小米系统_闲鱼300块入手小米平板1,性能居然秒杀1099的小米平板4
  19. netdata-监控mysql及tomcat插件
  20. CocosCreator 音效管理器

热门文章

  1. WIFI转串口无线传输模块,个人体会
  2. 【AAAI 2021】全部接受论文列表(五)
  3. Java实现Nginx图片上传
  4. 水文章(bushi)
  5. ipsec与服务器协议失败,IPSEC SA无法协商成功
  6. Java基础 项目实例五 简易聊天系统
  7. 北京十大办公室租赁平台,高性价比
  8. 【linux常用命令】
  9. 章节十五:项目实操:PK小游戏(3)
  10. python编写古诗_用Python实现古诗词填字游戏(一)