c - 在 C 中的循环中包含第一次迭代

标签 c for-loop while-loop do-while

我编写这个程序是为了在用户给出最小值和最大值时为用户提供所有锐角三角形的解决方案。它工作正常,除了解决方案似乎不包括循环的第一次迭代(例如,min = 1 和 max = 45,(1, 1, 1) 不包括在解决方案中)。这怎么能解决?我认为问题出在我的 a 值的 while 循环上,但是当我将它更改为 for 循环时,问题仍然存在。我怎样才能让它包含这些第一个值?

if (c >= dmin) {
    c = dmin;
    do {
        ++c;
        for (b = dmin; b < dmax; b++) {
            a = dmin;
            while (a < dmax) {
                a = a + 1;
                if (a * a + b * b - c == c * c) {
                    if (((a + b) > c) && ((b + c) > a) && ((c + a) > b)) {
                        printf("(%d, %d, %d)", a, b, c);
                    }
                }
            }
        }
    } while (c <= dmax);
}

最佳答案

++c; 移到 for 循环之后而不是之前。

这甚至在它开始之前就将 c 递增到 2,但您想要包括 1。

*请注意,您可能希望添加条件以防止最小值为 0 或更小。

关于c - 在 C 中的循环中包含第一次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33175224/

相关文章:

c - 没有类型说明符的类型限定符

python - 如何加快python函数中的 'for'循环?

javascript - 如何在 for 循环内使用 setTimeout 更改 div 内容?

Python for 循环在字符串结束前停止

linux - 如何使 while 读取更快(如何使用 grep 代替)

java - JNI : jstring make the app crash on android

java - 执行返回键而不是就地排序的搜索的技术

c - 程序正确编译后失败

Java 嵌套 while 循环未按预期运行

c# - while 循环中的值未更新