Я немного озадачен тем, как решить это предупреждение и ошибку - PullRequest
0 голосов
/ 15 февраля 2020

Мне нужно создать код, в котором случайное число будет генерироваться в диапазоне от 1 до 100, а пользователь должен вводить числа, пока они не выяснят это. В конце, он должен сказать им, сколько догадок им потребовалось, чтобы понять это. У меня есть одна ошибка и одно предупреждение, ни одно из которых я не знаю, как справиться. Я попытался найти их, но не смог найти что-нибудь, что могло бы мне помочь:

main.c: In function ‘main’:
main.c:18:26: warning: implicit declaration of function ‘time’ [-Wimplicit-function-declaration]
         srand((unsigned) time(&t));
                          ^~~~
main.c:43:1: error: expected ‘while’ before ‘}’ token
 }
 ^
main.c:43:1: error: expected declaration or statement at end of input

Вот код, с которым я работаю для справки:

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

int main() {
    char name[1024];
    int i, n;
    time_t t;
    int randNum;
    int userTries;
    int inpUser;

    printf("Please enter your name: \n");
    scanf("%s", name);
    printf("Hello %s\n, we're going to play a game where you guess a secret number. I will tell you if you're too high or too low, and I will also tell you at the end how many guesses you took.\n", name);

    //initializes the random number generator
    srand((unsigned) time(&t));

    //calculates a random number between 100 and 1*/
    randNum = rand() % 100 + 1;

    do {
        printf("Guess a random number, but I bet you'll get it wrong:\n");
        scanf("%d", inpUser);
        if (inpUser == randNum) {
            printf("That's the number! Maybe I underestimated you.\n");
        }
        else if (inpUser > randNum) {
            printf("You're a little high there, bud.\n");
        }
        else if (inpUser < randNum) {
            printf("Maybe go a little higher next time?\n");

            userTries++;
        }

        while (randNum != inpUser);
        printf("Congratulations, you actually did it! That's the number! It took you %d tries, but you did it!", userTries);

        return 0;
    }
}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2020

Я исправляю вашу программу:

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {

    char name[1024];
    int i, n;
    time_t t;
    int randNum = 0;
    int userTries = 0;
    int inpUser = 0;

    printf("Please enter your name: \n");
    scanf("%s", name);
    printf("Hello %s\n, we're going to play a game where you guess a secret number. I will tell you if you're too high or too low, and I will also tell you at the end how many guesses you took.\n", name);

    //initializes the random number generator
    srand((unsigned) time(&t));

    //calculates a random number between 100 and 1*/
    randNum = rand() %100 + 1;

    do {
        printf("Guess a random number, but I bet you'll get it wrong:\n");
        scanf("%d", &inpUser);
        if (inpUser == randNum) {
            printf("That's the number! Maybe I underestimated you.\n");
        }
        else if (inpUser > randNum) {
            printf("You're a little high there, bud.\n");
        }
        else if (inpUser < randNum) {
            printf("Maybe go a little higher next time?\n");

            userTries++;

        }
    }
    while (randNum != inpUser);
    printf("Congratulations, you actually did it! That's the number! It took you %d tries, but you did it!", userTries);

    return 0;

}
0 голосов
/ 15 февраля 2020

В вашем while l oop вы должны заключить оператор печати в фигурные скобки {}. Использование точки с запятой завершает оператор while. Кроме того, вы объявили time_t, но затем используете просто время. Переменная время не было объявлено.

...