2010-06-24 73 views
1

当我声明int weight,然后输入一个双值165.1第二cin >> height;不起作用,并没有任何错误消息。你能告诉我为什么吗?关于在c + + cin的问题

已使用VS2010控制台应用程序。

#include <iostream> 

using namespace std; 

const double lbs_to_kg = 2.2046, inches_to_meter = 39.370; 

int main() 
{ 
    int weight, height; 
    double kilograms, meters; 

    cout << "\nEnter weight in pounds: "; 
    cin >> weight; 
    kilograms = weight/lbs_to_kg; 
    cout << "\nEnter height in inches: "; 
    cin >> height; 
    meters = height/inches_to_meter; 
    cout << "\nYour BMI is approximately " 
     << "\nbody fat ratio is " 
     << kilograms/(meters * meters) 
     << ". Under 25 is good." 
     << endl; 

} 

output: 

Enter weight in pounds: 165.1 

Enter height in inches: 
Your BMI is approximately 
body fat ratio is 1.57219e-013. Under 25 is good. 
+0

嗯..这将是一个有趣的身体脂肪比例。 – 2010-06-24 02:09:51

+4

@比利:这是浮点饮食。你花很多时间试图理解程序中浮点运算的效果,你忘记了一个月的时间。 – 2010-06-24 02:22:10

回答

13

如果你尝试有cin提取数据到一个变量不能拿着它,将数据留在输入流中cin被标记为已失败。您需要检查!cin是否失败,并使用cin.clear()清除故障标志,以便您可以再次读取(未来的提取操作将自动失败,直到标志被清除)。你可以提取数据到一个不同的变量,它可以容纳它,或者使用cin.ignore()来丢弃它