0
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");

私は何か間違ったことを書いたと思います。私はそれをたくさん検索しましたが、何が問題なのかを見つけることができないようです。

(2チームのうち1チームがカップを獲得でき、そのチームは3勝する必要があります)

*else if(sc1

*else if(a>b)

4

5 に答える 5

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

aorbが 3 の場合にのみループします。そのうちの 1 つが 3 つになるまで待ちたい場合は、次を使用します。

while ((a!=3) && (b!=3));
于 2011-05-01T19:45:28.677 に答える
2

ループ条件が正しくありません。どちらのチームも 3 のスコアを持っていないため、早期に停止しています。どちらかが 3 になるまでループします。

while((a < 3) && (b < 3));
于 2011-05-01T19:45:59.780 に答える
2

基本的に、a または b がまだ 3 に等しい間ループするように指示しています。これは、あなたが望むものではありません。あなたがしたいwhile((a<3) && (b<3))

于 2011-05-01T19:46:23.343 に答える
1

私があなたの質問を適切に読んでいるなら、チーム「a」または「b」のいずれかのスコアが3であることを終了条件にしたいと思います。ループできるのは、いずれかのチームのスコアが 3 の場合です。

while( !( a==3 || b == 3) )
于 2011-05-01T19:44:46.330 に答える
1

あなたの条件:

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

aまたはが 3 に等しい限り、ループが続くことを示しbます。これでよろしいですか?

于 2011-05-01T19:45:02.413 に答える