topdjy


私信TA

用户名:dotcpp0633759

访问量:213

签 名:

等  级
排  名 8975
经  验 1191
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 蚌埠学院
专  业

  自我简介:

参考代码:

#include<stdio.h>
int funY(int a,int b){          //最大公约数
	int min = (a < b ? a : b);
	while (1) {
		if (a % min == 0 && b % min == 0) {
			break;
		}
		min--;
	}
	return min;
}
int funB(int y1,int y2){        //最小公倍数
	int i = y1<y2?y1:y2;
	while(i){
		if(i%y1==0&&i%y2==0){
			break;
		}
		i++;
	}
//	printf("最小公倍数:%d\n",i);
	return i;
}
void Sum(int x,int y,int *sumx,int *sumy){                 //求和
//	printf("x = %d y = %d\n",*sumx,*sumy);
	if((*sumx)==0&&(*sumy)==0){               
		(*sumx)+=x;
		(*sumy)+=y;
//		printf("---------------\n");
	}else{
		if((*sumy)!=y){                            //通分
			int t = funB((*sumy),y);           //求出最小公倍数
			x = t/y*x;
			(*sumx) = t/(*sumy)*(*sumx);
			(*sumx)+=x;
			*sumy = t;
		}else{ 
			(*sumx)+=x;
		}
	}
//	printf("x = %d y = %d\n",*sumx,*sumy);
}
int main()
{
	int n,x,y,sumx = 0,sumy = 0;
	char c;
	scanf("%d",&n);
	while(n){
		scanf("%d%c%d",&x,&c,&y);
		Sum(x,y,&sumx,&sumy);                //循环,将输入的值累加
		n--;
	}
	int t = funY(sumx,sumy);
	sumx = sumx / t;
	sumy = sumy / t;
	if(sumy == 1){
		printf("%d",sumx);
	}else{
		printf("%d/%d",sumx,sumy);
	}
	return 0;
}


 

0.0分

2 人评分

  评论区

  • «
  • »