Вопросы по игре на угадывание - PullRequest
1 голос
/ 01 августа 2020

Игра в угадывание, которую я получил из видео на YouTube и хотел задать несколько вопросов, которые не получил. Во-первых, в чем смысл части else outofGuesses = 1? Во-вторых, когда вы используете один знак равенства, а когда - 2. И последнее, но не менее важное: есть ли более простой способ сделать это, например, с помощью оператора for?

#include <stdio.h>
#include <stdlib.h> 

int main(void) 
{
    int secretNumber= 5;   
    int guess; 
    int guessCount=0; 
    int guessLimit=3;
    int outofGuesses=0; 

    while(guess !=secretNumber && outofGuesses ==0)
    { 
        if(guessCount< guessLimit)
        { 
            printf("Enter a number between 1 and 10:"); 
            scanf("%d", &guess); 
            guessCount++; 
        } 
        else 
        { 
            outofGuesses =1; 
        } 
    } 
    if(outofGuesses==1) 
    { 
        printf("You lost!");
    } 
    else
    { 
        printf("You win!");  
        return 0;   
    } 
} 

Ответы [ 2 ]

1 голос
/ 02 августа 2020

В чем смысл части else outofGuesses = 1?

Это должно быть флагом или индикатором. В этом случае 1 представляет истину, а 0 - ложь.

Когда вы используете один знак равенства, а когда 2?

Как указано @ am121 в другом ответе, используйте = для присвоения значения переменной и == при проверке равенства двух значений


Был ли более простой способ сделать это, например, с помощью оператора for?

Прежде всего , в программе есть ошибка. Переменная guess не инициализирована и имеет неопределенное поведение. Например, если guess совпадает с secretNumber, человек выигрывает игру, не играя. Для этой программы ему должно быть присвоено любое значение, НЕ равное секретному номеру

То же, что и для l oop:

#include <stdio.h>

int main(void) 
{
    int secretNumber= 5;   
    int guess = 0; //Some value not equal to secretNumber 
    int guessLimit=3;

    for(int guessCount=1; guess!=secretNumber && guessCount<=guessLimit; guessCount++){ 
        printf("Enter a number between 1 and 10:"); 
        scanf("%d", &guess);             
    } 

    if(guess == secretNumber)
    { 
        printf("You win!");
    } 
    else
    {
        printf("You lost!");
    }
} 
1 голос
/ 01 августа 2020

Все это очень просто c, и если вам нужно спросить, вам следует поискать лучшего учителя / учебника

= используется для присвоения значения переменной.

== используется для сравнения двух значений.

outofguesses = 1 присваивает значение 1 этой переменной, когда у вас заканчиваются предположения; это приводит к тому, что сравнение внутри 'while' не выполняется, и поток программы пропускает его к завершающей части.

...