C语言:分数的计算

Python014

C语言:分数的计算,第1张

代码如下 供参考

#include <stdio.h>

struct Fraction

{

int a,b,s

}

struct Fraction Add(struct Fraction x,struct Fraction y)

struct Fraction Sub(struct Fraction x,struct Fraction y)

int gcd(int a, int b)

{

    while (a != b)

    {

        if (a > b)

        {

            a -= b

        }

        else

        {

            b -= a

        }

    }

    return a

}

void mini(struct Fraction * a)

{

int g

if(a->a == 0) 

{

a->b = 1

return 

}

g = gcd(a->a, a->b)

a->a/=g

a->b/=g

}

struct Fraction Add(struct Fraction x,struct Fraction y)

{

struct Fraction r

if(x.s!=y.s)

{

if(x.s == 1) 

{

y.s = 1

return Sub(x, y)

}

else

{

x.s = 1

return Sub(y, x)

}

}

r.s = x.s

r.b = x.b*y.b

r.a = x.a*y.b + x.b*y.a

mini(&r)

return r

}

struct Fraction Sub(struct Fraction x,struct Fraction y)

{

struct Fraction r

if(x.s != y.s)

{

if(x.s == 1) 

{

y.s = 1

return Add(x, y)

}

else

{

x.s = 1

r = Add(x, y)

r.s = -1

return r

}

}

r.s = x.s

r.b = x.b*y.b

r.a = x.a*y.b - x.b*y.a

if(r.a < 0)

{

r.s *= -1

r.a *= -1

}

mini(&r)

return r

}

void Display(struct Fraction a)

{

if(a.s == 1) printf("+")

else printf("-")

printf("%d/%d\n", a.a, a.b)

}

int main()

{

    struct Fraction Add(struct Fraction x,struct Fraction y)

    struct Fraction Sub(struct Fraction x,struct Fraction y)

    struct Fraction f1={1,2,1},f2={3,4,1},f3

    f3=Add(f1,f2)

    printf("\n两个分数相加的结果为:")Display(f3)

    f3=Sub(f1,f2)

    printf("\n两个分数相减的结果为:")Display(f3)

    return 0

}

#include<stdio.h>

#include<stdlib.h>

main()

{

int a,b,c,d,i,x,y

char op

scanf("%d/%d%c%d/%d",&b,&a,&op,&d,&c)

if(a==0||c==0) exit(0)

if(op=='+'){y=b*c+d*ax=a*c}

if(op=='-'){y=b*c-d*a,x=a*c}

if(op=='*'){y=b*dx=a*c}

if(op=='/'){y=b*cx=a*d}

if(y==0&&x!=0) { printf("%d/%d%c%d/%d=0\n",b,a,op,d,c)}

else if(x==0) exit(0)

//你的这里怎么可以再用一个ELSE呢,条件已经变化了。后面跟前面没有联系啊

if(x>y) i=y

while(i>1)

{

if(x%i==0&&y%i==0){x=x/iy=y/icontinue}

i--

}

if(x/i==1) printf("%d/%d%c%d/%d=%d\n",b,a,op,d,c,y)

else printf("%d/%d%c%d/%d=%d/%d.\n",b,a,op,d,c,y,x)

//不明白你后面这里为什么会多出两个花括号。

//由于百度上不能空行,我也不猜测错误原因。你自己理解下。

}

//程序运行无误