Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Листинг 6. Передача параметров



/*discount.c*/main() { floatcost, discount; printf("Введите стоимость единицы товара: "); scanf("%f", &cost); printf("Введите процент скидки (в виде десятичной дроби): "); scanf("%f", &discount); price(cost, discount); }price(amount, mrkdown)float amount, mrkdown; { float reduced, net; reduced = amount * mrkdown; net = amount - reduced; printf("Стоимость с учетом скидки составляет %.2f долларов", net); return (0); }

Функция price() умножает цену товара на процент скидки, вычитает полученную сумму из цены и выводит на дисплей величину стоимости с учетом скидки. Врезультате выполнения программы на экране монитора появляются следующие сообщения:

Введите стоимость единицы товара: 100ведите величину скидки (в виде десятичной дроби): 0.05Стоимость с учетом скидки составляет 95 долларов

Предположим, что случайно вы изменили вызов функции следующим образом:

price(discount, cost);

Компилятор не сообщит об ошибке, так как значения двух переменных типа float передаются двум аргументам типа float. К несчастью, они передаются не тем аргументам, каким положено: значение discount будет передано amount, а значение cost —mrkdown.

Если теперь присвоить переменной cost значение 100, а переменной discount значение 0.05, функция переставит их и будет считать, что цена равна пяти центам, а размер скидки составляет 10000 процентов. В результате мы увидим, что товар имеет отрицательную стоимость в размере –4.95доллара, вместо 95.50.





Дата публикования: 2015-07-22; Прочитано: 182 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...