ИТ > Сделай сам

Нелогичная работа программы на С

(1/1)

Can:
Программа на С. Непонятное нарушение  ожидаемой  последовательности работы программы. Самая суть, с пропуском  не  влияющих на данный результат операторов :

scanf ( "%c", &ch) ;
while (ch != 'q' )  // q - для выхода из цикла
{   
   -----------------------  // пропущенные операторы
   -----------------------  
   printf ( "Введите вес в фунтах : ") ;
   scanf ( "%f ", &weight ) ;
   
   printf ( "Введите следующий товар : ") ;
   scanf ( "%c ", &ch) ;

}

printf ( "Стоимость фунта товара : % .2f  n", rate ) ;
-------------------------------------------
------------------------------------------
Компиляция проходит нормально. Но результат следующий по выполнении цикла while :
 
Введите вес в фунтах: 5  // ввожу число
Введите следующий товар : Введите вес в фунтах : q  // здесь, явно, ожидание ввода символа оператором scanf ("%c",&ch)
                                                                                   // ввожу q - для выхода из цикла
Получаю:
   Введите следующий товар : Стоимость фунта товара :

То есть, внутри цикла, по достижении последнего оператора printf (), ввода scanf () программа не ожидает ,как того требует алгоритм , а сразу выводит
предыдущий оператор printf () !? ; при вводе q , по выходе из цикла, получаю последний в цикле оператор printf () ! , - хотя по условию должен быть выход из цикла. То есть, первый проход цикла - нормальный , сбой при итерации. В чем может быть дело ? Все подобные программы работали нормально......

Навигация

[0] Главная страница сообщений

Перейти к полной версии