菜鸟学C
/*两个分数间的四则运算*/ #include<stdio.h>
#include<math.h>
/*子函数*/
/*这个函数将取得分数*/
void get_number(int *m,int *n,int k)
{
int a,b;
char c;
do
{printf("请输入第%d个分数(如1/2):",k);
scanf("%d %c%d",&a,&c,&b);
if(c!='/') printf("分数线输入有误,请重新输入\n");
if(b==0) printf("分母不能为0,请重新输入\n");
}
while(c!='/'||b==0);
*m=a;
*n=b;
}
/*这个函数将取得运算符*/
void get_op(char *op)
{
char m;
do
{printf("请输入运算符(+、-、*、/):");
scanf(" %c",&m);
if(m!='+'&&m!='-'&&m!='*'&&m!='/')
printf("输入有误,请重新输入\n");
}
while(m!='+'&&m!='-'&&m!='*'&&m!='/');
*op=m;
}
/*这个函数将进行约分*/
void gcd(int m,int n,int *j,int *k)
{
int a,b,c;
a=abs(m);
b=abs(n);
do
{c=a%b;
a=b;
b=c;
}
while(c!=0);
*j=m/c;
*k=n/c;
}
/*主函数*/
void main()
{
int a,b,c,d;
char op,again;
for(again='Y';again=='Y'||again=='y';scanf(" %c",&again))
{get_number(&a,&b,1);
get_op(&op);
get_number(&c,&d,2);
switch(op)
{case'+':
case'-':
a=a*d;c=c*b;b=b*d;
if(op=='+') a+=c; else a=a-c;
break;
case'*':
case'/':
if(op=='*')
{a=a*c;b=b*d;}
else {a=a*d;b=b*c;}
break;
}
gcd(a,b,&c,&d);
if(d==1)
printf("结果为:%d\n",c);
else
printf("结果为:%d/%d\n",c,d);
printf("是否继续运算?(Y/N)=>");
}
}
这是我自己写的一个两个分数间四则运算的程序,但是老是在输入完数据后出现
divide error
请问各位达人是为什么