|
Программа на С. Непонятное нарушение ожидаемой последовательности работы программы. Самая суть, с пропуском не влияющих на данный результат операторов :
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 () ! , - хотя по условию должен быть выход из цикла. То есть, первый проход цикла - нормальный , сбой при итерации. В чем может быть дело ? Все подобные программы работали нормально......
|