这是我用c ++做的代码。而程序应该只接受数字。它需要四个正确的输入才能进入下一个过程。并且应该忽略错误的输入。问题是,它接受8个正确的输入。它会忽略前4个正确答案,并获得最后4个正确输入的值。它应该只询问并获得四个值。我的循环出了什么问题?
#include <iostream>
#include <stdlib.h>
#include <iomanip>
using namespace std;
int main(int argc, char** argv) {
float a=0, b=0, c=0, d=0, grade = 0;
cout << " Enter your Grade on Quiz no. 1 : \t";
cin >> a ;
cout << " Enter your Grade on Quiz no. 2 : \t";
cin >> b ;
cout << " Enter your Grade on Quiz no. 3 : \t";
cin >> c;
cout << " Enter your Grade on Quiz no. 4 : \t";
cin >> d;
这是我制作的循环,它会忽略错误的输入
while(!(cin>>a))
{
cout<<"Wrong. Try again."<<endl;
cin.clear();
cin.ignore();
system ("cls");
cout << " Enter your Grade on Quiz no. 1 : \t";
cin >> a ;
if ( cin>> a){
break;
}
}
while(!(cin>>b))
{
cout<<"Wrong. Try again."<<endl;
cin.clear();
cin.ignore();
system ("cls");
cout << " Enter your Grade on Quiz no. 2 : \t";
cin >> a ;
if ( cin>> b){
break;
}
}
while(!(cin>>c))
{
cout<<"Wrong. Try again."<<endl;
cin.clear();
cin.ignore();
system ("cls");
cout << " Enter your Grade on Quiz no. 3 : \t";
cin >> c ;
if ( cin>> c){
break;
}
}
while(!(cin>>d))
{
cout<<"Wrong. Try again."<<endl;
cin.clear();
cin.ignore();
system ("cls");
cout << " Enter your Grade on Quiz no. 4 : \t";
cin >> a ;
if ( cin>> d){
break;
}
}
在4次正确输入后,它应该顺利进行。
system ("cls");
cout << " Quiz#" << "\t\tGrade\n";
cout <<" 1\t\t" << a << endl;
cout <<" 2\t\t" << b << endl;
cout <<" 3\t\t" << c << endl;
cout <<" 4\t\t" << d << endl;
cout << "\n";
cout << " TOTAL AVE."<< "\t\tREMARKS\n";
grade = (a+b+c+d)/ 4;
if (grade> 94 && grade< 101 ) {
cout << " " << setw(4)<< left<<grade << "\t\tExcellent!\n\n";
}
else if (grade> 89 && grade< 95){
cout << " " << setw(4)<< left<< grade << "\t\tVery Satisfactory!\n\n";
}
else if (grade> 84 && grade< 90 ) {
cout << " " << setw(4)<< left<<grade << "\t\tSatisfactory!\n\n";
}
else if (grade> 79 && grade< 85 ) {
cout << " " << setw(4)<< left<<grade << "\t\tFine!\n\n";
}
else if (grade> 74 && grade< 80 ) {
cout << " " << setw(4)<< left<<grade << "\t\t\Fair!\n\n";
}
else if (grade> -1 && grade < 75 ) {
cout << " " << setw(4)<< left<<grade << "\t\t\Poor.\n\n";
}
else {
cout << " " << setw(4)<< left<< " " << "\t\t\Invalid Input.\n\n";
}
system ("PAUSE");
return EXIT_SUCCESS;
}