在c中减少分数 #包括 #包括 int main(){ 系统(“颜色f0”); int a,b,c,d,e,f,g,h,z; printf(“第一分子:”); scanf(“%d”和“&a”); printf(“第一分母:”); scanf(“%d”和“b”); printf(“第二分子:”); scanf(“%d”、&c); printf(“第二分母:”); scanf(“%d”、&d); a=a*d; c=c*b; e=a+c; f=b*d; printf(“简单形式:%d/%d\n”,e,f); 返回0; }

在c中减少分数 #包括 #包括 int main(){ 系统(“颜色f0”); int a,b,c,d,e,f,g,h,z; printf(“第一分子:”); scanf(“%d”和“&a”); printf(“第一分母:”); scanf(“%d”和“b”); printf(“第二分子:”); scanf(“%d”、&c); printf(“第二分母:”); scanf(“%d”、&d); a=a*d; c=c*b; e=a+c; f=b*d; printf(“简单形式:%d/%d\n”,e,f); 返回0; },c,reduction,C,Reduction,这是我的代码,我想把这个简单的分数降到最低,但不使用数学库堆栈溢出!=/r/家务助理 伪代码算法: #include <stdio.h> #include <stdlib.h> int main(){ system("color f0"); int a,b,c,d,e,f,g,h,z; printf("First numerator:"); scanf("%d",&a); printf("First denominator:

这是我的代码,我想把这个简单的分数降到最低,但不使用数学库

堆栈溢出!=/r/家务助理

伪代码算法:

#include <stdio.h>
#include <stdlib.h>
int main(){
    system("color f0");
    int a,b,c,d,e,f,g,h,z;
    printf("First numerator:");
    scanf("%d",&a);
    printf("First denominator:");
    scanf("%d",&b);
    printf("Second numerator:");
    scanf("%d",&c);
    printf("Second denominator:");
    scanf("%d",&d);

    a=a*d;
    c=c*b;
    e=a+c;
    f=b*d;
    printf("Simple form:%d/%d\n",e,f);
    return 0;
}
要检查某物是否为最低值,请执行以下操作:

get a fraction in the form of a/b

while a/b is not in lowest terms:
    find a common divisor, k
    divide a by k  
    divide b by k
end while

我将把除数查找器留给您,否则太容易了。

您的代码做了一些奇怪的事情:

首先,您要求用户提供两个提名者和两个分母

那你的台词呢

if A == B:
    [not lowest terms]
if A is a multiple of B:
    [not lowest terms]
if there is a common divisor: // this catches the first two.
    [not lowest terms]
else:
    [lowest terms]
是多余的,您可以删除它们

第二,你需要排队

printf("Second numerator:");
scanf("%d",&c);
printf("Second denominator:");
scanf("%d",&d);
是可怕的-一个读者(和你)将迷失在你的1个字母的名字数量

那么,为什么不给命名者一个变量命名为
nominator
,给分母一个变量命名为
nominator
?等等

因此,用以下代码替换整个代码:

a=a*d;
c=c*b;
e=a+c;
f=b*d;
#包括
#包括
int main()
{
整数分子,分母,更小,i;
系统(“颜色f0”);
printf(“分子:”);
scanf(“%d”和分子);
printf(“分母:”);
scanf(“%d”和分母);
printf(“\n原始分数:%d/%d\n”,分子,分母);
//方法:我们从分子和分母中得到较小的数
//并将尝试从中减去1的所有数字作为公约数
更小=分子<分母?分子:分母;
对于(i=较小;i>1;--i)
if(分子%i==0和分母%i==0)
{
分子/=i;
分母/=i;
打破
}
printf(“缩减分数:%d/%d\n”,分子、分母);
返回0;
}

请格式化代码。为什么不使用
math.h
?我们不会做作业。@Blacksilver不管怎样,math.h在这里会有什么帮助?我不知道,但你为什么不想用它?这是一项作业,我必须做作业,但我不能做,所以我们不能用数学库。我很确定这是可行的。如果不行,就对我大喊大叫,我会修好的。我会马上回复你们的。最好的希望=e%f;如果(r==0)printf(“简化形式:%d/%d”,e/e,f/e);否则e=f;f=r;r=e%f;printf(“简化格式:%d/%d”,e/r,f/r);返回0;这就是我所做的,但它并没有正确地减轻玛丽安的粗鲁,而是对你的帮助的真棒D
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int numerator, denominator, smaller, i;

    system("color f0");

    printf("Numerator  : ");
    scanf("%d",&numerator);

    printf("Denominator: ");
    scanf("%d",&denominator);

    printf("\nOriginal fraction: %d/%d\n", numerator, denominator);

    // Method: We get the smaller number from numerator and denominator
    // and will try all numbers from it decreasing by 1 for common divisor

    smaller = numerator < denominator ? numerator : denominator;

    for (i = smaller; i > 1; --i)
        if (numerator % i == 0 && denominator % i ==0)
        {
            numerator   /= i;
            denominator /= i;
            break;
        }

    printf("Reduced fraction : %d/%d\n", numerator, denominator);
    return 0;
}