[bo][un]p1s[/un] 在 2008-11-13 21:20 的发言:[/bo]
您不知道do...while语句么?4楼的那个当然是正确的,可是他的while前面还有一个scanf啊!
人家的while下头还有语句的……
也就是说,人家是
while (scanf("%d%d", &m, &n), m >= 0 || n >= 0)
{
//...
}
而你的do ... while 怎么表达那个复合语句呢?
一种方法是:
do
{
scanf("%d%d", &m,&n);
if (m >= 0 || n >= 0)
{
//...
}
}
while (m >= 0 || n >= 0);
所以,条件需要写两遍。
你还不如:
for(;;)
{
scanf("%d%d", &m, &n);
if (!(m >= 0 || n >= 0))
break;
//....
}
虽然看上去复杂些,但是至少没有代码冗余,而且代码十分清晰。