C — Мой код не печатает [первый] оператор IF, когда я отвечаю правильным ответом — почему?

#printing

#печать

Вопрос:

Игра в угадайку: пожалуйста, угадайте правильное число от 1-100. Однако, когда secretNumber выбран параметр, printf("You got the secret number correct!"); он не выполняется. Почему это происходит? Все остальные printf инструкции выполняются.

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

int main() {

    int secretNumber = 37;
    int guess;
    int guessCount = 0;
    int guessLimit = 3;
    int outOfGuesses = 0;

    printf("Enter a number between 1 and 100: ");
    /* NOT PRINTING */
    scanf("%d", amp; guess);
    guessCount = guessCount   1;

    while (guess != secretNumber amp;amp; outOfGuesses == 0) {

        if (guessCount < guessLimit) {

            if (guess == secretNumber) {
                printf("You got the secret number correct!");
                scanf("%d", amp; guess);
            } else if (guess < secretNumber) {
                printf("Enter a higher number: ");
                scanf("%d", amp; guess);
            } else if (guess > secretNumber) {
                printf("Enter a lower number: ");
                scanf("%d", amp; guess);
            }
            guessCount = guessCount   1;
        } else {
            printf("You are out of guesses.");
        }
    }
    return 0;
}
 

Комментарии:

1. о боже. довольно много проблем. Я рекомендую начать заново. Заставьте работать одну часть логики. Затем добавьте еще один кусочек. Когда это сработает, добавьте еще один шаг. Похоже, вы написали все за один шаг, не убедившись, что вы строите на хорошем фундаменте. Крайне важно научиться хорошим навыкам получения удовольствия. Разделяй и властвуй. Проверьте свои логические операторы. Проверьте свой цикл. amp;amp; outOfGuesses == 0 выглядит подозрительно.

Ответ №1:

Это потому, что вы тормозите while цикл, прежде чем перейти к внутреннему if . Вам следует реорганизовать свой код, чтобы проверка правильного номера выполнялась только один раз, перед печатью "You got the secret number correct!" . Что-то вроде этого:

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

int main(){

  int secretNumber = 37;
  int guess;
  int guessCount = 0;
  int guessLimit = 3;
  int outOfGuesses = 0;

  printf("Enter a number between 1 and 100: "); 
  scanf("%d", amp;guess);
  guessCount = guessCount  1;

  while (guessCount < guessLimit){
    if (guess == secretNumber){
        printf("You got the secret number correct!");
        break;
    }
      
    else if (guess < secretNumber){
        printf("Enter a higher number: ");
        scanf("%d", amp;guess);
    }
    
    else if (guess > secretNumber){ 
        printf("Enter a lower number: ");
        scanf("%d", amp;guess);
    }
    guessCount = guessCount   1;

  }

  if (guessCount == guessLimit){
    printf("You are out of guesses.");
  }

  return 0;
}