/*allhours.c*/main() { float rate, hours, total,regular, extra, d_time, overtime; printf("Введите оплату одного часа работы: "); scanf("%f",&rate); printf("Введите число отработанных часов: "); scanf("%f", &hours); d_time = rate * 2; if(hours <= 40) { regular = hours * rate; extra = 0.0; overtime = 0.0; total = regular; } else { regular = 40 * rate; extra = hours -40; overtime = extra * d_time; total = regular + overtime; } printf("Нормальныйнедельныйзаработок: %.2f\n", regular); printf("Отработаносверхурочных часов: %.2f\n", extra); printf("Средняя часовая оплата сверхурочных: %.2f\n", d_time); printf("Заработок за сверхурочные часы: %f.2\n", overtime); printf("Общая сумма недельного заработка: %f.2\n", total); }
Значение оплаты сверхурочных (удвоенное значение оплаты одного часа) присваивается переменной d_time. Расчет этого значения производится перед инструкцией if, так как каждый работник имеет определенную ставку оплаты сверхурочных часов, даже если он реально и не работал больше нормы за истекший период. Соответственно, поскольку сам по себе расчет не зависит от выполнения какого-либо условия, для него не используется инструкция if.
Однако и теперь в программе не разрешены все проблемы, которые могут возникнуть. Например, вы можете ввести отрицательное значение почасовой оплаты или указать какое-нибудь несуразное количество отработанных часов (скажем, 2500 в неделю). Как окончательно решить все проблемы, возникающие из-за ошибочного ввода, вы узнаете в следующей работе.
| Вопросы
|
- В чем различие между символами = и ==?
- Как выполнить несколько инструкций при соблюдении одного определенного условия?
- Каково назначение else?
- Как вы определите, находится ли число в границах допустимых значений?
- Объясните использование «вложенных» инструкций if.
- Чем отличается переключатель switch от инструкции if?
- Как можно использовать числа с плавающей точкой в конструкциях switch?
- Объясните, как можно использовать инструкцию if для проверки правильности ввода?
|
| Упражнения
|
- Напишите программу, в которой вводится числовое значение, а затем выдается сообщение, четное или нечетное число было введено.
- Напишите программу, в которой вводится число и затем выдается сообщение, находится ли значение числа в пределах от 1 до 100.
- Напишите программу, в которой вводится целое число, а затем выдается сообщение, в каком интервале находится значение числа: меньше 0, от 0 до 50, от 51 до 100, от 101 до 150, больше 150.
- Напишите программу, которая просит пользователя ввести числовые значения в переменные lownum и highnum. Значение lownum должно быть меньше чем highnum. Если числа введены не в соответствии с этим условием, программа должна поменять значения, поместив меньшее число в lownum, а большее — в highnum. Значения переменных должны быть выведены на экран.
5. Объясните, почему следующая программа написана неверно:
main() { int age; printf(УкажитеВашвозраст); scanf("%f", &age); if age < 18 then puts("Вы не можете участвовать в выборах"); else ifage> 18 then puts("Выможете участвовать в выборах"); } |