C语言问题。弄出的程序不运行。。求大虾找下问题。。
#include<stdio.h>main(){inta,b,c,d,e,f,g,h,m,n,r,x1,y1,x2,x3,x4,y2,y3,y4;charop;scanf...
#include<stdio.h>
main()
{
int a,b,c,d,e,f,g,h,m,n,r,x1,y1,x2,x3,x4,y2,y3,y4;
char op;
scanf("%d/%d%c%d/%d",&a,&b,&op,&c,&d);
e=a*d+b*c;
f=b*d;
g=a*d-b*c;
h=a*c;
m=a*d;
n=b*c;
y1=f;
x1=e;
x2=g;
y2=h;
x3=h;
y3=f;
x4=m;
y4=n;
switch(op)
{
case'+':
while(r!=0)
{
r=f%e;f=e;e=r;
}
e=x1/e;
f=y1/e;
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,e,f);break;
case'-':
while(r!=0)
{
r=f%g;f=g;g=r;
}
g=x2/g;
f=y2/g;
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,g,f);break;
case'*':
while(r!=0)
{
r=f%h;f=h;h=r;
}
h=x3/h;
f=y3/h;
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,h,f);break;
case'/':
while(r!=0)
{
r=n%m;n=m;m=r;
}
m=x4/m;
n=y4/m;
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,m,n);break;
}
}
第一位大哥说得不行啊,,,我要实现分数如1/3+2/5=?的四则运算。。并以真分数输出, 展开
main()
{
int a,b,c,d,e,f,g,h,m,n,r,x1,y1,x2,x3,x4,y2,y3,y4;
char op;
scanf("%d/%d%c%d/%d",&a,&b,&op,&c,&d);
e=a*d+b*c;
f=b*d;
g=a*d-b*c;
h=a*c;
m=a*d;
n=b*c;
y1=f;
x1=e;
x2=g;
y2=h;
x3=h;
y3=f;
x4=m;
y4=n;
switch(op)
{
case'+':
while(r!=0)
{
r=f%e;f=e;e=r;
}
e=x1/e;
f=y1/e;
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,e,f);break;
case'-':
while(r!=0)
{
r=f%g;f=g;g=r;
}
g=x2/g;
f=y2/g;
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,g,f);break;
case'*':
while(r!=0)
{
r=f%h;f=h;h=r;
}
h=x3/h;
f=y3/h;
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,h,f);break;
case'/':
while(r!=0)
{
r=n%m;n=m;m=r;
}
m=x4/m;
n=y4/m;
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,m,n);break;
}
}
第一位大哥说得不行啊,,,我要实现分数如1/3+2/5=?的四则运算。。并以真分数输出, 展开
3个回答
展开全部
#include<stdio.h>
int gcd(int a,int b)
{
int i= a<b?a:b;
while(a%i!=0 || b%i!=0)
i--;
return i;
}
int huajian(int& e,int& f)
{
int temp=gcd(e,f);
e/=temp;
f/=temp;
}
int main()
{
int a,b,c,d,e,f;
int temp;
char op;
scanf("%d/%d%c%d/%d",&a,&b,&op,&c,&d);
if(b==0 || d==0)
return 0;
switch(op)
{
case'+':
e=a*d+b*c;
f=b*d;
huajian(e,f);
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,e,f);
break;
case '-':
e=a*d-b*c;
f=b*d;
huajian(e,f);
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,e,f);
break;
case'*':
e=a*c;
f=b*d;
huajian(e,f);
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,e,f);
break;
case'/':
e=a*d;
f=b*c;
huajian(e,f);
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,e,f);
break;
}
getchar();
}
int gcd(int a,int b)
{
int i= a<b?a:b;
while(a%i!=0 || b%i!=0)
i--;
return i;
}
int huajian(int& e,int& f)
{
int temp=gcd(e,f);
e/=temp;
f/=temp;
}
int main()
{
int a,b,c,d,e,f;
int temp;
char op;
scanf("%d/%d%c%d/%d",&a,&b,&op,&c,&d);
if(b==0 || d==0)
return 0;
switch(op)
{
case'+':
e=a*d+b*c;
f=b*d;
huajian(e,f);
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,e,f);
break;
case '-':
e=a*d-b*c;
f=b*d;
huajian(e,f);
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,e,f);
break;
case'*':
e=a*c;
f=b*d;
huajian(e,f);
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,e,f);
break;
case'/':
e=a*d;
f=b*c;
huajian(e,f);
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,e,f);
break;
}
getchar();
}
展开全部
case'+': 改成case 数值:(即+的asc码值)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char op,tmp1,tmp2;//理解下scanf,然后要注意使用%c会产生的问题,
//空格,回车也是字符,会被%c读到的
scanf("%d%c%d%c%d%c%d",&a,&tmp1,&b,&op,&c,&tmp2,&d);//此处修改
case '+':
while(r!=0)
{//r的初始化呢?
//此处应该求f,e的最大公约数。那么要考虑到f,e哪个更大呢?
//再加上前面的修改,就可以得出结果。你应该会改吧,不会再问我
r=f%e;f=e;e=r;
}
e=x1/e;
f=y1/e;
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,e,f);break;
//空格,回车也是字符,会被%c读到的
scanf("%d%c%d%c%d%c%d",&a,&tmp1,&b,&op,&c,&tmp2,&d);//此处修改
case '+':
while(r!=0)
{//r的初始化呢?
//此处应该求f,e的最大公约数。那么要考虑到f,e哪个更大呢?
//再加上前面的修改,就可以得出结果。你应该会改吧,不会再问我
r=f%e;f=e;e=r;
}
e=x1/e;
f=y1/e;
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,e,f);break;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询