我有这个问题,我可以输入"2 10 8",它会输出"8",但我希望能够输入"2 -25.2 -38.4"。这会立即使for循环崩溃,并且程序会显示"-25.0"而不是"-25.2",从而有效地删除小数位上的数字。
有谁可以帮忙吗?
int main() {
int numVals;
static_cast<double>(numVals);
double minVal;
int i;
int iteration;
cin >> iteration;
for (i = 0; i < iteration; ++i) {
cin >> numVals;
numVals = numVals * 10; //program completely ignores this...
if (i == 0) {
minVal = numVals;
}
else if (numVals < minVal) {
minVal = numVals;
}
}
cout << fixed << setprecision(1) << minVal / 10 << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
小智 6
您正在尝试读取-25.2类型numVals的变量int。它读取-25到numVals,但随后尝试下次读取.2,这不是一个有效的整数。当您尝试此操作时,输入流变量cin将进入失败状态,并且不再接受任何输入。
numVals从类型更改int为double:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double numVals;
double minVal;
int i;
int iteration;
cin >> iteration;
for (i = 0; i < iteration; ++i)
{
cin >> numVals;
numVals = numVals * 10;
if (i == 0)
{
minVal = numVals;
}
else if (numVals < minVal)
{
minVal = numVals;
}
}
cout << fixed << setprecision(1) << minVal / 10 << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)