首页 > 解决方案 > C - 当我回答正确答案时,我的代码没有打印 [first] IF 语句 - 为什么?

问题描述

猜谜游戏:请从 1-100 中猜出正确的数字。However, when the secretNumberis chosen, printf("You got the secret number correct!");does not execute. 为什么是这样?所有其他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", & guess);
    guessCount = guessCount + 1;

    while (guess != secretNumber && outOfGuesses == 0) {

        if (guessCount < guessLimit) {

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

标签: printing

解决方案


while这是因为您在到达内部之前制动了循环if。您应该重构代码,以便在 print 之前只进行一次正确的数字检查"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", &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", &guess);
    }
    
    else if (guess > secretNumber){ 
        printf("Enter a lower number: ");
        scanf("%d", &guess);
    }
    guessCount = guessCount + 1;

  }

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

  return 0;
}

推荐阅读