當前位置:編程學習大全網 - 編程語言 - C語言:分數的計算

C語言:分數的計算

代碼如下 供參考

#include?<stdio.h>

struct?Fraction

{

int?a,b,s;

};

struct?Fraction?Add(struct?Fraction?x,struct?Fraction?y);

struct?Fraction?Sub(struct?Fraction?x,struct?Fraction?y);

int?gcd(int?a,?int?b)

{

while?(a?!=?b)

{

if?(a?>?b)

{

a?-=?b;

}

else

{

b?-=?a;

}

}

return?a;

}

void?mini(struct?Fraction?*?a)

{

int?g;

if(a->a?==?0)?

{

a->b?=?1;

return?;

}

g?=?gcd(a->a,?a->b);

a->a/=g;

a->b/=g;

}

struct?Fraction?Add(struct?Fraction?x,struct?Fraction?y)

{

struct?Fraction?r;

if(x.s!=y.s)

{

if(x.s?==?1)?

{

y.s?=?1;

return?Sub(x,?y);

}

else

{

x.s?=?1;

return?Sub(y,?x);

}

}

r.s?=?x.s;

r.b?=?x.b*y.b;

r.a?=?x.a*y.b?+?x.b*y.a;

mini(&r);

return?r;

}

struct?Fraction?Sub(struct?Fraction?x,struct?Fraction?y)

{

struct?Fraction?r;

if(x.s?!=?y.s)

{

if(x.s?==?1)?

{

y.s?=?1;

return?Add(x,?y);

}

else

{

x.s?=?1;

r?=?Add(x,?y);

r.s?=?-1;

return?r;

}

}

r.s?=?x.s;

r.b?=?x.b*y.b;

r.a?=?x.a*y.b?-?x.b*y.a;

if(r.a?<?0)

{

r.s?*=?-1;

r.a?*=?-1;

}

mini(&r);

return?r;

}

void?Display(struct?Fraction?a)

{

if(a.s?==?1)?printf("+");

else?printf("-");

printf("%d/%d\n",?a.a,?a.b);

}

int?main()

{

struct?Fraction?Add(struct?Fraction?x,struct?Fraction?y);

struct?Fraction?Sub(struct?Fraction?x,struct?Fraction?y);

struct?Fraction?f1={1,2,1},f2={3,4,1},f3;

f3=Add(f1,f2);

printf("\n兩個分數相加的結果為:");Display(f3);

f3=Sub(f1,f2);

printf("\n兩個分數相減的結果為:");Display(f3);

return?0;

}

  • 上一篇:大家說壹下計算機等級考試是三級網絡技術簡單還是數據庫簡單,哪個記憶得多,哪個容易考過啊,謝謝!
  • 下一篇:買什麽筆記本比較好?
  • copyright 2024編程學習大全網