【问题标题】:My loops are not looping [closed]我的循环没有循环[关闭]
【发布时间】:2013-04-09 01:30:50
【问题描述】:
enter code here
#include<iostream>
#include<iomanip>
using namespace std;


int main()
{
    double employeeNum    = 0.0;            double totalEmployees    = 0.0;
    double hourlyRate    = 0.0;            double totalhoursWork    = 0.0;
    double hoursWork    = 0.0;            double totalnetPay        = 0.0;
    double grossPay        = 0.0;            double averagehoursWork    = 0.0;
    double netPay        = 0.0;            double totalwithHoldings = 0.0;
    double withHoldings    = 0.0;


    cout <<" Enter Employee Number or 9999 to Stop:";
    cin >> employeeNum;
    cout <<"Enter hourly rate:";
    cin >> hourlyRate;
    cout <<"Enter hours worked:";
    cin >> hoursWork;

    while(employeeNum != 9999)
    {

        if (hoursWork >= 40)
        {
            grossPay= hoursWork * hourlyRate;
            cout <<" Gross Weekly Pay:" << grossPay << endl;
        }
        else (hoursWork > 40);
        {
            grossPay= hoursWork * hourlyRate*1.5;
            cout <<" Gross Weekly Pay:" << grossPay << endl;
        }

        while( grossPay > 1,000.00)
        {
            withHoldings= grossPay/ 0.28;

        }
        while( grossPay < 1,000.0)
        {
            withHoldings= grossPay/ 0.21;
        }

        netPay= grossPay-withHoldings;
        cout <<" Net Weekly Pay:" << netPay << endl;

        cout <<" Enter Employee Number or 9999 to Stop:";
        cin >> employeeNum;
        cout <<"Enter hourly rate:";
        cin >> hourlyRate;
        cout <<"Enter hours worked:";
        cin >> hoursWork; 
    }   
    system("pause");
    return 0;
}

从一个空白的解决方案开始,编写一个程序来提示用户输入员工编号、小时费率和工作小时数。计算并显示员工人数、周薪总额和周薪净额。每周总工资的计算方法是前 40 小时的工作时间乘以 1.5 小时数乘以任何超过 40 小时的工资率。净工资是总工资减去预扣税。如果总工资超过 1,000 美元,预扣税按总工资的 28% 计算,如果总工资为 1000 美元或以下,则按总工资的 21% 计算。用户的所有输入都应验证为有效。每小时费率必须高于 7.25 美元且低于 100.00 美元。工作时间必须大于 0 且小于 120。如果用户输入无效数据显示和相应的错误消息并要求用户重新输入。使用后测试循环重复此过程,直到用户输入 9999,程序应显示输入的员工总数、总工作时间、平均工作时间、总净工资和总预扣税。所有数字输出都应以固定符号显示,保留两位小数

【问题讨论】:

  • 家庭作业我想。做调试是软件工程师的好天赋。
  • @EdHeal +1,这是一项绝对必要的技能。
  • @MartinJames - 我同意但不想直言不讳。
  • 事实上,你的循环非常循环。 While 循环可能不会退出,因为循环内未修改检查变量

标签: c++ while-loop


【解决方案1】:

您的循环没有执行,因为您的浮点常量中有一个“,”。使用 1000.00 而不是 1,000.00

【讨论】:

    【解决方案2】:
    while( grossPay > 1000.00)
            {
                withHoldings= grossPay/ 0.28;
    
            }
    

    要么条件为真,要么保持为真,循环将永远循环,要么条件不成立,语句永远不会执行。

    while 更改为if 或在循环内修改grossPay

    另外,不要在浮点常量中包含逗号。

    【讨论】:

    • 所以我应该使用 if 语句
    • 当我改变它说这个 1>e:\finalexamc++\finalexamc++\marquiswatkinsfinalexam.cpp(35): 错误 C2181: 非法 else without match if 1>e:\finalexamc++\finalexamc++\marquiswatkinsfinalexam.cpp (37): 错误 C2146: 语法错误: 缺少 ';'在标识符 'grossPay' 1>e:\finalexamc++\finalexamc++\marquiswatkinsfinalexam.cpp(48) 之前:错误 C2146:语法错误:缺少 ';'在标识符'withHoldings'之前==========全部重建:0成功,1失败,0跳过==========
    【解决方案3】:

    第二个条件复制了第一个条件 ((hoursWork &gt; 40);),并且条件末尾有一个分号。请在此处发布之前仔细检查语法。

    【讨论】:

    • 1>e:\finalexamc++\finalexamc++\marquiswatkinsfinalexam.cpp(35): error C2181: 非法 else without match if 1>e:\finalexamc++\finalexamc++\marquiswatkinsfinalexam.cpp(37): error C2146 :语法错误:缺少';'在标识符 'grossPay' 1>e:\finalexamc++\finalexamc++\marquiswatkinsfinalexam.cpp(48) 之前:错误 C2146:语法错误:缺少 ';'在标识符 'withHoldings' 之前 ========== 全部重建:0 成功,1 失败,0 跳过 ========== 这就是我修复错误时所说的
    • 是我还是认为这是为了期末考试而这个人求助于 MB 来获得答案的想法有点令人担忧。希望他没有坐在我旁边。
    猜你喜欢
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多