Code:

#include "conio.h"
#include "stdio.h"
#include "math.h"
#include "alloc.h"
typedef struct PhanSo{
   int Tu;
   int Mau;
};
typedef struct PhanSo * PS;

//nhap 1 phan so
PhanSo Nhap(){
   PhanSo temp;
   printf("\tTu: ");
   scanf("%d",&temp.Tu);
   temp.Mau = 0;
   while(temp.Mau == 0)
   {
      printf("\tMau: ");
      scanf("%d",&temp.Mau);
   }
   return temp;
}
//xuat phan so
void Xuat(PhanSo p) {
   printf("%d/%d",p.Tu,p.Mau);
}
//Nhap n phan so
PS Nhap(int n) {
   PS p = (PS)malloc(sizeof(PhanSo)*n);
   for(int i = 0; i<n;i++)
   {
      printf("Phan so %d\n",i);
      p[i] = Nhap();
   }
   return p;
}
//xuat n phan so
void Xuat(PS p, int n) {
   printf("\nDay phan so:\n\t{");
   for(int i = 0; i<n-1;i++)
   {
      Xuat(p[i]);
      printf(",");
   }
   Xuat(p[n-1]);
   printf("}");
}
//tim uoc chung lon nhat cua hai so a va b bang thuat toan Euclide
unsigned int UCLN(unsigned int a, unsigned int b) {
   if(a==b)
      return a;
   else
      if(a>b)
         return UCLN(a-b,b);
      else
         return UCLN(a,b-a);
}
// Rut gon phan so
PhanSo RutGon(PhanSo p) {
   PhanSo temp = p;
   int k = UCLN(abs(temp.Tu),abs(temp.Mau));
   temp.Tu/=k;
   temp.Mau/=k;
   return temp;
}
//tong hai phan so
PhanSo Tong(PhanSo p, PhanSo q) {
   PhanSo temp = {p.Tu*q.Mau + q.Tu*p.Mau,p.Mau*q.Mau};
   temp = RutGon(temp);
   return temp;
}
//hieu hai phan so
PhanSo Hieu(PhanSo p, PhanSo q) {
   PhanSo temp = {p.Tu*q.Mau - q.Tu*p.Mau,p.Mau*q.Mau};
   temp = RutGon(temp);
   return temp;
}
//nhan hai phan so
PhanSo Tich(PhanSo p, PhanSo q) {
   PhanSo temp = {p.Tu*q.Tu,p.Mau*q.Mau};
   temp = RutGon(temp);
   return temp;
}
//chia hai phan so
PhanSo Thuong(PhanSo p, PhanSo q) {
   PhanSo temp = {p.Tu*q.Mau,p.Mau*q.Tu};
   temp = RutGon(temp);
   return temp;
}
//tong n phan so
PhanSo Tong(PS p, int n) {
   PhanSo temp = {0,1};
   for(int i = 0; i<n; i++)
      temp = Tong(temp,p[i]);
   return temp;
}
//nhan n phan so
PhanSo Tich(PS p, int n) {
   PhanSo temp = {1,1};
   for(int i = 0; i<n; i++)
      temp = Tich(temp,p[i]);
   return temp;
}
void main() {
   clrscr();
   unsigned int n;
   PS t;
   printf("n = ");
   scanf("%d",&n);
   printf("Nhap DS t:\n");
   t = Nhap(n);
   Xuat(t,n);
   printf("\nTong n phan so: ");
   Xuat(Tong(t,n));
   printf("\nTich n phan so: ");
   Xuat(Tich(t,n));
   getch();
}