打印一个后如何停止循环?

所以问题来了:编写一个接受整数 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;
}

编辑:如果您以后不需要做任何事情,评论中提到的立即返回也是一个好主意。


以上是打印一个后如何停止循环?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>