2015-06-07 3 views
2

Я написал ниже код и нуждаюсь в помощи, понимая, почему он не работает так, как должен. Он компилирует, однако, он не запускает if-else в моих циклах. Например, если бы я должен был вынуть цикл while в моем коде, все будет нормально работать, однако я хочу знать, сколько попыток требуется, чтобы кто-то угадал «магическое число» или случайное число в этом случае.Нужна помощь в программировании магического числа

#include <stdio.h> 

int main() 
{ 

int magicnum = 1234; 
int userguess; 
int totalguess = 0; 


printf("Try to guess a number between 1 and 10000!: "); 
scanf("%d", &userguess); 


while(totalguess <= 7 && magicnum != userguess);{ 


    if(magicnum == userguess){ 
    printf("Congratulations, You Win!!\n"); 

     if(totalguess = 1){ 
     printf("Wow you did it on your first try!!\n"); 
     } 

     else(totalguess >= 2); { 
     printf("Nice one!! It only took you %d tries!\n", totalguess); 
     } 
    } 

    else if(magicnum > userguess){ 
    printf("Too Low try again!!\n"); 
    } 

    else{ 
    printf("Too High try again!!\n"); 
    } 

    totalguess++; 
} 
    return 0; 
} 

Ищу выход либо кто-то отвечает на правильный номер, который «1234», если они забивают слишком высоко, они должны увидеть ответ «Too High попробовать еще раз !!», и если они забивают слишком они должны увидеть ответ «Слишком низкая попытка повторить !!». Также предполагается показать, сколько попыток потребовалось им, и если они получили это с первой попытки или нет. Максимальное количество попыток человека должно быть в состоянии сделать это должно быть 7.

+0

Можете ли вы предоставить свой выходной ток и ваш ожидается .. –

+0

я редактировал пост с ожидаемым выходом, что я должен видеть. Весь вывод работает, если я не использую цикл while, однако я хочу, чтобы люди могли повторить попытку, если они не получили случайное число с первой попытки, поэтому я включил цикл while, чтобы они имели шанс исправить это. –

+0

Голосование, чтобы закрыть как можно больше опечаток. – Lundin

ответ

4

проблема № 1 проблема заключается в линии

while(totalguess <= 7 && magicnum != userguess);{ 

В частности, точка с запятой. Приведенные выше вычисляется в следующем

ответ должен удалить посторонний точку с запятой в конце цикла в то время:

while(totalguess <= 7 && magicnum != userguess) { 
//        No semicolon^


Проблема # 2 находится в линии

if (totalguess = 1){ 

Где вы на самом деле назначаете totalguess для 1. Исправьте это, изменив = (присвоение) на == (com Заготовка).


Проблема № 3 и № 4 в линии

else(totalguess >= 2); { 

Не знаю, как это даже компиляции, а вы должны иметь else if, а не else. И как с петлей while, у вас есть другая посторонняя точка с запятой. Убери это.

И, наконец, вы только запрашиваете ввод пользователя один раз, поэтому программа будет циклически работать 7 раз, не запрашивая ввода. Поместите свой scanf внутри основного контура while

+0

Фактически, когда я это делал, кажется, что это ухудшило, когда я удалил точку с запятой, программа не выдала мне никакого результата после того, как я ввел свою переменную для scanf. –

+1

Сделал все, что вы сказали, и это сработало великолепно, огромное спасибо! (Я знаю, что вы не должны здесь благодарить, но поскольку я не знаю, как это сделать иначе, чем сделать ваш ответ приемлемым ответом, я просто хотел сказать это, надеюсь, что у меня не будет проблем!) –

0

Согласно результатам Леви, решение:

const int magic_num  = 1234; 
const uint max_num_guess = 7; 
     uint num_guess  = 1 + max_num_guess; 
     int user_guess; 

printf("Try to guess a number between 1 and 10000!\n"); 
for(uint idx = 0; idx < max_num_guess; ++idx) 
{ 
    scanf("%d", &user_guess); 
    if(magic_num == user_guess) { num_guess = 1 + idx; idx = max_num_guess; } 
    else 
    { 
     if(magic_num < user_guess) { printf("Too High try again!!\n"); } 
     else       { printf("Too Low try again!!\n"); } 
    } 
} 
if(num_guess <= max_num_guess) 
{ 
    printf("Congratulations, You Win!!\n"); 
    if(1 == num_guess) { printf("Wow did it on your first try!!\n"); } 
    else     { printf("Nice one!! %d tries!\n", num_guess); } 
} 

Для # 3 действительно. Рассмотрим:

if(false){} 
else(printf("Branch!\n")); 
{ printf("Done.\n"); } 
Смежные вопросы