c语言问题 - 爱问答

(爱问答)

c语言问题

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语言

下一篇:电脑换什么CPU

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

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?