【问题描述】编写函数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;
}