如果一个人收入低(<= 25,000)且咨询时间小于或等于30分钟,则不收费;否则,服务费是30分钟内正常小时费率的40%。
对于其他人,如果咨询时间小于或等于20分钟,则不收取服务费;否则,服务费是20分钟内正常小时费率的70%。
(例如,假设一个人收入低,花费1小时15分钟,每小时费用为70.00美元。然后结算金额为70.00 * 0.40 *(45/60)= $ 21.00。)
用C ++编写程序,提示用户输入每小时费率,总咨询时间以及该人是否收入低。该程序应输出结算金额。
这是我到目前为止所做的,程序看起来对我来说正确,但由于某种原因我得不到正确的输出。我得到0.00,这是一个错误的输出值。
#include<iostream>
#include <iomanip>
using namespace std;
double calculateBill(int income, int consultingMinutes, double hourlyRate);
int main()
{
int income;
double consultingMinutes;
double hourlyRate;
cout << "Please enter the clients income: $" ;
cin >> income;
cout << "Please enter the consulting time in minutes: ";
cin >> consultingMinutes;
cout << "Please enter the hourly rate: $";
cin >> hourlyRate; cout << fixed << showpoint << setprecision(2);
cout << "Your total bill ammount comes to: $" << calculateBill(income, consultingMinutes, hourlyRate) << endl;
return 0;
}
double calculateBill(int income, int consultingMinutes, double hourlyRate)
{
if (income <= 25000) {
if (consultingMinutes <= 30)
return 0;
else
return hourlyRate * 0.40 * ((consultingMinutes - 30) / 60);
}
else {
if (consultingMinutes <= 20)
return 0;
else
return hourlyRate * 0.70 * ((consultingMinutes - 20) / 60);
}
}
答案 0 :(得分:0)
整数和浮点数的混合不是一件好事。试试这个:
return hourlyRate * 0.40 * (((double) consultingMinutes - 30.0) / 60.0);
而不是:
return hourlyRate * 0.40 * ((consultingMinutes - 30) / 60);
(对第二个错误的地方应用相同的修复return hourlyRate * 0.70 * ((consultingMinutes - 20) / 60);
)