我尝试编写Nested if condition语句来计算三个条件下的工资提升,例如全职,2兼职或临时。但是,工资提高的结果无法计算。这里有任何逻辑问题吗?不知道错误在哪里。请帮忙。感谢您的评论。
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
char employmentStatus;
float performanceScore, salaryRaise = 0.0;
double fullTimeSalary = 10000;
double partTimeSalary = 8000;
double tempSalary = 5000;
double rate;
double bonus =500;
cout << "What is your employment status?" << endl;
cout << "Enter 1 (full-time), 2 (part-time), or 3 (temporary)"<< endl;
cin >> employmentStatus;
cout << "Now enter your performance score" << endl;
cin >> performanceScore;
cout << endl;
cout << fixed << showpoint << setprecision(2);
if (employmentStatus == 1)
{
if(performanceScore >= 8)
{
rate = 0.04;
salaryRaise = fullTimeSalary * (1 + rate) + bonus;
}
else if (performanceScore < 8 && performanceScore >= 6)
{
rate = 0.025;
salaryRaise = fullTimeSalary * (1 + rate) + bonus;
}
else
{
salaryRaise = fullTimeSalary;
}
cout << "Your salary raise is: $" << salaryRaise << endl;
}
else if (employmentStatus == 2)
{
if (performanceScore >= 8)
{
rate = 0.03;
salaryRaise = partTimeSalary + (salaryRaise*rate);
}
if (performanceScore < 8 && performanceScore >= 6)
{
rate = 0.015;
salaryRaise = partTimeSalary + (salaryRaise*rate);
}
if (performanceScore < 6 )
{
salaryRaise = partTimeSalary
}
}
else if (employmentStatus == 3)
{
salaryRaise = tempSalary
}
else
{
cout << " No result" << endl;
}
cout << "Your salary raise is: $" << salaryRaise << endl;
system("pause");
return 0;
}
答案 0 :(得分:3)
您的问题因逻辑而异。
我修复后的完整代码:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
char employmentStatus;
float performanceScore, salaryRaise = 0.0;
double fullTimeSalary = 10000;
double partTimeSalary = 8000;
double tempSalary = 5000;
double rate;
double bonus =500;
cout << "What is your employment status?" << endl;
cout << "Enter 1 (full-time), 2 (part-time), or 3 (temporary)"<< endl;
cin >> employmentStatus;
cout << "Now enter your performance score" << endl;
cin >> performanceScore;
cout << endl;
cout << fixed << showpoint << setprecision(2);
if (employmentStatus == '1')
{
if(performanceScore >= 8)
{
rate = 0.04;
salaryRaise = fullTimeSalary * (1 + rate) + bonus;
}
else if (performanceScore < 8 && performanceScore >= 6)
{
rate = 0.025;
salaryRaise = fullTimeSalary * (1 + rate) + bonus;
}
else
{
salaryRaise = fullTimeSalary;
}
cout << "Your salary raise is: $" << salaryRaise << endl;
}
else if (employmentStatus == '2')
{
if (performanceScore >= 8)
{
rate = 0.03;
salaryRaise = partTimeSalary + (salaryRaise*rate);
}
if (performanceScore < 8 && performanceScore >= 6)
{
rate = 0.015;
salaryRaise = partTimeSalary + (salaryRaise*rate);
}
if (performanceScore < 6 )
{
salaryRaise = partTimeSalary;
}
}
else if (employmentStatus == '3')
{
salaryRaise = tempSalary;
}
else
{
cout << " No result" << endl;
return 0;
}
cout << "Your salary raise is: $" << salaryRaise << endl;
return 0;
}
检测到问题并解释解决方案:
if (employmentStatus == 1)
而不是if (employmentStatus == '1')
,这在语法级别上不是问题,因为C ++会将char隐式转换为其ASCII代码,请参阅my answer on this以获得更好的解释system("pause")
查看this,this和this。放下它。return 0;
。