如何使用用户输入的变量来定义另一个变量

How to use a user inputted variable to define another variable

我正在编写一个程序,它将显示员工的信息(预定义),即名字、姓氏、年龄、身份证号码、工资总额、税额和输入身份证号码后的净工资和工作的小时数。很基本是吗?

我的问题是,在接受工作时间后,我无法让编译器执行正确的计算以提供总工资、税额和净工资。

根据我所看到的问题,这些计算中涉及的主要变量,即 totalHoursWorked 是基于用户输入的。

如果我声明同一个变量并为其分配一个数量,那么计算 运行 会顺利并输出正确的值,但这是一个问题,因为用户需要能够从 .140(表示最多 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..._

您是在读入 totalWorkHours 之前进行计算,因此计算基于该位置内存中碰巧存在的任何随机值。

尝试更简单的方法:

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.

尝试在用户输入工作时间后进行计算。定义 totalWorkHours 然后要求他们输入,然后用他们的计算定义所有其他变量。应该可以!

我认为 OP 的实际问题在于他们将 C++ 视为一种符号数学符号。即,定义与前三个公式的关系,然后根据公式传递一个具体值来更新结果。然而,这不是真的。发布的代码所做的是根据 totalWorkHours 的值计算 grossSalarytaxAmountnetSalary 的值,正如已经说过的那样,它是未定义的和垃圾,并且然后totalWorkHours分配一个新值,这不会影响已经执行的计算。

我不熟悉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;

那是我的两分钱。