void stu_del()
{
int i = 0;
char sign = 'y';
string num;
while (sign != 'n' && sign != 'N')
{ {
cout << " ---------数据删除-----------\n";
cout << "请输入学号\n";
cin >> num;
while (stu[i].getId() != num && i < n)
i++;
if (i == n)
{
cout << "\t没有此!\n";
return;
}
if (i != n)
{
cout << "是否确认删除?(y/n)";
cin >> sign;
if (sign == 'y')
{
for (int j = i; j < n; j++)
{
stu[j] = stu[j + 1];
}
n--;
}
}
cout << "是否需要继续?(y/n)";
cin >> sign;
}
}
答案参考ChatGPT Plus版,整理汇总。希望能帮助你解决问题 在你提供的代码中,出现了两个问题导致报错:
多余的大括号:
在 while (sign != 'n' && sign != 'N')
后面的大括号是多余的,应该将其删除,否则会导致后续的代码块被包含在这个多余的大括号中。
函数定义位置错误:
错误提示中提到 "local function definitions are illegal",意思是在该位置定义函数是不合法的。根据你提供的代码,函数 stu_del()
的定义位置可能在其他函数或类的内部,导致这个错误。
为了修复这些问题,请按照以下步骤进行修改:
删除多余的大括号:
将 while (sign != 'n' && sign != 'N')
后面的大括号删除。
将函数定义放置在适当的位置:
确保函数 stu_del()
的定义在其他函数或类的外部,例如在主函数的上方或其他全局函数的下方。
修改后的代码应该如下所示:
void stu_del()
{
int i = 0;
char sign = 'y';
string num;
while (sign != 'n' && sign != 'N')
{
cout << "---------数据删除-----------\n";
cout << "请输入学号\n";
cin >> num;
while (stu[i].getId() != num && i < n)
i++;
if (i == n)
{
cout << "\t没有此!\n";
return;
}
if (i != n)
{
cout << "是否确认删除?(y/n)";
cin >> sign;
if (sign == 'y')
{
for (int j = i; j < n; j++)
{
stu[j] = stu[j + 1];
}
n--;
}
}
cout << "是否需要继续?(y/n)";
cin >> sign;
}
}
请根据以上修改建议进行代码的修正,如果还有其他问题,请随时提问。