首页 > 电脑

c语言问题

更新时间2018-11-09 22:55:21

oj平台的问题

给你2个分数,求他们的和,并要求和为最简形式。


 Input



输入有多组测试数据,每组包含四个正整数a,b,c,d(0<a,b,c,d<1000),表示两个分数a/b 和 c/d。


 Output



对于每组测试数据,输出两个整数e和f,表示a/b + c/d的最简化结果是e/f,每组输出占一行。


 Sample Input


1 2 1 3
4 3 2 3


 Sample Output


5 6
2 1

我的代码:

#include<stdio.h>

int main()

int a,b,c,d,e,f,i;

 while(~scanf("%d %d %d %d",&a,&b,&c,&d))

 {

  e=a*b+c*d; 

 f=b*d;  

if(e<f) 

 {i=e;} 

 if(e==f)

{printf("%d %d ",e/e,f/f);continue;} 

 if(e>f)  {i=f;} 

while(e%i!=0&&f%i!=0)

 {  i--; }  

  printf("%d %d ",e/i,f/i);

 }

return 0;

}

算法有什么错?使得我在输入1 2 1 3是会得出1 1的输出?

求解
c语言问题


你的

while(e%i!=0&&f%i!=0)

不正确,应该是

while(e%i!=0||f%i!=0)

另外,你的

printf("%d %d ",e/e,f/f);

直接用

printf("1 1 ");

就可以了

相关标签:c语言

上一篇:vivox21ia有快速充电功能吗

下一篇:电脑换什么CPU