哈喽大家好,有没有发现,C++竟然没有提供计算分数的函数!!!
今天小编带大家实现分数计算。(+ - * / )
话不多说,直接打代码!(不用代码块可以直接复制![偷笑]我很良心吧 )
#include<bits/stdc++.h>
using namespace std;
int GCD(int m,int n) //最小公倍数函数
{
int tmp;
m=abs(m);
n=abs(n);
if(m<n)
{
tmp=m;
m=n;
n=tmp;
}
while(m%n!=0)
{
tmp=m;
m=n; //辗转相除法
n=tmp%n;
}
return n; //return除数 (较小数)
}
int main()
{
int a1,a2,b1,b2,ans1,ans2,gcd;
char op;
cout<<"分数计算器"<<endl;
cout<<"第一个数的分子:";cin>>a1;
cout<<"第一个数的分母:";cin>>a2;
cout<<"第二个数的分子:";cin>>b1;
cout<<"第二个数的分母:";cin>>b2;
cout<<"符号(+-*/):";cin>>op;
gcd=GCD(a2,b2); //找两数分母的公倍数
ans2=a2*b2/gcd; //分母计算 //通分
if(op=='+')
{
ans1=a1*(ans2/a2)+b1*(ans2/b2); //答案分母
}
else if(op=='-')
{
ans1=a1*(ans2/a2)-b1*(ans2/b2);
}
else if(op=='*')
{
ans1=a1*b1;
ans2=a2*b2;
}
else if(op=='/')
{
ans1=a1*b2;
ans2=a2*b1; //交叉×
}
else
{
ans1=0;
}
if(ans1==0)cout<<0;
else if(ans1==ans2)cout<<1; //简化
else
{
gcd=GCD(ans1,ans2); //重新找答案分子与分母公倍数
ans1=ans1/gcd;
ans2=ans2/gcd; //约分
cout<<ans1<<'|'<<ans2;
}
getchar();
return 0;
}
好啦,分数计算小编实现了。大家快去试试吧!
Point:
1.公倍数函数
2.通分约分
别忘了免费的赞哦❤
———————————————————————————————————————————
作者编辑不易,除代码外请不要转载!