程序默认为该数的前一位。Р原来的代码:Рchar StuInfoManager::menuSelect()Р{Р?cout<<"\n"Р <<"0. 显示记录\n"Р <<"1. 查询记录\n"Р <<"2. 增加记录\n"Р <<"3. 删除记录\n"Р <<"4. 修改记录\n"Р <<"5. 记录排序\n"Р <<"6. 保存记录\n"Р <<"7. 读取记录\n"Р <<"8. 新建学生信息文件\n"Р <<"9. 结束运行\n"Р <<"\n左边数字对应功能选择,请选0-9:";Р?string str;Р?char choice;Р?while(true)Р?{Р cin>>str;Р cin.ignore(); //从cin中将回车符提取出来Р choice=str[0];Р if(choice<'0'||choice>'9')Р cout<<"\n输入错误,重选0-9:";Р else Р break;Р?}Р?return choice;Р}Р调试截图:Р修改后的代码:Рchar StuInfoManager::menuSelect()Р{Р?char s[2];Р?;Р cout<<"\n"Р <<"1. 显示记录\n"Р <<"2. 查询记录\n"Р <<"3. 增加记录\n"Р <<"4. 删除记录\n"Р <<"5. 修改记录\n"Р <<"6. 记录排序\n"Р<<"7. 保存记录\n"Р <<"8. 读取记录\n"Р <<"9. 新建学生信息文件\n"Р <<"10. 结束运行\n"Р <<"\n左边数字对应功能选择,请选1-10:";Р?for( ; ; )Р?{Р gets(s);Р cn=atoi(s);Р <1||cn>10)Р printf("\n输入错误,重选1-10:");Р elseР break;Р?}Р?;Р}?Р调试截图: