有人可以帮助我理解为什么此循环不断重复吗?

我为课堂编写了这段代码,除了完整的程序循环外,其他所有程序都工作正常,询问用户是否要重复该程序。似乎无法识别输入字符来结束循环。任何帮助表示赞赏。

#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

#define REGULAR_HOURS_LIMIT 40.0    // hours at which overtime begins
#define OVERTIME_HOURS_LIMIT 20.0   // Maximum overtime hours
#define OVERTIME_RATE 1.5           // overtime rate
#define TAX_RATE 0.30               // tax rate (30%)
#define PARKING_RATE 10.00          // parking deduction
#define MAXIMUM_PAY_RATE 99.99      // Maximum employee pay

int main()
{
    string  first_name,     // employee's first name, input by user
            last_name,      // employee's last name, input by user
            full_name;      // employee's concatenated full name

    double  hours,          // number of hours worked, input by user
            regular_hours,  // number of regular hours
            overtime_hours, // number of overtime hours
            hourly_rate,    // hourly pay rate
            gross_pay,      // employee's gross pay
            tax,            // employee's tax amount
            deductions,     // monthly deductions
            net_pay;        // employee's net pay

    char    yesno;          // Prompt for new input 

    do
    {
// Input section

    cout << "Enter employee's first name: ";
    cin >> first_name;

    cout << "Enter employee's last name: ";
    cin >> last_name;

    cout << "Enter number of hours worked: ";
    cin >> hours;
        while (hours < 0 || hours > (REGULAR_HOURS_LIMIT + OVERTIME_HOURS_LIMIT))
        {
            cout << "Hours must be between 0 and 60" << endl;
            cout << "Enter number of hours worked: ";
            cin >> hours;
        }

    cout << "Enter hourly pay rate: $";
    cin >> hourly_rate;
        while (hourly_rate < 0 || hourly_rate > MAXIMUM_PAY_RATE)
        {
            cout << "Pay rate must be between 0.00 and 99.99" << endl;
            cout << "Enter hourly pay rate: $";
            cin >> hourly_rate;
        }

// Processing section

    full_name = last_name + ", " + first_name;

    if (hours <= REGULAR_HOURS_LIMIT) 
    {
        regular_hours = hours;
        overtime_hours = 0.0;
    }

    else 
    {
        regular_hours = REGULAR_HOURS_LIMIT;
        overtime_hours = hours - REGULAR_HOURS_LIMIT;
    }

    gross_pay = (regular_hours * hourly_rate) + (overtime_hours *

    hourly_rate * OVERTIME_RATE);

    tax = gross_pay * TAX_RATE;

    deductions = PARKING_RATE;

    net_pay = gross_pay - tax - deductions;

// Output section

cout << endl;
cout << "12345678901234567890##21.00##21.00##321.00##4321.00##321.00"
<< "##321.00##4321.00" << endl;
cout << " Reg. Ovt. Hourly Gross "
<< " Net " << endl;
cout << "Name Hours Hours Rate Pay Taxes "
<< " Deduct Pay " << endl;
cout << "==================== ===== ===== ====== ======= ======"
<< " ====== =======" << endl;
cout << left << setw(20) << full_name << " ";
cout << right << fixed << setprecision(2);
cout << setw(5) << regular_hours << " ";
cout << setw(5) << overtime_hours << " ";
cout << setw(6) << hourly_rate << " ";
cout << setw(7) << gross_pay << " ";
cout << setw(6) << tax << " ";
cout << setw(6) << deductions << " ";
cout << setw(7) << net_pay << endl << endl;


cout << "Process another employee (Y/N)?";
cin >> yesno;
    if (yesno == 'y' || 'Y' || 'n' || 'N')
    {
        cout << endl;
    }
    else
    {
        do
        {
            cout << "Please type 'Y' for yes or 'N' for no";
            cin >> yesno;
        }
        while (yesno != 'y' || 'Y' || 'n' || 'N');
    }
    }
    while (yesno == 'y' || 'Y');
}
克沃罗别夫

换线

while (yesno == 'y' || 'Y');

while ((yesno == 'y') || (yesno == 'Y'));

在第一种情况下,条件“ Y”始终为真,并且出现无限循环。
行也一样

if (yesno == 'y' || 'Y' || 'n' || 'N')
...
while (yesno != 'y' || 'Y' || 'n' || 'N');

在这行代码中,根据规则,“ y”,“ Y”和其他字符隐式转换为bool

零值,空指针值或空成员指针值将转换为false;否则,将转换为false。其他任何值都将转换为true。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有人可以帮助我理解为什么 grep 需要这么长时间才能遍历 /etc 目录吗?

来自分类Dev

有人可以帮助我了解为什么VS Code引发此错误吗?

来自分类Dev

有人可以帮助我了解为什么VS Code引发此错误吗?

来自分类Dev

有人可以帮助我理解此代码

来自分类Dev

以下golang代码死锁。有人可以帮助理解为什么吗?

来自分类Dev

有人可以帮助我分解并理解此collatz序列代码吗?

来自分类Dev

有人可以帮助我了解此PowerShell脚本在做什么吗?

来自分类Dev

有人可以帮助我直观地了解此Recordset循环中发生的情况吗?

来自分类Dev

无法找出为什么我会得到空指针异常,有人可以帮助我吗?

来自分类Dev

有人可以帮助我理解这些参数/参数吗?

来自分类Dev

有人可以帮助我理解文件的十六进制表示吗?

来自分类Dev

Python:有人可以帮助我调试此错误吗?[新手]

来自分类Dev

有人可以在登录表单中帮助我解决此错误吗?

来自分类Dev

有人可以帮助我更正此“ argv”程序吗?

来自分类Dev

有人可以帮助我提高此代码的效率吗?

来自分类Dev

有人可以帮助我了解VkPhysicalDeviceMemoryProperties吗?

来自分类Dev

有人可以帮助我安装Devise吗?

来自分类Dev

红宝石的新手,有人可以帮助我从控制台中解密此错误吗?

来自分类Dev

有人可以帮助我在Swift“ Apple Mach-O Linker Error”中修复此错误吗?

来自分类Dev

Java按值传递还是引用传递?有人可以帮助我使用此代码吗?

来自分类Dev

有人可以告诉我为什么我不理解此示例中的范围吗?

来自分类Dev

有人可以告诉我为什么我不理解此示例中的范围吗?

来自分类Dev

如果正在检查字符串的引用,有人可以帮助我吗?确切的答案是什么,为什么?

来自分类Dev

似乎无法获得VAO渲染...有人可以帮助我看看我做错了什么吗?

来自分类Dev

有人可以帮助我了解为什么我需要一个IF和而这个答案?

来自分类Dev

有人可以帮助我以多种定义的美感正确设置我的ggplot图例吗?

来自分类Dev

有人可以帮助我使我的程序不区分大小写吗?

来自分类Dev

我非常坚持这项计算作业,有人可以帮助我吗?

来自分类Dev

“超级”对象没有属性“ __getattr__”,有人可以帮助我吗?

Related 相关文章

  1. 1

    有人可以帮助我理解为什么 grep 需要这么长时间才能遍历 /etc 目录吗?

  2. 2

    有人可以帮助我了解为什么VS Code引发此错误吗?

  3. 3

    有人可以帮助我了解为什么VS Code引发此错误吗?

  4. 4

    有人可以帮助我理解此代码

  5. 5

    以下golang代码死锁。有人可以帮助理解为什么吗?

  6. 6

    有人可以帮助我分解并理解此collatz序列代码吗?

  7. 7

    有人可以帮助我了解此PowerShell脚本在做什么吗?

  8. 8

    有人可以帮助我直观地了解此Recordset循环中发生的情况吗?

  9. 9

    无法找出为什么我会得到空指针异常,有人可以帮助我吗?

  10. 10

    有人可以帮助我理解这些参数/参数吗?

  11. 11

    有人可以帮助我理解文件的十六进制表示吗?

  12. 12

    Python:有人可以帮助我调试此错误吗?[新手]

  13. 13

    有人可以在登录表单中帮助我解决此错误吗?

  14. 14

    有人可以帮助我更正此“ argv”程序吗?

  15. 15

    有人可以帮助我提高此代码的效率吗?

  16. 16

    有人可以帮助我了解VkPhysicalDeviceMemoryProperties吗?

  17. 17

    有人可以帮助我安装Devise吗?

  18. 18

    红宝石的新手,有人可以帮助我从控制台中解密此错误吗?

  19. 19

    有人可以帮助我在Swift“ Apple Mach-O Linker Error”中修复此错误吗?

  20. 20

    Java按值传递还是引用传递?有人可以帮助我使用此代码吗?

  21. 21

    有人可以告诉我为什么我不理解此示例中的范围吗?

  22. 22

    有人可以告诉我为什么我不理解此示例中的范围吗?

  23. 23

    如果正在检查字符串的引用,有人可以帮助我吗?确切的答案是什么,为什么?

  24. 24

    似乎无法获得VAO渲染...有人可以帮助我看看我做错了什么吗?

  25. 25

    有人可以帮助我了解为什么我需要一个IF和而这个答案?

  26. 26

    有人可以帮助我以多种定义的美感正确设置我的ggplot图例吗?

  27. 27

    有人可以帮助我使我的程序不区分大小写吗?

  28. 28

    我非常坚持这项计算作业,有人可以帮助我吗?

  29. 29

    “超级”对象没有属性“ __getattr__”,有人可以帮助我吗?

热门标签

归档