简单的c++ switch语句查找员工工资

问题描述 投票:0回答:3
#include<iostream>
#include<conio.h>
using namespace std;
int main(){

    int salary;
    float deduction,netpayable;
    switch(salary/10000){
        cout<<"enter salary amount :";
        cin>>salary;
        case 0:     
        deduction=0;
        netpayable = salary;
        cout<<"netpayable salary is salary-deduction ="<<netpayable;
        break;

        case 1:     
        deduction=1000;
        netpayable = salary-deduction;
        cout<<"netpayable salary is salary-deduction ="<<netpayable;
        break;

        default:    
        deduction=salary*(7/100);
        netpayable = salary-deduction;
        cout<<"netpayable salary is salary-deduction ="<<netpayable;
        break;
    }
    system("pause");
}

我有雇员,我想制作一个简单的程序,其中我使用 switch 语句来扣除超过 10,000R 的不同员工的工资等等...但是编译器没有显示任何错误,但是程序没有运行并给出一个输出如图所示,我对此有点困惑。

c++ switch-statement
3个回答
3
投票

您已在

switch
上添加了
salary
,但没有为变量赋予任何值。这会导致
salary
具有垃圾值。

只需将这些线放在外面

switch

cout<<"enter salary amount :";
cin>>salary;

// now start the switch statement here:
switch(...)
{
     ....
}

这样,您首先提示用户输入

salary
,然后对其进行所需的操作。


2
投票

我在您的代码中看到 3 个错误。我更正了你的代码并写了注释来突出显示它们。

请看下面:

#include<iostream>
#include<conio.h>
using namespace std;

int main(){

    // 1) Declare all variables of same type to avoid implicit casting errors.
    // In this case we need float or double types.
    float salary;
    float deduction;
    float netpayable;

    // 2) This block must be out of switch instruction!
    cout<<"enter salary amount :";
    cin>>salary;

    // 1.1) The switch will do the expected job
    // only if it works on a int variable, so I put an explicit cast 
    // to (int).
    switch((int)(salary/10000)){

    case 0:     
        deduction=0;
        netpayable = salary;
        cout<<"netpayable salary is salary-deduction ="<<netpayable;
        break;

    case 1:     
        deduction=1000;
        netpayable = salary-deduction;
        cout<<"netpayable salary is salary-deduction ="<<netpayable;
        break;

    default:
        // 3) (7/100) = 0 because compiler interprets it as integer.
        // Use (7./100.) instead.
        deduction=salary*(7./100.);
        netpayable = salary-deduction;
        cout<<"netpayable salary is salary-deduction ="<<netpayable;
        break;
    }

    system("pause");
}   

0
投票

c) 用 C++ 编写解决方案。 4分 星光公司调整了员工工资。他们有一定的标准来决定员工工资的总增值额,以下是标准 如果他只参与公司的本地项目,则加薪 10%。 如果他只参与公司的国际项目,则加薪 15%。 如果他参与过公司的本地和国际项目,加薪 20%。 现在你需要询问 3 名员工的姓名、工资并计算他们本月将获得的工资总额。您的输出应该显示每个员工的旧工资和现在他将获得的新工资。注意:使用三个变量来存储每个员工的工资,(使用适当的命名变量来存储员工所从事的本地、国际项目的状态。

© www.soinside.com 2019 - 2024. All rights reserved.