编写c++程序实现比较两个分数大小的功能。要求:调用函数先比较两个数的分母,分母相同比较分子;否则通分

2025-03-12 02:19:51
推荐回答(3个)
回答1:

#include
using namespace std;

typedef struct fraction//分数
{
int flag;//符号
int numerator;//分子
int denominator;//分母
};

int cmpFraction(fraction a,fraction b);

void main()
{
int rst;
fraction a,b;

cout<<"请输入分数a的分母:";
cin>>a.denominator;
cout<<"请输入分数a的分子:";
cin>>a.numerator;
cout<<"请输入分数a的符号(1或者-1):";
cin>>a.flag;
cout<<"请输入分数b的分母:";
cin>>b.denominator;
cout<<"请输入分数b的分子:";
cin>>b.numerator;
cout<<"请输入分数b的符号(1或者-1):";
cin>>b.flag;

rst=cmpFraction(a,b);
if(rst<0)
cout<<"aelse if(rst==0)
cout<<"a=b"<else
cout<<"a>b"<}

int cmpFraction(fraction a,fraction b)
{
int rst=0;
if(a.denominator==0||b.denominator==0)
{
cout<<"数据错误,无法比较!"<return 0;
}

if(a.denominator!=b.denominator)
{
a.numerator*=b.denominator;
b.numerator*=a.denominator;
}

if((a.numerator*a.flag)<(b.numerator*b.flag))
rst=-1;
else if((a.numerator*a.flag)>(b.numerator*b.flag))
rst=1;

return rst;
}

回答2:

#include
using namespace std;
int main()
{
int a,b,c,d;
void compare(int a,int b,int c,int d);
cout<<"输入两个分数:"<cin>>a>>b>>c>>d;
compare(a,b,c,d);
return 0;
}
void compare(int a,int b,int c,int d)
{
if(b==d)
{
if(a>c)
cout<'<else if(a==c)
cout<else
cout<}
else
{
if(a*d>c*b)
cout<'<else if(a*d==b*c)
cout<else
cout<}
}

回答3:

#include
using namespace std;
long long FLCM(long long x,long long y){
long long _x=x,_y=y,r;
while(_y){
r=_x%_y;
_x=_y;
_y=r;
}
return x*y/_x;
}
long long CP(int choose,long long a,long long b,long long c,long long d){
long long LCM=FLCM(b,d);
long long ar[4]={LCM/t2*t1,LCM,LCM/t4*t3,LCM};
return ar[choose-1];
}
char FRS(long long a,long long b,long long c,long long d){
if(CP(1,a,b,c,d)>CP(3,a,b,c,d))
return '>';
else if(CP(1,a,b,c,d) return '<';
else
return '=';
}
int main(){
int a,b,c,d;
printf("请输入两个分数,输入格式:分子/分母 分子/分母\n");
scanf("%i/%i %i/%i",&a,&b,&c,&d);
printf("%i/%i%c%i/%i",a,b,bdx(a,b,c,d),c,d);
return 0;
}