我正在编写一个程序,用于显示员工的信息(预定义),即输入身份证号码后的名字,姓氏,年龄,身份证号码,工资总额,税额和净工资工作时间。非常基本的是吗?
我的问题是,在接受工作时间后,我无法让编译器执行正确的计算,以便给出工资总额,税额和净工资。
基于我所看到的问题是这些计算中涉及的主要变量,即totalHoursWorked
基于用户输入。
如果我声明同一个变量并为其分配一个金额,那么计算运行平稳并输出正确的值,但这是一个问题,因为用户需要能够输入从.1
到{{40
的任何值1}}(表示最多40个工作小时)。
但是,当我删除指定的值并要求用户输入时,一切都会出错。
下面我写了我遇到问题的部分代码。这只是一个粗略的草稿,可以帮助我想象出问题所在,并专注于调整它:
#include <iostream>
using namespace std;
int main()
{
double hourlyRate=7.5;
double taxPercentage=0.16;
double totalWorkHours;
double grossSalary=hourlyRate*totalWorkHours;
double taxAmount=grossSalary*taxPercentage;
double netSalary=grossSalary-taxAmount;
cout<<"Please enter total work hours"<<endl;
cin>>totalWorkHours;
cout<<grossSalary <<endl;
cout<<taxAmount <<endl;
cout<<netSalary <<endl;
system ("pause");
return 0;
}
这是我得到的输出:
Please enter total work hours
40 <----i input 40 here
3.95253e-323 <--- These are the results of the calculations
4.94066e-324
3.45846e-323
Press any key to continue..._
答案 0 :(得分:1)
我认为OP思考中的实际问题是他们认为C ++是一种象征性的数学符号。即,根据公式定义与前三个公式的关系,然后传递具体值以更新结果。但是,这不是真的。发布的代码的作用是根据grossSalary
的值来计算taxAmount
,netSalary
和totalWorkHours
的值,正如已经说过的那样,未定义和垃圾,以及然后为totalWorkHours
分配一个新值,这不会影响已执行的计算。
答案 1 :(得分:0)
在您阅读totalWorkHours
之前,您正在进行计算,因此计算基于该位置内存中的任何随机值。
答案 2 :(得分:0)
尝试更简单的方法:
int A = 1;
int B = A + 1;
A = 3;
cout << B << endl;
结果为2
。
C ++中的语句与数学中的联立方程式不同,它们是赋值,它们可能会被后来的赋值所黯然失色。声明:
int B = A + 1;
相当于:
int B;
B = A + 1;
您已将B
的值设置为2,并且分配已结束。然后,您可以将A
的值设置为您喜欢的任何值,它将对B没有影响。
答案 3 :(得分:0)
尝试在用户输入工作时间后进行计算。定义totalWorkHours
,然后询问他们输入,然后用他们的计算定义所有其他变量。应该工作!
答案 4 :(得分:0)
我不熟悉c ++。我开始用它,但我的课程都是java所以......它已经有一段时间了。任何这就是我要做的事。
double hourlyRate=7.5;
double taxPercentage=0.16;
double totalWorkHours;
double grossSalary;
double taxAmount;
double netSalary;
cout<<"Please enter total work hours"<<endl;
cin>>totalWorkHours;
grossSalary = hourlyRate*totalWorkHours;
cout<<grossSalary <<endl;
taxAmount = grossSalary*taxPercentage;
cout<<taxAmount <<endl;
netSalary = grossSalary-taxAmount;
cout<<netSalary <<endl;
system ("pause");
return 0;
这是我的两分钱。