[初学者提问]自己写c异常啦 帮忙看看

[菜鸟提问]自己写c错误啦 帮忙看看
本鸟这几天开始学 c语言遇到问题啦
#include <stdio.h>
#include<math.h>

struct rational {
       int x,y;
};
int up_part(struct rational z)
{
return z.x;
}
int down_part(struct rational z)
{
return z.y;
}

struct rational make_rational(int x, int y)
{
      struct rational z;
      z.x = x;
      z.y = y;
      return z;
}


int Euclid(int a; int b)
{
  if (a%b==0)
    return b;
  else 
    return Euclid(b,a%b);
}



struct rational simpe_r(int x, int y)
{
      struct rational z;
      z.x = x/Euclid(x,y);
      z.y = y/Euclid(x,y);
      return z;
}

struct rational add_rational(struct rational z1, struct rational z2)
{
 return simp_r (up_part(z1) * down_part(z2) + up_part(z2) * down_part(z1),
                              down_part(z1) * down_part(z2));
}

struct rational sub_rational(struct rational z1, struct rational z2)
{
   return simp_r (up_part(z1) * down_part(z2) - up_part(z2) * down_part(z1),
                                down_part(z1) * down_part(z2));
}

struct rational mul_rational(struct rational z1, struct rational z2)
{
   return simp_r (up_part(z1) *up_part(z2),down_part(z1) * down_part(z2));
}

struct rational div_rational(struct rational z1, struct rational z2)
{
   return simp_r (up_part(z1) *down_part(z2),down_part(z1) * up_part(z2));
}

int print_rational(struct rational z)
{
    if (up_part(z) == 0)
        printf ("0\n");