减少C中的分数

时间:2017-06-21 06:53:31

标签: c fractions greatest-common-divisor

在c编程中,当我将2个数字分成2/4时,它给出输出0.5,但我想要1/2。所以我想知道如何执行除法以获得分数,如分子/分母。我想用C。

3 个答案:

答案 0 :(得分:0)

C没有内置的那种能力。但是,你可以做的是,写一个小函数,它取小数值(在你的情况下为0.5)并返回你想要的形式的分数(即1/2) )。

但请记住,1/2不是数字;它是一个字符串(char数组)。因此,您只能将它用于显示/打印目的;你不能在算术表达式中使用。

答案 1 :(得分:0)

抱歉,我无法将其改编为C,但您可以确定端口代码,因为它不是太复杂了

#include <iostream>
#include <string>

long GreatestCommonMultiple(long& a, long& b);
std::string SimplifyThis(long& a, long& b);

int main(int argC, char** argV)
{
    long n1 = 3;
    long n2 = 21;
    std::cout << "This as simplified fraction: " << n1 << "/" << n2 << " is "<<SimplifyThis(n1, n2)<<std::endl;
    return 0;
}

std::string SimplifyThis(long& a, long& b) {
    long gcm1 = GreatestCommonMultiple(a, b);
    return std::to_string(a / gcm1) + "/" + std::to_string(b / gcm1);
}

long GreatestCommonMultiple(long& a, long& b) {
    if (b==0)
    {
        return a;
    }
    long x = (a % b);
    return GreatestCommonMultiple(b, x);
}

答案 2 :(得分:0)

你真正想要的是减少分数 ..而不是计算分裂。

这是一个快速的样本,可以减少分数:

arg_count

样本取自:http://snipplr.com/view/42917/