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=?的四则运算。。并以真分数输出,
展开
 我来答
Tidus_forever
2011-10-09 · TA获得超过4399个赞
知道大有可为答主
回答量:2782
采纳率:100%
帮助的人:1829万
展开全部
#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();
}
百度网友01c3d22
2011-10-09 · 超过35用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:75.3万
展开全部
case'+': 改成case 数值:(即+的asc码值)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
han43001
2011-10-09 · TA获得超过363个赞
知道小有建树答主
回答量:355
采纳率:0%
帮助的人:366万
展开全部
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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式