有理数比较
【问题描述】编写函数CompareRational(),比较两个有理数的大学,该函数的参数为两个有理数(结构体类型,包含分子分母两个整数),若第一个有理数小于第二个,返回一个负数;若相等,返回0;若第一个有理数大于第二个,则返回正数。以分数的形式输入两个有理数,输出比较结果。
【输入形式】两个有理数,分数形式,格式为:"分子/分母"
【输出形式】输入的两个有理数,中间用比较运算符连接表示其大小关系。有理数格式同上。
【样例输入】
1/2 3/4
【样例输出】
1/2<3/4
方法一用结构体实现
#include <stdio.h>
typedef struct{
int a;
char c;
int b;
}num;
int main()
{
int i=0;
double sum1,sum2;
num st[2];
for(i=0;i<2;i++)
{
scanf("%d",&st[i].a);
scanf("%c",&st[i].c);
scanf("%d",&st[i].b);
}
sum1 = st[0].a*1.0/st[0].b;
sum2 = st[1].a*1.0/st[1].b;
if(sum1>sum2) printf("%d%c%d>%d%c%d",st[0].a,st[0].c,st[0].b,st[1].a,st[1].c,st[1].b);
else if(sum1<sum2) printf("%d%c%d<%d%c%d",st[0].a,st[0].c,st[0].b,st[1].a,st[1].c,st[1].b);
else printf("%d%c%d=%d%c%d",st[0].a,st[0].c,st[0].b,st[1].a,st[1].c,st[1].b);
return 0;
}
方法二:直接暴力就完事了
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d;
char r;
cin >> a >> r >> b >> c >> r >> d;
double sum1,sum2;
sum1=a*1.0/b;
sum2=c*1.0/d;
if(sum1>sum2) printf("%d%c%d>%d%c%d",a,r,b,c,r,d);
else if(sum1<sum2) printf("%d%c%d<%d%c%d",a,r,b,c,r,d);
else printf("%d%c%d=%d%c%d",a,r,b,c,r,d);
return 0;
}