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
- 1 回答
- 0 关注
- 12190 浏览
添加回答
举报
0/150
提交
取消