#include<stdio.h>
int main()
{
int a,b,c,d;
int k;
int f(int,int);
for(;;)
{
printf("\n\n\n\n\n\n\n\t\t\t请输入第一个分数的分子分母,逗号隔开。\n\t\t\t\t\t");
scanf("%d,%d",&a,&b);
printf("\t\t\t请输入第二个分数的分子分母,逗号隔开。\n\t\t\t\t\t");
scanf("%d,%d",&c,&d);
if(b!=0 && d!=0)
{
if(a*c == b*d) /* 乘 */
{
printf("\t\t\t\t%d/%d * %d/%d = 1\n",a,b,c,d);
}
else if(a*c == 0)
{
printf("\t\t\t\t%d/%d * %d/%d = 0\n",a,b,c,d);
}
else if(a*c % b*d ==0)
{
printf("\t\t\t\t%d/%d * %d/%d = %d\n",a,b,c,d,(a*c)/(b*d) );
}
else
{
printf("\t\t\t\t%d/%d * %d/%d = %d/%d\n",a,b,c,d,a*c/f(a*c,b*d),b*d/f(a*c,b*d));
}
if(a*d == b*c) /* 除 */
{
printf("\t\t\t\t%d/%d / %d/%d = 1\n",a,b,c,d);
}
else if(a*d == 0)
{
printf("\t\t\t\t%d/%d / %d/%d = 0\n",a,b,c,d);
}
else if(a*d % b*c ==0)
{
printf("\t\t\t\t%d/%d * %d/%d = %d\n",a,b,c,d,(a*d)/(b*c) );
}
else
{
printf("\t\t\t\t%d/%d / %d/%d = %d/%d\n",a,b,c,d,a*d/f(a*d,b*c),b*c/f(a*d,b*c));
}
if(a*d+c*b == b*d) /* 加 */
{
printf("\t\t\t\t%d/%d + %d/%d = 1\n",a,b,c,d);
}
else if(a*d+c*b == 0)
{
printf("\t\t\t\t%d/%d + %d/%d = 0\n",a,b,c,d);
}
else if((a*d+c*b) % (b*d) == 0)
{
printf("\t\t\t\t%d/%d + %d/%d = %d\n",a,b,c,d,(a*d+c*b) / (b*d));
}
else
{
printf("\t\t\t\t%d/%d + %d/%d = %d/%d\n",a,b,c,d,(a*d+c*b)/f(a*d+c*b,b*d),b*d/f(a*d+c*b,b*d));
}
if(a*d-c*b == b*d) /* 减 */
{
printf("\t\t\t\t%d/%d - %d/%d = 1\n",a,b,c,d);
}
else if(a*d-c*b == 0)
{
printf("\t\t\t\t%d/%d - %d/%d = 0\n",a,b,c,d);
}
else if((a*d-c*b) % b*d == 0)
{
printf("\t\t\t\t%d/%d - %d/%d = %d\n",a,b,c,d,(a*d-c*b) / b*d);
}
else
{
printf("\t\t\t\t%d/%d - %d/%d = %d/%d\n",a,b,c,d,(a*d-c*b)/f(a*d-c*b,b*d),b*d/f(a*d-c*b,b*d));
}
fflush(stdin);
}
else
{
printf("\t\t\t\t 输入有误!");
}
}
fflush(stdin);
return 0;
}
int f(int x,int y) /* 求结果的分子分母的最大公因数 */
{
int a,b,t;
if(x>y)
{
t=x;
x=y;
y=t;
}
a=x;
b=y;
while(b!=0)
{
t=a%b;
a=b;
b=t;
}
return a;
}
Bug 1:不懂怎么判断是否输入数字(两位以上);