- 时间限制: 1 Sec 内存限制: 128 MB
题目描述
请将文本文件fs.dic下载保存到当前目录下。
已知fs.dic中每行数据都是4个正整数,用/隔开,分别表示2个分数的分子和分母。
例如当前行的数据为
1/2+1/3
表示2个分数 1/2和1/3
对应的输出结果为5/6
要求编写C程序,将fs.dic的每行数据对应的2个分数求和并化简成最简分数后输出。
输入
输入文件fs.dic.
输出
输出求和并化简后的分数数据。每个输出占1行。如果化简后的分数分母为1,则不输出分母。
样例输入
例如,fs.dic的内容(结尾有换行):
1/1+1/1
2/2+6/3
1/2+1/3
2/3+3/4
2/4+4/2
3/5+9/7
2/6+4/8
样例输出
2
3
5/6
17/12
5/2
66/35
5/6
【Solution】
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int x1,x2,y1,y2,z1,z2,j,k,i;
FILE *fp;
if((fp=fopen("fs.dic","r"))==NULL)
{
exit(0);
}
while(fscanf(fp,"%d/%d+%d/%d",&x1,&x2,&y1,&y2)!=EOF)
{
z2=x2*y2;
z1=x1*y2+x2*y1;
j=z1;
k=z2;
do{
i=z2%z1;
if(i!=0){
z2=z1;z1=i;
}
else break;
}while(i!=0);
j=j/z1;
k=k/z1;
if(k!=1){
printf("%d/%d\n",j,k);
}
else{
printf("%d\n",j);
}
}
fclose(fp);
return 0;
}