如何用C语言,实现简单的分数化简

2024年11月16日 08:46
有5个网友回答
网友(1):

/* Note:Your choice is C IDE */
//如何实现简单分数的化简
#include "stdio.h"
//只要找出最大的因子就行了 辗转相除法
int gcd(int n,int m)
{
int temp,r;
//把大的数放在n里面
if(n {
temp=n;
n=m;
m=temp;
}
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
return n;
}
void main()
{
int a,b;//a是分子 b是分母
printf("please input a and b:");
scanf("%d%d",&a,&b);

printf("%d/%d",a/gcd(a,b),b/gcd(a,b));

}

求加分

网友(2):

#include
void main()
{
int m,n,mt,nt;
int r;
printf("Enter a fraction: ");
scanf("%d/%d",&m,&n);
mt=m,nt=n;
r=n%m;
while(r!=0)
{
n=m;
m=r;
r=n%m;
}
mt=mt/m,nt=nt/m;
printf("In lowest terms: %d/%d\n",mt,nt);
}

网友(3):

我顺便把代码付上: // flex.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include "stdio.h"#define ULONG unsigned longtypedef struct _NUMERATOR
{
ULONG Fraction;
ULONG Denominator;
}NUMERATOR,*PNUMERATOR;ULONG GDivisor(ULONG a,ULONG b)
{
ULONG temp;
if(a > b)
a^=b^=a^=b;
for(;b;temp=a%b,a=b,b=temp);
return a;
}ULONG LCM(ULONG a,ULONG b)
{
return a*b/GDivisor(a,b);
}void NumeratorAdd(PNUMERATOR a,PNUMERATOR b)
{
ULONG g;
a->Fraction=a->Fraction*b->Denominator+a->Denominator*b->Fraction;
a->Denominator*=b->Denominator;
g=GDivisor(a->Fraction,a->Denominator);
a->Fraction/=g,a->Denominator/=g;
}void NumeratorMul(PNUMERATOR a,PNUMERATOR b)
{
ULONG g;
a->Fraction*=b->Fraction;
a->Denominator*=b->Denominator;
g=GDivisor(a->Fraction,a->Denominator);
a->Fraction/=g,a->Denominator/=g;
}int main()
{
NUMERATOR hr={5,7};
NUMERATOR a={3,25};
NUMERATOR b={3,7}; NumeratorMul(&hr,&a);
NumeratorAdd(&hr,&b);
printf("result = %u/%u\n",hr.Fraction,hr.Denominator);
return 0;
}

网友(4):

1 输入分子分母。
2 求最大公约数。
3 分子分母均除以最大公约数。
4 输出结果。
最大公约数可以用辗转相除法计算。

网友(5):

#include void main(){    int a=25;    int b=60;    int i;    for(i=2;i