我是初学者,所以请放轻松。我的问题在于我的输出。如果你输入一个全名,它会崩溃。我应该使用除字符串以外的东西吗?它最初正确显示输出,但随后它也会向下运行,并添加你超重线和额外的计算。如果计算累加到用户超重,它将完美地工作。此外,未应用设定精度。我很难过。
int main()
{
double height, weight, bmi; // height in inches, weight in pounds, bmi is total bmi of user
string name; // name of the user
int num; // the number 703 used for bmi calculation
num = 703; // constant used for bmi calculation
cout << "Please enter your full Name:"; // Asking the user to input their name
cin >> name; // Users name
cout << "Please enter your height(in inches):"; // User height in inches
cin >> height; // Users height
cout << "Please enter your weight(in lbs):"; //Users weight in lbs
cin >> weight; // Users weight
bmi = (weight / pow(height, 2)) * num; // the actual calculation of the bmi of the user
if (bmi >= 18.5 && bmi < 25) {
cout << name << " your BMI is " << setprecision(1) << bmi; // outputting to the user their actaul BMI
cout << endl;
cout << "You are in the optimal weight category!"; // outputting their category
}
else if (bmi < 18.5) {
cout << name << " your BMI is " << setprecision(1) << bmi;
cout << endl;
cout << "You are underweight.";
}
else (bmi >= 25); {
cout << name << " your BMI is " << setprecision(1) << bmi;
cout << endl;
cout << "You are overweight.";
}
return 0;
}
答案 0 :(得分:1)
你在这一行上有一个虚假的分号:
else (bmi >= 25); {
答案 1 :(得分:0)
cin
使用空格作为默认分隔符。因此,当您输入“First Last”之类的名称时,cin >> name;
将仅使用“First”一词,而cin >> height;
将尝试使用“Last”,您将遇到错误。如果您想允许使用全名,请尝试使用std::getline
。
答案 2 :(得分:0)
当您使用>>
输入字符串时,您只能获得输入的字。用户的全名的其余部分位于输入缓冲器中,直到下一个输入操作,例如,输入整数。然后该文本作为整数规范无效。
而是使用getline
来阅读一行文字。
顺便说一下,为了获得有关例如警告的警告用作语句的纯表达式(通常是错误的,代码中有一个例子),编译器的警告级别。使用Visual C ++使用/W4
。使用g ++使用-Wall
。