當前位置:編程學習大全網 - 編程軟體 - 如何在c語言中實現分數相加,以分數形式輸出,並化為最簡

如何在c語言中實現分數相加,以分數形式輸出,並化為最簡

完整的C程序:

#include?"stdio.h"

/*?分數結構?*/

typedef?struct

{

int?numerator; /*?分子?*/

int?denominator; /*?分母?*/

}?Fraction;

int?GCD(int?a,int?b);

int?LCM(int?a,int?b);

Fraction?Add(Fraction?f1,?Fraction?f2);

void?main()

{

Fraction?f1,?f2,?f3;

f1.numerator?=?1;

f1.denominator?=?3;

f2.numerator?=?1;

f2.denominator?=?6;

f3?=?Add(f1,?f2);

printf("%d/%d?+?%d/%d?=?%d/%d\n",?f1.numerator,?f1.denominator,?f2.numerator,?f2.denominator,?f3.numerator,?f3.denominator);

}

/*?返回兩個分數相加的結果?*/

Fraction?Add(Fraction?f1,?Fraction?f2)

{

Fraction?retValue;

int?lcm?=?LCM(f1.denominator,?f2.denominator); /*?計算最小公倍數?*/

int?gcd;

retValue.denominator?=?lcm;

retValue.numerator?=?f1.numerator?*?lcm?/?f1.denominator?+?f2.numerator?*?lcm?/?f2.denominator;

gcd?=?GCD(retValue.numerator,?retValue.denominator);

retValue.numerator?/=?gcd;

retValue.denominator?/=?gcd;

return?retValue;

}

/*?返回兩個整數的最大公約數?*/

int?GCD(int?a,int?b)

{

int?i,temp_gcd;

for(i=a;i>=1;i--)

{

if(a%i==0)

{

if(b%i==0)

{

temp_gcd=i;

return?temp_gcd;

}

}

}

}

/*?返回兩個整數的最小公倍數?*/

int?LCM(int?a,int?b)

{

int?temp_lcm;

temp_lcm?=?a?*?b?/?GCD(a,b);

return?temp_lcm;

}

運行測試:

  • 上一篇:excel輸入名字出彩票號碼怎麽回事
  • 下一篇:C# 編程 dt.rows[i] 如何反射出DataTable中行的屬性和屬性對應的值
  • copyright 2024編程學習大全網