这个代码什么意思?
#include<stdio.h>
int main()
{
int n,i,m;
//定义成long long int 或者是int 都是可以的:
int a1,b1,a2,b2,c1,c2,p,d1,d2,temp;
scanf("%d",&n);
m=n;
scanf("%d/%d",&a1,&b1);
while(--n)
{
scanf("%d/%d",&a2,&b2);
c1=a1b2+a2b1;
c2=b1b2;
d1=c1;
d2=c2;
//只能用辗转相除法,来求最大公约数;
//不可以用相减法或者是穷举法来求最大公约数;
while(c1%c2!=0)//测试点2:若不随时化简则会溢出;
{
temp=c1%c2;
c1=c2;
c2=temp;
}
//c2是最大公约数;
d1=d1/c2;
d2=d2/c2;
a1=d1;
b1=d2;
}
b1=b1m;
if(a1>b1) p=b1;
else p=a1;
if(p<0) p=-p;
for(i=p;i>=1;i--)
{
if(a1%i==0&&b1%i==0)
{
a1=a1/i;
b1=b1/i;
}
}
if(a1%b1==0) printf("%d",a1/b1);//只有整数部分;
else if(a1/b1==0&&b1!=0) printf("%d/%d",a1,b1);//没有整数部分,只有分数部分;
return 0;
}