我的程序正確運行第一個For循環,然後在第二和第三循環中跳過Cin。然後當循環結束時,繼續計算第一個索引[0]的BMI,並正確執行此操作,並給出正確的答案,但對索引的1和[2]沒有任何影響,因爲沒有輸入任何信息,因爲cin被跳過。爲什麼我的程序在For循環的第一個循環後跳過cin >>?
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
struct Patient
{
double height;
double weight;
int age;
bool isMale;
};
int main()
{
Patient Patients[3];
for (int i = 0; i < 3; i++) {
cout << "Patient "<< i << " Height: ";
cin >> Patients[i].height;
cout << "Patient " << i << " Weight: ";
cin >> Patients[i].weight;
cout << "Patient " << i << " Age: ";
cin >> Patients[i].age;
cout << "Is Patient " << i << " Male True or False: ";
cin >> Patients[i].isMale;
cout << endl << endl;
}
cout << endl << endl;
for (int i = 0; i < 3; i++) {
float BMI = Patients[i].weight/(Patients[i].height *Patients[i].height);
cout << "Patient " << i << " Has A BMI of: " << BMI << endl << endl;
}
return 0;
}
這是控制檯,您可以在第一循環中的所有CIN的被跳過,但第一循環結束後看到正確保存,因爲它couted第一指數BMI:
基於您發佈的代碼,一切看起來都很好。你有沒有試過用調試器來查看你的代碼,看看發生了什麼? – Andy
相關/ dupe:http://stackoverflow.com/questions/26203441/cin-and-boolean-input – NathanOliver
顯示輸入和輸出。如果您輸入的類型不正確,有時會導致問題。也可以嘗試打印出cin狀態位。按照建議運行調試器。 – sbail95