C语言求分数四则运算的问题,求大神解答!!!!
#include<stdio.h>main(){inta,b,c,d,e=1,f=1,g=0,h,i;charx,y,z;scanf_s("%d%c%d%c%d%c%d"...
#include<stdio.h>
main()
{
int a, b, c, d, e=1, f=1, g = 0, h, i;
char x,y,z;
scanf_s("%d%c%d%c%d%c%d", &a,&y, &b, &x, &c,&z, &d);
switch (x)
{
case'+':e = a*d + b*c, f = b*d; break;
case'-':e = a*d - b*c, f = b*d; break;
case'*':e = a*c, f = b*d; break;
case'/':e = a*d, f = b*c; break;
}
h = e, i = f;
if (e < f)
g = e, e = f, f = g;
while (g > 0)
{
g = e%f;
e = f, f = g;
}
printf("%d%c%d%c%d%c%d=%d/%d\n", a,y, b, x, c, z,d, h / e, i / e);
}
求教大神是哪里出了问题,一运行就退出= =。
渣渣刚学C语言,只会选择与循环几个基本语句,求轻虐= =。
附上题目
在小学时我们就学习了分数的四则运算,即对两个分数进行加、减、乘、除等运算,现在我们尝试下用C语言来实现。
输入:
分数1 操作符 分数2
输出:
计算结果
要求:
计算结果使用分数表示,并且为最简化。例如结果为2/6,则被简化为1/3
测试用例 1 以文本方式显示
1/3 + 1/2↵
以文本方式显示
1/3 + 1/2 = 5/6↵ 展开
main()
{
int a, b, c, d, e=1, f=1, g = 0, h, i;
char x,y,z;
scanf_s("%d%c%d%c%d%c%d", &a,&y, &b, &x, &c,&z, &d);
switch (x)
{
case'+':e = a*d + b*c, f = b*d; break;
case'-':e = a*d - b*c, f = b*d; break;
case'*':e = a*c, f = b*d; break;
case'/':e = a*d, f = b*c; break;
}
h = e, i = f;
if (e < f)
g = e, e = f, f = g;
while (g > 0)
{
g = e%f;
e = f, f = g;
}
printf("%d%c%d%c%d%c%d=%d/%d\n", a,y, b, x, c, z,d, h / e, i / e);
}
求教大神是哪里出了问题,一运行就退出= =。
渣渣刚学C语言,只会选择与循环几个基本语句,求轻虐= =。
附上题目
在小学时我们就学习了分数的四则运算,即对两个分数进行加、减、乘、除等运算,现在我们尝试下用C语言来实现。
输入:
分数1 操作符 分数2
输出:
计算结果
要求:
计算结果使用分数表示,并且为最简化。例如结果为2/6,则被简化为1/3
测试用例 1 以文本方式显示
1/3 + 1/2↵
以文本方式显示
1/3 + 1/2 = 5/6↵ 展开
4个回答
展开全部
#include<stdio.h>
int Abc(int a,int b)
{
int m;
if(a>b)
m=a,a=b;b=m;
for(m=a;m>1;m--)
{
if(a%m==0&&b%m==0)
return m;
}
return 0;
}
main()
{
int a, b, c,d,e,f ,g, h, i;
char x;
printf("PLEAse input a*b\n");
scanf("%d%d",&a,&b);
getchar();
scanf("%c",&x);
getchar();
scanf("%d%d",&c,&d);
//printf("%d/%d%c%d/%d\n", a,b,x,c,d);
switch (x)
{
case'+':e=a*d+b*c;f=b*d; break;
case'-':e=a*d-b*c,f=b*d; break;
case'*':e=a*c, f=b*d; break;
case'/':e =a*d, f=b*c; break;
}
g=e,h=f;
i=Abc(g,h);
if(i)
{
e=g/i;
f=h/i;
}
printf("%d/%d%c%d/%d=%d/%d\n", a,b,x,c,d,e,f);
}
int Abc(int a,int b)
{
int m;
if(a>b)
m=a,a=b;b=m;
for(m=a;m>1;m--)
{
if(a%m==0&&b%m==0)
return m;
}
return 0;
}
main()
{
int a, b, c,d,e,f ,g, h, i;
char x;
printf("PLEAse input a*b\n");
scanf("%d%d",&a,&b);
getchar();
scanf("%c",&x);
getchar();
scanf("%d%d",&c,&d);
//printf("%d/%d%c%d/%d\n", a,b,x,c,d);
switch (x)
{
case'+':e=a*d+b*c;f=b*d; break;
case'-':e=a*d-b*c,f=b*d; break;
case'*':e=a*c, f=b*d; break;
case'/':e =a*d, f=b*c; break;
}
g=e,h=f;
i=Abc(g,h);
if(i)
{
e=g/i;
f=h/i;
}
printf("%d/%d%c%d/%d=%d/%d\n", a,b,x,c,d,e,f);
}
追问
还是不对,秒退
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
更多追问追答
追问
我也不想啊,题目要求输入1/2+1/3这样的
追答
你把题目亮出来看看吧,你这样写有问题
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最后加一句 getch();这样就可以按任意键退出了
追问
1/3 1�134608416=1/1↵
现在的问题是输入1/3+1/2会出现这样的东西,怎么回事= =
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请先尝试,轻摁ctrl+F5运行
更多追问追答
追问
首先VS环境ctrl+F5无效,其次我运行的开始执行(不调试),还是请看看我程序中的问题在哪里吧= =。
追答
我之前就运行过了,
你这vs crtl+f5 无效,你什么版本?
scanf_s用的略高端
可以改成scanf么?
用scanf_s的话,你的参数不对。
http://msdn.microsoft.com/zh-cn/library/vstudio/w40768et.aspx
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询