读书人

可计算分数加减乘除的代码

发布时间: 2012-04-24 14:15:38 作者: rapoo

求一个可计算分数加减乘除的代码
int js (int a,int b,char ch,int c,int d)
{
int x,y,r,z,w;
x=a*d+b*c;
y=b*d;
r=x%y;
z=x;
w=y;
if(r!=0)
{
z=w;
w=r;
r=z%w;
}
else
{
printf("%d/%d\n",x/w,y/w);
}
return 0;
}
这是我写的如下,运行不出结果啊!!!!!~~~求解释求解释!!

[解决办法]
以下代码已验证

C/C++ code
int zg(int x, int y)   //求最大公约数{    int temp = x < y ? x : y;    int flag;    for (int i = 1; i <= temp; i++)    {        if (x%i == 0 && y%i == 0)        {            flag = i;        }    }    return flag;}//a 第一个数的分子//b 第一个数的分母//c 第二个数的分子//d 第二个数的分母int js (int a, int b, int c, int d, char ch){    int x, y , m, n;    int iResult;    if (ch == '+')    {        x = a * d;        y = b * d;        m = c * b;        n = d * b;         iResult =  (x + m)/y;        int i = zg(x + m, y);                printf("%d/%d", (x + m)/i, y/i);    }    else if (ch == '-')    {        x = a * d;        y = b * d;        m = c * b;        n = d * b;          iResult = (x - m)/y;        int i = zg(x - m > 0 ? x - m : m - x, y);                printf("%d/%d", (x - m)/i, y/i);    }    else if (ch == '*')    {        iResult = (a * c)/(b * d);        int i = zg(a * c, b * d);                printf("%d/%d", (a * c)/i, (b * d)/i);    }    else if (ch == '/')    {        iResult = (a * d)/(b * c);        int i = zg(a * d, b * c);                printf("%d/%d", (a * d)/i, (b * c)/i);    }        return 0;} 

读书人网 >C语言

热点推荐