这个`do..while`循环不起作用

时间:2011-05-01 19:41:32

标签: c++ loops while-loop do-while

int sc1,sc2,a=0,b=0;

do
{

 printf("Give the scores\n");

 scanf("%d %d", &sc1,&sc2);

 //===============================================

 if (sc1 > sc2)     
   a+=1;
 else if (sc1<sc2)
   b+=1;
 else if (sc1==sc2)
   printf("tie\n");

 //===============================================

 if (a>b)    
    printf("team 1 is in the lead\n");
 else if (a<b)
    printf("team 2 is in the lead\n");
 else if (b==a)
    printf("tie\n");      

}
while((a==3) || (b==3));

//===============================================


if (a==3)
  printf("team 1 got the cup");
else
  printf("team 2 got the cup");

我认为我写错了。我经常搜索它,但似乎无法找到它的错误。

(两支球队中的一支可以赢得杯赛冠军,该球队必须获得3胜)

* else if(sc1

* if if(a&gt; b)

5 个答案:

答案 0 :(得分:3)

while((a==3) || (b==3));
仅当ab为3时,

才会循环播放。如果你想要等到其中一个是三,请使用:

while ((a!=3) && (b!=3));

答案 1 :(得分:2)

您的循环条件不正确。它提前停止,因为两队都没有得分3.循环直到一个或另一个达到3:

while((a < 3) && (b < 3));

答案 2 :(得分:2)

基本上,你告诉它循环,而a或b仍然等于3.这不是你想要的。你想要while((a<3) && (b<3))

答案 3 :(得分:1)

如果我正确地阅读了您的问题,您希望终止条件是团队“a”或“b”中的一个得分为3.但是,在您的代码中,您已经写了唯一的如果其中一个队伍得分为3,那么while循环就可以了。你想要:

while( !( a==3 || b == 3) )

答案 4 :(得分:1)

您的条件:

while((a==3) || (b==3));

说明只要ab等于3,循环就会继续。你确定这是你想要的吗?