韩信点兵为什么这样算不对

img

  • int main()括号里不需要写void
  • 应该是操作符优先级的问题,你把&&左右的语句都加上括号试试
  • do/while语句里面的内容是如果符合这个就继续循环。应该是不符合这个条件才继续循环++
    改成while语句,用if来判断,如果为真,break出去,如果不为真,就继续++
#include <stdio.h>
int main()
{
    int x = 10;
    while (1)
    {
        if ((x % 5 == 1) && (x % 6 == 5) && (x % 7 == 4) && (x % 11 == 10))
        {
            break;
        }
        else
        {
            x++;
        }
    }
    printf("%d\n", x);
    return 0;
}


img

我是这样理解的,供你参考:把&&改为||,然后把==改为!=就可以了,只要任意一种条件没满足,就增加x的值,直到满足四个条件才停止增加x的值,结果是2111.

img