关于while语句结束符的疑问

题目如下
鸡有一个头两条腿,兔子有一个头4条腿,蜻蜓有一个头6条腿。没有例外。一个笼子里共有m个头,n条腿,问鸡、兔和蜻蜓各有多少?
输入格式: 只有一行,为两个正整数m和n,分别代表头的个数和腿的个数数。
输出格式: 有若干行,每一行为一组解,格式均为用空格分隔的三个整数,依次代表鸡的个数、解兔子的个数和蜻蜓的个数。多组解的输出顺序按解鸡的个数小到大排序。 测试数据保证可以用int存储。

在 while 括号呢已输入了d>=0,但输出后还是有一项是d=-1

img

img

但在 if 括号内再次输入d>=0时,输出后就没有 d=-1 了

img

img

所以为什么当d=-1时 while 语句还能执行,我哪个地方出问题了?

为什么还需要在 if 括号内再加一遍?

因为你while里又算了一次d=m-c-r