我编写这个程序是为了在用户给出最小值和最大值时为用户提供所有锐角三角形的解决方案。它工作正常,除了解决方案似乎不包括循环的第一次迭代(例如,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/