使用
时遇到问题 cin >> PayRate
和
cin >> H_worked
可能是什么问题?即使编译器没有显示任何错误,但是当程序运行时,编译器不会读取第2个和第3个cin
值。
程序:
#include <iostream.h>
#include<conio.h>
int main()
{
int employeeName, H_worked;
float PayRate, GrossPay, NetPay;
cout << "Please input your employee's name:";
cin >> employeeName;
cout << "Input hourly wage rate:";
cin >> PayRate;
cout << endl;
cout << "Input hours worked :";
cin >> H_worked;
cout << endl;
if (H_worked > 40)
{
H_worked = H_worked*1.5;
GrossPay = H_worked*PayRate;
cout << "Your employees gross pay for this week is" << GrossPay << endl;
NetPay = GrossPay - (GrossPay* 3.625);
cout << "Your employees net pay is" << NetPay << endl;
}
else (H_worked <= 40);
{
GrossPay = H_worked*PayRate;
cout << "Your employees gross pay for this week is" << GrossPay << endl;
NetPay = GrossPay - (GrossPay*3.625);
cout << "And your employees net pay is" << NetPay << endl;
}
return 0;
getch();
}
答案 0 :(得分:1)
您将employeeName
声明为int
,但这没有任何意义,因为名字的字母不是数字。如果您实际输入了字符数据,那么这将导致cin
失败,这将使任何后续调用失败。这符合您对正在发生的事情的描述。要先解决此问题,我们需要employeeName
一个std::string
,以便我们可以存储信件。
int employeeName, H_worked;
//becomes
std::string employeeName;
int H_worked;
然后我们需要改变输入法。由于名称中可以包含空格,因此我们需要使用std::getline
代替>>
来获取名称,因为>>
会在看到空格时停止。
cout << "Please input your employee's name:";
std::getline(std::cin, employeeName);
在你的其他条件结束时你也有一个分号
else (H_worked <= 40);
这意味着
{
GrossPay = H_worked*PayRate;
cout << "Your employees gross pay for this week is" << GrossPay << endl;
NetPay = GrossPay - (GrossPay*3.625);
cout << "And your employees net pay is" << NetPay << endl;
}
将始终以;
结束else
部分。
然后我们遇到您使用非标准包含的问题。在标准c ++中
#include <iostream.h>
应该是
#include <iostream>
由于所有标准都包含省略.h
。由于所有标准组件都位于std
命名空间中,因此您也必须处理它。您可以将std::
放在所有std
组件的前面,也可以放置using std::cout;
,using std::cin
等。出于Why is “using namespace std;” considered bad practice?
using namespace std;