#c
#c
Вопрос:
Я присвоил значение ставки за час (bpr) как 12.My цель состояла в том, чтобы найти валовую заработную плату, налоги и чистую заработную плату с учетом количества часов, введенных пользователем.Кроме того, если количество часов превышает 40, скорость увеличивается на 1.5.So тариф за дополнительные часы составляет 18 часов в час вместо 12.Вот мой код:
#include <stdio.h>
int main ()
{
//program to calculate weekly pay
int hrs = 0;
int bpr = 12;
double gross_pay = 0.0;
double tax = 0.0;
double net_pay = 0.0;
printf("Enter the no of hours worked in a week: ");
scanf("%d", amp;hrs);
if (hrs <= 40)
gross_pay =(bpr * hrs);
else
{
gross_pay = (bpr * hrs);
double overtimepay = (hrs - 40) * (bpr * 1.5);
gross_pay = overtimepay;
}
if (gross_pay <= 300)
tax = (0.15 * gross_pay);
else if (gross_pay > 300 amp;amp; gross_pay <= 450)
tax = ((0.15 * 300) 0.2 * (gross_pay - 300));
else
tax = ((0.15 * 300) (0.2 * 150) 0.25 * (gross_pay - 450));
net_pay = (gross_pay - tax);
printf("The gross pay is: %dn",gross_pay);
printf("The total tax amount is: %dn",tax);
printf("The net pay is: %dn",net_pay);
return 0;
}
Код возвращает 0 для каждого вывода.В чем ошибка?
Комментарии:
1. Это не относится к делу, но вы неправильно рассчитываете оплату сверхурочных.
2. @FiddlingBits Извините, отредактировал сообщение, чтобы предоставить недостающую информацию
Ответ №1:
Вы вызываете неопределенное поведение, передавая данные с неправильным типом printf()
.
%d
предназначен для печати int
, но вы проходите мимо double
.
Для печати double
через printf()
, вам , вероятно , следует использовать %f
или %g
. (Есть также некоторые другие спецификаторы для печати double
в разных форматах)