C++学生管理系统
为什么输入学号和性别是正确的形式,也会出现格式错误请重新输入的情况,是哪里的语法弄错了么?顺便问问,怎样可以把字符数组定义的num的前四位限定一个输入数字范围,我们有输入限制要求,num的前四位输入要是合理年份!

C++学生管理系统
为什么输入学号和性别是正确的形式,也会出现格式错误请重新输入的情况,是哪里的语法弄错了么?顺便问问,怎样可以把字符数组定义的num的前四位限定一个输入数字范围,我们有输入限制要求,num的前四位输入要是合理年份!

将性别判断的 或改成与
while (0!=strcmp(sex,x)&&0!=strcmp(sex,y))
当性别 不为 男 且 不为女时进入循环
既然已经是C++了 可以用 std::string 来写 num 和判断性别
// 假定 num为 std::string
do{
cin >> num;
std::string year = num.substr(0,4);// 取学号前四位
int nyear = std::stoi(year);
if (num.size() != 12 &&nyear > 2023 && nyear < 1900)
cout <<"不符合条件请重新输入";
else
break;
} while (num.size() != 12 &&nyear > 2023 && nyear < 1900);
// sex 也为 std::string
if (sex != "男" && sex != "女")