7-2 有理数比较 (10分)
本题要求编写程序,比较两个有理数的大小。
输入格式:
输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照“a1/b1 关系符 a2/b2”的格式输出两个有理数的关系。其中“>”表示“大于”,“<”表示“小于”,“=”表示“等于”。
输入样例1: 1/2 3/4
输出样例1: 1/2 < 3/4
输入样例2: 6/8 3/4 输出样例2: 6/8 = 3/4
#include<stdio.h>
struct rational
{
int a;
char c;
int b;
}m1,m2;
int max(int a,int b)
{
int i,m=b,n=a;
while(m!=0)
{
i=n%m;
n=m;
m=i;
}
i=a*b/n;
return i;
}
int main()
{
struct rational m1,m2;
int i,j;
scanf("%d%c%d %d%c%d",&m1.a,&m1.c,&m1.b,&m2.a,&m2.c,&m2.b);
i=(max(m1.b,m2.b))/m1.b;
j=(max(m1.b,m2.b))/m2.b;
if(m1.a*i>m2.a*j)
{
printf("%d%c%d > %d%c%d",m1.a,m1.c,m1.b,m2.a,m2.c,m2.b);
}
else if(m1.a*i==m2.a*j)
{
printf("%d%c%d = %d%c%d",m1.a,m1.c,m1.b,m2.a,m2.c,m2.b);
}
else if(m1.a*i<m2.a*j)
{
printf("%d%c%d < %d%c%d",m1.a,m1.c,m1.b,m2.a,m2.c,m2.b);
}
return 0;
}
做完以后发现自己把这道题做的有点麻烦了,给两个分数分母化为一致在比较分子的大小,看到有的人直接将两个分数处理成小数。提供一种不同的做法,仅供参考。
做本题时编译时总有错误,问度娘以后本以为是小于号大于号无法打印需要用转义字符,其实问题非常离谱,就是printf括号里多了一个“。
标签:有理数,int,d%,PTA,m1,c%,m2,比较 来源: https://blog.csdn.net/m0_53288587/article/details/112094159
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。