厦大C在线实验题3 分数约简

易错点:分母为0的时候直接输出0就行了;break的位置要注意;i有外用要设置成全局变量。

疑点:Dev C++可以在循环的时候直接return i;但厦大oj需要中间变量ys;

描述

自从小明拜小强为师后,自知和师傅之间有着无法逾越的差距!不过他并不气馁,他决定通过的努力一点一点缩短与师傅之间的距离!这不才刚学完循环结构,他就迫不及待的想练习了。于是他自己去找了一些题来练手!

这第一个题很简单,就是给出一个分数,把它化为最简分式。

输入

第一行输入一个整数T,T \le 100T≤100,代表有T组测试数据。接下来的T行,每行输入两个非负整数n、m。n是分子,m是分母(也就是n/m)。每一行代表一组测试数据。0 \lt m,n \lt 1000000<m,n<100000

输出

输出最简分式,格式a/b。若b=1,只输出a;若分母n=0,则输出“Error!”(输出无引号)
每组测试数据占一行。

输入样例 1 

3
12 16
15 3
20 0

输出样例 1

3/4
5
Error!

提示

注意:今后还会遇到有T组测试数据的问题,均可参照如下方式处理。

其实,T组数据不必一次性全部读进来,可以每次只读取两个数,一组一组处理。参考代码为:

scanf("%d", &T);
for(int t=0;t<T;t++)
{
   scanf("%d%d", &n, &m);
   //处理一组n,m
   ....
   //输出本组结果
}
#include<stdio.h>

int main()
{
	int t,n,m,ys;
	
	int gys(int n,int m);
	
	scanf("%d",&t);
	
	for(int i=0; i<t; i++)
	{
		scanf("%d %d",&n,&m);
		
		if(m==0) printf("Error!\n");
		else if(n==0) printf("0\n");
	
		else {
		ys=gys(n,m);
		m/=ys;
		n/=ys;
		if(m==1) printf("%d\n",n);
		else printf("%d/%d\n",n,m);
	    }	
	}
		
	return 0;
} 

int gys(int n,int m)
{
	int t,i,ys;
	if(n>m) {
		t=n;n=m;m=t;
	}
	
	for(i=n; i>0; i--)
	{
		if(m%i==0 && n%i==0){
		ys=i;break;
        }
		
	}
       return ys;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值