#include<stdio.h>
#include<math.h>
int gcd(int a,int b);
void print(struct rational a);
struct rational
{
int a,b;
};
struct rational add(struct rational x,struct rational y)
{
int gcdnum;
struct rational c;
c.a=x.a*y.b+x.b*y.a;
c.b=x.b*y.b;
if(c.a==0)
return c;
gcdnum=gcd(abs(c.a),abs(c.b));
c.a=c.a/gcdnum;
c.b=c.b/gcdnum;
return c;
}
int main(void)
{
struct rational a = {-2, 8 };
struct rational b = { -1, 8 };
struct rational c = add(a, b);
print(c);
return 0;
}
void print(struct rational c)
{
if(c.a==0)
printf("%d\n",c.a);
else
printf("%d/%d\n",c.a,c.b);
}
int gcd(int a,int b)
{
int tmp,tmp1;
if(a<0)
a=-a;
if(b<0)
b=-b;
if(a<b)
{
tmp=a;
a=b;
b=tmp;
}
if(a%b==0)
tmp1=b;
else
tmp1=gcd(b,a%b);
return tmp1;
}
7-2用rational结构体来完成分子分母的格式进行计算
最新推荐文章于 2021-10-13 09:05:18 发布