C语言 程序算出的答案也对 就是提交上去一直wrong answer 下面是题目和我的程序 求大神解答
给你两个分数,请计算两者和及差。输入第一行是一个整数K,表示样例的个数。以后每行一个样例,每行4个正整数,a、b、c、d,即计算分数a/b与c/d的和、差。4个整数都不超...
给你两个分数,请计算两者和及差。 输入 第一行是一个整数K,表示样例的个数。以后每行一个样例,每行4个正整数,a、b、c、d,即计算分数a/b与c/d的和、差。4个整数都不超过10,000。 输出 每行输出一个样例的结果,先输出和,后输出差。如果结果的值为整数,那么只需要输出整数,如果结果的值为分数,需要输出x/y的形式,并保证x,y互质。
Sample Input
3
1 2 1 2
2 3 1 3
1 8 5 8
Sample Output
1 0
1 1/3
3/4 -1/2
#include <stdio.h>
#include <math.h>
int main()
{
int n,a,b,c,d;
int i,j;
int e,f,g,h,k,l,m,p,x,y;
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%d %d %d %d",&a,&b,&c,&d);
e=a*d+c*b;
f=a*d-c*b;
h=b*d;
if (e==0) {printf("0 ");}
else {if (e%(b*d)==0) {g=e/(b*d); printf("%d ",g);}
else{ while (e%h!=0)
{
x=e%h;
e=h;
h=x;
}
l=(a*d+c*b)/h;
m=b*d/h;
if (l*m<0) {l=sqrt(l*l); m=sqrt(m*m); printf("-%d/%d ",l,m); }
else {l=sqrt(l*l); m=sqrt(m*m); printf("%d/%d ",l,m);}}}
h=b*d;
if (f==0) {printf("0\n");}
else {if (f%(b*d)==0){ g=f/(b*d); printf("%d\n",g);}
else {while (f%h!=0)
{
y=f%h;
f=h;
h=y;
}
k=(a*d-c*b)/h;
p=b*d/h;
if (k*p<0) {k=sqrt(k*k); p=sqrt(p*p);printf("-%d/%d\n",k,p);}
else {k=sqrt(k*k); p=sqrt(p*p); printf("%d/%d\n",k,p);}}}
}
return 0;
} 展开
Sample Input
3
1 2 1 2
2 3 1 3
1 8 5 8
Sample Output
1 0
1 1/3
3/4 -1/2
#include <stdio.h>
#include <math.h>
int main()
{
int n,a,b,c,d;
int i,j;
int e,f,g,h,k,l,m,p,x,y;
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%d %d %d %d",&a,&b,&c,&d);
e=a*d+c*b;
f=a*d-c*b;
h=b*d;
if (e==0) {printf("0 ");}
else {if (e%(b*d)==0) {g=e/(b*d); printf("%d ",g);}
else{ while (e%h!=0)
{
x=e%h;
e=h;
h=x;
}
l=(a*d+c*b)/h;
m=b*d/h;
if (l*m<0) {l=sqrt(l*l); m=sqrt(m*m); printf("-%d/%d ",l,m); }
else {l=sqrt(l*l); m=sqrt(m*m); printf("%d/%d ",l,m);}}}
h=b*d;
if (f==0) {printf("0\n");}
else {if (f%(b*d)==0){ g=f/(b*d); printf("%d\n",g);}
else {while (f%h!=0)
{
y=f%h;
f=h;
h=y;
}
k=(a*d-c*b)/h;
p=b*d/h;
if (k*p<0) {k=sqrt(k*k); p=sqrt(p*p);printf("-%d/%d\n",k,p);}
else {k=sqrt(k*k); p=sqrt(p*p); printf("%d/%d\n",k,p);}}}
}
return 0;
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询