gpt4 book ai didi

用 c 计算毕达哥拉斯三元组

转载 作者:行者123 更新时间:2023-12-02 07:13:42 25 4
gpt4 key购买 nike

我正在尝试解决 Project Euler #9,即 http://projecteuler.net/index.php?section=problems&id=9 .

我查看了这段代码,逻辑似乎是正确的……但我根本没有得到任何输出,甚至连循环中的 printfs 都没有。我(显然)是 C 新手,正在尝试学习高级语言……你能告诉我哪里出了问题吗?

#include <stdio.h>

int main(){
unsigned int a=0, b=0, c=0;
short int pass=0;
while(!pass){
//printf("a = %4d\n", a);
a++;
b=a;
while(!pass){
b++;
c=1000-a-b;
if(b>=c) break;
if(a*a+b*b==c*c) pass = 1;
}
}
printf("a=%d, b=%d, c=%d, a*b*c=%d, a+b+c=%d\n", a, b, c, a*b*c,a+b+c);
return 1;
}

非常感谢。

编辑: 好的,我已经解决了上面显示的浮点问题,但现在由于某种原因 a 永远不会超过 2,使其无限循环。

编辑: 我修复了一些错误,但它仍然返回 a=33, b=483, c=484, a*b*c=7714476, a+b+c =1000,这不太正确。 :(

哇,我太复杂了。现在可以了。谢谢大家。

最佳答案

不要使用 ==!= 比较浮点值。 float 可以对您施展各种花招。相反,请尝试检查 sc 是否在接近整数的某个合适的小范围内,您的运气会更好。

关于用 c 计算毕达哥拉斯三元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3089507/

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