用c语言编写程序 最简分数

int num;(分子)int div;(分母)
2024-11-16 04:43:42
推荐回答(4个)
回答(1):

#include "stdio.h"
#include"math.h"
void main()
{
int num;
int div;
int min;
scanf("%d/%d",&num,&div);
if(abs(num)>abs(div)) min=abs(div);
else min=abs(num);
int i,flag=0;
for(i=2;i<=min;i++)
{
if(num%i==0 && div%i==0)
{
num=num/i;
div=div/i;
i=1;
flag=1;
}
if(flag==1){
if(abs(num)>abs(div)) min=abs(div);
else min=abs(num);
flag=0;
}
}
printf("%d/%d\n",num ,div);
}考虑了负数

回答(2):

#include

int main()
{
int num=0,div=0;
scanf("%d%d",&num,&div);
if(div!=0)
{
int n=(num for (int i=2;i<=n;)
{
if(num%i==0&&div%i==0)
{
num/=i;
div/=i;
}
else i++;
}
printf("%d/%d",num,div);
}
else printf("输入错误!分母不能为0。");
return 0;
}

没考虑负数

回答(3):

最大公约数呀
#include
int main()
{
int num,div;
int i=0;//最大公约数
scanf("%d%d",&num,&div);
int gcd(int x,int y);
i=gcd(num,div);
printf("分子:%d\n分母:%d\n",num/i,div/i);
return 0;
}
int gcd(int x,int y)
{
while(x!=y)
{
if(x>y)
x=x-y;
else
y=y-x;
}
return x;
}

20 30
分子:2
分母:3

30 20
分子:3
分母:2

回答(4):

int flag=1;
if(num<0)
{
flag=-1;
num=-num;
}
for(i=num;i>=2;i--)
if(num%i==0&&div%i==0)break;
if(div==0)printf("Error!");
else
printf("%d/%d",flag*num/i,div/i);