首 页最新软件下载排行文章资讯投稿发布下载专题
维维下载站
您的位置:首页编程开发网络编程编程其它 → 如何利用C语言实现简单的分数化简

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

来源:维维整理 发布时间:2010-3-2 9:56:00 人气:

C语言 最简分数,其实,我的目的就是希望打印结果, (35分之18)以分数的形式显示出来.而不是像0.51这样的浮点型结果!希望,高手们能提供代码实现这个功能!谢谢!或者,结果以(18/35)这种方式显示也可以,总之.不要浮点型打印的结果,用代码该如何实现?

我想问一下 C程序里能输入分数么。如果你要设置输入分数这又得编程

如果你设定了一个好分数,那么计算它非常简单,提取它的分母以找到最小公倍数,如果你想简单地引导分母乘法,那么通过点都是设定的。这个问题的难度不在于计算是输入分数,分离分数。

把代码付上:

// flex.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "stdio.h"

#define ULONG unsigned long

typedef 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;
}

相关下载
栏目导航
本类热门阅览