为了账号安全,请及时绑定邮箱和手机立即绑定

c语言编写程序,要求用户输入一个分数,然后将其约分成最简分式

c语言编写程序,要求用户输入一个分数,然后将其约分成最简分式

C
孤城12 2016-10-31 19:11:36
查看完整描述

1 回答

?
Yexiaomo

TA贡献152条经验 获得超157个赞

#include <stdio.h>
#include <math.h>
int function(int a, int b){
	int temp;
	while(a%b != 0){
		temp = a%b;
		a = b;
		b = temp;
	}
	return b;
}
int main()
{
    int a,b;//a为分子 b为分母
    int n = 1;//被除数 
	printf("请输入一个分数,{a为分子 b为分母}形式为:a/b: ");
	while(scanf("%d/%d",&a,&b) != EOF && b != 0){
		if(a == 0){
			printf("最简分式为:0");
		}
		else{
			n = function(fabs(a),fabs(b));
			printf("最大公约数为:%d\n",n);
			a /= n;
			b /= n;
			
			if( (a < 0 && b < 0 ) || (a > 0 && b > 0 )){
				if( fabs(b) == 1)
					printf("最简分式为:%.0lf", fabs(a));
				else
					printf("最简分式为:%.0lf/%.0lf", fabs(a),fabs(b));
			}
			else{
				if(fabs(b) == 1)
					printf("最简分式为:-%.0lf", fabs(a));
				else
					printf("最简分式为:-%.0lf/%.0lf", fabs(a),fabs(b));
			}
			
		}
			
		printf("\n如果结束测试请输入 '#', 如果继续测试请继续输入即可\n\n");
		if(getchar() == '#')
			break;
		
	}
}

思路: 要想化简分数, 需要找出分子分母的最大公数--->所以此题就转化为 求两个数的最大公约了

下面就是 so easy了

主要就是 输出格式 那个地方, 写的太繁琐了, 但是是最容易看懂的一种方式

fabs() 是求一个数的 绝对值, 位于库函数 math.h 中, 所以需要导入这个库函数

但是 fabs()函数返回值 是一个 double类型的数, 所以输出格式 改为 %.0lf  

其他的倒没啥了, 希望能够帮助到你, 能采纳就更棒了

—————————————————————分割线———————————————————————————

啦啦~~~Imcainiao

查看完整回答
2 反对 回复 2016-10-31
  • 1 回答
  • 0 关注
  • 12190 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信