打印一个后如何停止循环?
所以问题来了:编写一个接受整数 n 的程序,打印出最大但小于或等于 n 的数,即两个连续偶数的乘积。示例:输入:12,输出:8(2x4)这是我的代码:
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
for (int i = n; i >= 0; i--)
{
for (int j = 0; j <= n; j = j + 2)
{
if ( i == j * (j+2) )
{
printf("%d ", i);
break;
}
}
}
return 0;
}
所以如果我输入 20,它会打印出 8 和 0 而不是 8,如果我输入 30,它会打印出 24,8 和 0 而不仅仅是 24。我如何让它在打印出第一个合适的数字后停止?
回答
您需要停止处理外部循环,例如通过使用布尔标志(意思是“找到解决方案,我们完成工作”)或 goto 语句。
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int solutionFound = 0;
for (int i = n; i >= 0; i--) {
// this could also be put into for's condition i.e. "i >= 0 && !solutionFound"
if (solutionFound) {
break;
}
for (int j = 0; j <= n; j = j + 2) {
if ( i == j * (j+2) ) {
printf("%d ", i);
solutionFound = 1;
break;
}
}
}
return 0;
}
编辑:如果您以后不需要做任何事情,评论中提到的立即返回也是一个好主意。