这是我一直致力于的计划。我刚刚开始编程,所以我现在只是想编写简单的程序。我所做的一直很好,直到这一次。该程序将运行,但它不会让用户输入所有信息。我不知道为什么。如果有人可以帮我理解。这是代码:
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
double salary = 0.0;
double wages = 0.0;
float employee = 0;
int hours;
double total = 0.0;
cout << "Please enter an employee name or -1 to quit";
cin >> employee;
cout << "Please enter the employee wages: $" << endl;
cin >> wages;
cout << "Please enter how many hours the employee worked" << endl;
cin >> hours;
wages * hours == salary;
cout << "The employee total earnings is $" << total << endl;
cout << "Please enter an employee name or -1 to quit";
system("pause");
return 0;
}
再次感谢您的时间和帮助。
以下是我所做的更改,但仍然无法正常运行。
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
double salary = 0.0;
double wages = 0.0;
float employee = 0;
int hours;
double total = 0.0;
cout << "Please enter an employee name or -1 to quit";
cin >> employee;
cout << "Please enter the employee wages: $" << endl;
cin >> wages;
cout << "Please enter how many hours the employee worked" << endl;
cin >> hours;
salary = wages * hours;
cout << "The employee total earnings is $" << total << endl;
cout << "Please enter an employee name or -1 to quit";
cin >> employee;
system("pause");
return 0;
}
答案 0 :(得分:5)
您将员工设置为float
。我假设你的意思是一个员工的名字,所以你想在那里有一个字符串。
简单的解释是,当cin
期待一个数字并且你给它一个字符串时它会中断。通过“休息”,我的意思是后来的cin
,尤其是那些期待数字的人,会被一堆无意义的东西吞没。
答案 1 :(得分:1)
该行
wages * hours == salary;
没有意义(我甚至不确定它的作用)。你可能想要计算工资,但这应该是
salary = wages * hours;
您也永远不会计算total
变量 - 它总是为0。
答案 2 :(得分:1)
cout << "Please enter an employee name or -1 to quit";
system("pause");
return 0;
你的问题在这里吗?因为你不是在这里要求输入,这可能就是原因。
答案 3 :(得分:1)
这取决于你所说的“所有信息”。我的猜测是你正在尝试输入员工姓名的名字和姓氏,并且它正在跳过一些输入。原因是cin(有点不直观)将输入分成空白。这意味着它将每个字符串,数字,字符块等(称为“标记”)视为单独的cin对象,即使您输入多个并按Enter也是如此。
所以,如果你看到这个:
请输入员工姓名或-1退出
并输入“John Doe”,它会将“John”存储到员工,打印“请输入员工工资:$”,然后立即将“Doe”存储到工资中,而不提示输入输入,因为“Doe”仍在等待存储这是初学者体验的第一个C ++“gotcha!”之一,并且有很多方法可以解决它。其中之一是使用cin.getline(...)
。另一种方法是使用cin >> noskipws >> employee;
。
http://www.cplusplus.com/reference/iostream/manipulators/noskipws/ http://www.cplusplus.com/reference/iostream/istream/getline/
显然,将单词存储到float
有其自身的问题,但我认为你是单独处理它。如果要存储字符串,请查看std :: string。
答案 4 :(得分:0)
你需要一个循环。一直运行到员工姓名等于“-1”。
答案 5 :(得分:0)
我不确定你想要达到什么目标,但也许你想要这样的东西:
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
double salary = 0.0;
double wages = 0.0;
String employee = "";
int hours = 0;
double total = 0.0;
cout << "Please enter an employee name or -1 to quit";
cin >> employee;
cout << "Please enter the employee wages: $" << endl;
cin >> wages;
cout << "Please enter how many hours the employee worked" << endl;
cin >> hours;
salary = wages * hours;
cout << "The employee total earnings is $" << total << endl;
cout << "Please enter an employee name or -1 to quit";
system("pause");
return 0;
}
如果要对员工姓名进行验证,则需要在输入员工上循环while
,直到用户插入一些令牌。