0

以下は、私がコーディングした do-while ループです。実行すると、最初の 2 つのケースが機能し、完全に実行されます。でも。3 番目のケースでは、プログラムを終了することになっていますが、代わりに何もせず、do-while ループの最初にある一連の printf ステートメントに戻ります。私が間違っていることに関する提案はありますか?

do
{
    printf("Choose one of the following (1, 2, or 3) \n");
    printf("1. Find GCD of two positive integers\n");
    printf("2. Sort 3 integers in the ascending order\n");
    printf("3. Quit the program\n");
    printf("Please enter your choice: ");
    scanf("%d", &option);
    switch (option)
    {
        case 1:
            gcd(p, q);
            printf("\nDo you want to try again? Say Y(es) or N(o): ");
            getchar();
            response = getchar();
            break;

        case 2:
            sort(p, q, r);
            printf("\nDo you want to try again? Say Y(es) or N(o): ");
            getchar();
            response = getchar();
            break;  

        case 3:
            break;
    }
}
while (response == 'Y' || response == 'y'); //Condition that will determine whether or not the loop continues to run.
printf("\nThank you for using my progam. Goodbye!\n\n");
return 0;
} 
4

7 に答える 7

2

応答変数は Y または y のままで、while ループは終了しません。

追加

response = 'x'; //or something that isn't Y or y

休憩前; ケース 3: オプション。

于 2013-02-15T14:43:57.490 に答える
2

breakステートメントは、最初の反復ループから抜け出します。あなたの場合、これは switchです。

応答を変更する必要があります (たとえば、応答 =0)。

    case 3:
        response=0; //different than 'Y' or 'y'
        break;
于 2013-02-15T14:44:36.230 に答える
1

次のようにします。

case 3:
  return 0;

また、ケース 3 を排除することを検討して、次のようにすることもできます。

default:
  return 0;
于 2013-02-15T14:50:40.403 に答える
0

ケース 3 の break ステートメントは、プログラムからではなく、ケース 3 から終了します。ケース 3 でプログラムを終了する場合は、return ステートメントを使用します。

0 を返します。

このステートメントは、while ループを繰り返すのではなく、プログラムに存在します。

于 2013-02-15T15:38:48.687 に答える
0

ケース 3 では、ユーザーからの入力がないため、応答変数は true のままです。ユーザーに入力を求めるか、単に response = '(条件を false にする任意の文字)' と入力してみてください。

于 2013-02-15T14:51:28.353 に答える
0

breakステートメントはプログラムを終了せず、switchブロックから終了するだけです。
終了するには:
1. ステートメント の#include<stdlib.h>
代わりに、 2.を次 のように変更します。breakexit(0);
case 3
response='N';break;

于 2013-02-15T14:51:33.513 に答える
0

スイッチケースを中断するだけです。

使用方法:

  case 3:
      return;
      break;
于 2013-02-15T14:45:24.210 に答える