包括C中循环的第一次迭代

0 c for-loop while-loop do-while

我编写了这个程序,为用户提供所有急性三角形解决方案,当它们给出最小值和最大值时.它正常工作,除了似乎解决方案不包括循环的第一次迭代(例如,min = 1和max = 45,(1,1,1)不包括在解决方案中).怎么解决这个问题?我认为问题在于我的while循环的a值,但是当我将其更改为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);
}
Run Code Online (Sandbox Code Playgroud)

Wil*_*son 5

移动++c;后的for循环,而不是之前.

这会在它开始之前将c递增到2,但是您想要包含1.

*注意,您可能希望添加阻止最小值为0或更小的条件.