gpt4 book ai didi

c - 将分数减少到最低项

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:13 25 4
gpt4 key购买 nike

我正在阅读《C Programming A Modern Approach》一书。我有一个练习,我应该将分数减少到最低形式。

作者给我的提示是,我可以先计算分子和分母的GCD,然后用GCD除以分子和分母。

这是我的程序:

#include <stdio.h>


int main(void)
{
int frac1;
int frac2;
int gcd;

int a;
int b;
int c;

printf("Enter a fraction: ");
scanf("%d/%d", &frac1, &frac2);
b = frac1;
a = frac2;

//Calculate GCD
c = a % b;

while(gcd > 0)
{
a = b;
b = c;
c = a % b;

if(c <= 0)
{
gcd = b;
break;
}
}


//Divide the numerator and denominator with the GCD
frac1 /= gcd;
frac2 /= gcd;

printf("In lowest terms %d/%d\n", frac1, frac2);
return 0;
}

当我将 6/12 作为输入时,我收到以下错误消息:浮点异常

如何分别计算分子和分母的 GCD?

最佳答案

在您的代码中,您从不初始化 gcd 并且循环有点奇怪。 gcd 什么时候会突然为零,所以它会退出?我想你的意思是

a = frac1;
b = frac2;

//Calculate GCD
c = a % b;

while(c > 0)
{
a = b;
b = c;
c = a % b;
}

gcd = b;

所以当你输入6/12时,会得到c = 6,进入循环,切换成6/6,得到c = 0,退出并将 gcd 设置为 b,即 6。

关于c - 将分数减少到最低项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30459294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com