更新时间2018-11-15 17:19:54
因为只学了很少的东西,网上搜的都用了见都没见过的函数,就只有来问一下了。
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int x,y,m,n,xm,yn,i;
scanf ("%d/%d %d/%d",&x,&y,&m,&n);
xm=x*n+m*y;
yn=y*n;
if(xm<=yn)
{
for(i=xm;i>=1;i--)
{
if((yn%i==0)&&(xm%i==0))
printf("%d/%d",xm/i,yn/i);
break;
}
}
else
{
for(i=xm;i>=1;i--)
{
if((yn%i==0)&&(xm%i==0))
printf("%d/%d",xm/i,yn/i);
break;
}
}
return 0;
}
我是打算直接求出通分之后的式子,再穷举法求出最大公约数
这里奇怪的就是,去掉break的话只是无法化简,而加上break就运算错误了
这个与函数无关,与你的逻辑有关
初学C/C++,尽量不要省{}
你要加上一对{}就可以了(两处)
if((yn%i==0)&&(xm%i==0))
{
printf("%d/%d",xm/i,yn/i);
break;
}
...
if((yn%i==0)&&(xm%i==0))
{
printf("%d/%d",xm/i,yn/i);
break;
}
你的设置不对啊