我觉得我正在做一些非常愚蠢的事情。我只想让程序告诉用户何时输入非双精度值,并继续循环回到输入值的cin。为什么这会导致与chars无限循环但不能双打?
我希望用户输入任何数字。那么重要的是做这个微不足道的数学和重复。它在这方面的工作很好,当像char这样的意外输入被输入时,问题就来了。然后,输入以某种方式将它发送到一个循环,在循环中循环数学问题,而不是仅仅告诉用户他们必须键入一个数字并循环回到cin类型的新数字。
#include <iostream>
#include <cstdlib>
using std::cout; using std::cin; using std::endl;
long double domath(long double i)
{
cout << i << "/" << 2 << "=" << i/2 << endl;
cout << i/2 << "*" << 10 << "=" << (i/2)*10 << endl << endl;
cout << 5 << "*" << i << "=" << 5*i << "\n\n";
return 0;
}
int main()
{
long double in = 0;
while(true)
{
cin >> in;
if (cin.fail()) {
in = char(int(in));
}
domath(in);
}
system("pause>nul");
return 0;
}
请提供样本输入,预期和实际输出。 –
请删除[tag:c]标签。 –
您需要清除cin,http://stackoverflow.com/questions/17928865/correct-way-to-use-cin-fail –