может сделать, пока цикл не работает? - PullRequest
1 голос
/ 21 марта 2010
do
{
    printf("Enter number (0-6): ", "");
    scanf("%d", &Num);
}while(Num >= 0 && Num <=6);

есть идеи?

Ответы [ 4 ]

5 голосов
/ 21 марта 2010

Вы неправильно понимаете свою петлю.

Ваш код читается так:

Делайте что-то Хотя (пока) num больше (или равно) нулю А num меньше (или равно) шести

Компилятор C слушает ваш код и делает именно то, что вы (по ошибке) ему говорите, то есть продолжайте цикл до тех пор, покачисло находится в диапазоне от 0 до 6.

Вы действительно хотите, чтобы он продолжал цикл, пока число не между 0 и 6, поэтому вы действительно хотите, чтобы код выглядел так:

Делать что-то В то время как num составляет меньше ноль Или num составляет больше шесть

Как только пользователь введет число, которое равно между 0 и 6, код увидит, что num не меньше ни 0, ни больше 6, поэтому он остановит цикл.(Поскольку условие будет ложным)

Вы должны быть в состоянии закодировать это самостоятельно.
Подсказки: > означает «больше чем», < означает «меньше чем» и ||означает «или».

3 голосов
/ 21 марта 2010

Для меня это работает совершенно нормально, если Num объявлено как int.

#include <stdio.h>
int main()
{
    int Num;
    do
    {
    printf("Enter number (0-6): ", "");
    scanf("%d", &Num);
    } while(Num >= 0 && Num <=6);

    printf("Done.\n");

    return 0;
}

Вы объявили Num как символ, возможно?

@ tom: вот пример сеанса с моим скомпилированным кодом; что отличается, когда вы запускаете его?

$ gcc a.c && ./a.out
Enter number (0-6): 0
Enter number (0-6): 1
Enter number (0-6): 2
Enter number (0-6): 3
Enter number (0-6): 4
Enter number (0-6): 5
Enter number (0-6): 6
Enter number (0-6): 7
Done.
0 голосов
/ 22 марта 2010

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

0 голосов
/ 21 марта 2010

Возможно, вам нужно добавить getchar после scanf, чтобы удалить '\ n' из буфера клавиатуры:

do
{
    printf("Enter number (0-6): ", "");
    scanf("%d", &Num);
    getchar();
} while(Num >= 0 && Num <=6);

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...