0

したがって、私のコードでは、過小評価または過大評価する場合は数値を推測する必要があります。別の数値を入力できるように、while ループを入力にループバックさせるにはどうすればよいですか?

#include <stdio.h>

int main(int argc, const char * argv[])
{
    int number = 45;

    printf("Please insert a number");
    scanf("%d", &number);


    if (number == 45){
        printf("good job! You got the number right.");
        return 0;
    }
    else if (number < 45){
        while (number < 45 || number > 45){
            printf("Your number is too low");
            return 1;
        }
    }
    else if (number > 45){
        printf("Your number is too high!");
        return 1;
    }
}
4

2 に答える 2

1

コードの周りに を置き、while (1)間違って配置されたものを削除するだけです:

#include <stdio.h>

int main(int argc, const char * argv[])
{
    while (1) {
        int number = 45;

        printf("Please insert a number");
        scanf("%d", &number);


        if (number == 45){
            printf("good job! You got the number right.");
            return 0;
        }
        else if (number < 45){
            printf("Your number is too low");
        }
        else{
            printf("Your number is too high!");
        }
    }
}

returnプログラムを閉じています。したがって、ユーザーがあなたの番号を推測していないときに戻りたくありません。が起動されたとき (プレイヤーが勝ったとき)
while (1)にのみ終了するループです。return 0

また、最後else ifは必要ありません。elseこれが唯一の残りのケースであるため、 に置き換えます。

于 2013-10-31T22:38:40.867 に答える
1

コードをループでラップします。

int number = 45;

while (1) {
    printf("Please insert a number");
    if (scanf("%d", &number) != 1) {
        printf("not valid number, try again");
        continue;
    }
    if (number == 45){
        printf("good job! You got the number right.");
        return 0;
    }
    if (number < 45){
        printf("Your number is too low");
        continue;
    }
    if (number > 45){
        printf("Your number is too high!");
        continue;
    }
}

scanf数値が正常に読み取られたかどうかを確認するには、 の戻り値も確認する必要があることに注意してください。

于 2013-10-31T22:39:50.880 に答える