求一个可计算分数加减乘除的代码
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;}