Yexiaomo
#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