提示用户输入有误并引导其修改

想要优化代码,使得当输入数字有误的时候,能提示用户输入有误并引导其输入正确数字并输出等级。
已完成代码如下:
//----------------------代码1-2----------------------
#include<iostream>
using namespace std;
int main(){
    int grades;
    cout << "请输入学生成绩:"<<endl;
    cin >> grades;
    switch (grades / 10) {
    case 10:
    case 9:cout << "成绩等级:A"<<endl; break;
    case 8:cout << "成绩等级:B"<<endl; break;
    case 7:cout << "成绩等级:C"<<endl; break;
    case 6:cout << "成绩等级:D"<<endl; break;
    case 5:
    case 4:
    case 3:
    case 2:
    case 1:
    case 0:cout << "成绩等级:E"<<endl; break;
    default:cout << "输入成绩有误,请重新输入!"<<endl; break;
    }
    system("pause");
    return 0;
}
//----------------------代码1-2----------------------


goto语句可解决,也可以用while循环加一个flag进行判断,代码如下(goto实现):

//----------------------代码1-2----------------------
#include<iostream>
using namespace std;
int main(){
    int grades;
    INPUT:
    cout << "请输入学生成绩:"<<endl;
    cin >> grades;
    switch (grades / 10) {
    case 10:
    case 9:cout << "成绩等级:A"<<endl; break;
    case 8:cout << "成绩等级:B"<<endl; break;
    case 7:cout << "成绩等级:C"<<endl; break;
    case 6:cout << "成绩等级:D"<<endl; break;
    case 5:
    case 4:
    case 3:
    case 2:
    case 1:
    case 0:cout << "成绩等级:E"<<endl; break;
    default:cout << "输入成绩有误,请重新输入!"<<endl; goto INPUT;break;
    }
    system("pause");
    return 0;
}
//----------------------代码1-2----------------------

加循环