一个月黑风高的上午,我正上着专业水课,无聊之际想起师兄推荐的西西里,遂打开了这个网站。
(师兄推荐的理由是上面有制服诱惑(╯‵□′)╯︵┻━┻)
那么来看看我的第一道西(song)西(fen)里(ti)吧
emmmmm看起来不会很难
程序要求的关键应该是输入a,b,c,d,然后输出a/b+c/d.
很自然想到对a/b+c/d进行通分,相乘,得到(a*d+c*b)/b*d
但显然直接这样输出是不行的,因为题目要求结果应是最简分数,所以我的想法是求出分子分母的最大公约数,在让分子分母分别除以这个约数,得到新的最简的分子分母,如果分母为1,则直接输出分子。
于是便有了下面的程序
#include<stdio.h>
int suan(int a,int b)
//算最大公约数的程序
//更相减损数
{
int c;
if (a==b)
return a;
if (a<b)
b=b-a;
else
a=a-b;
c=suan(a,b);
return c;
}
int main(void)
{
int n;
scanf("%d",&n);
//所要输入的数据的组数
int num[4*n];
//储存数据的数组
int i;
//计数变量
for(i=0;i<4*n;i++)
{
scanf("%d",&num[i]);
//输入所有数据
}
int z,m;//储存未化简的分子分母
int g;//储存最大公约数
int a,b;//储存最终化简的分子分母
for(i=0;i<4*n;i=i+4)
{
z=num[0+i]*num[3+i]+num[1+i]*num[2+i];
//计算临时分子
m=num[1+i]*num[3+i];
//计算临时分母
g=suan(z,m);
//得到最大公约数
a=z/g;
//用最大公约数化简分子
b=m/g;
//用最大公约数化简分母
if(b==1)
printf("%d\n",a);
else
printf("%d/%d\n",a,b);
//输出结果
}
return 0;
}
以上