c语言问题

日期:2018.11.09 | 分类:编程开发

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\n",e/e,f/f);continue;} 

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

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

 {  i--; }  

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

 }

return 0;

}

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

求解


https://www.teaku.com/20/1541764430216921.html

最佳回答

  • 你的

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

    不正确,应该是

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

    另外,你的

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

    直接用

    printf("1 1\n");

    就可以了