更改错误代码,完善报错代码
时间: 2024-09-30 10:09:37 浏览: 53
在给定的代码中,错误在于使用`goto`标签直接跳转到`new_work`标记处,这使得控制流变得复杂并且可能导致意料之外的行为。为了改进这段代码并完善报错处理,我们可以删除`goto`,改为在内层循环结束后检查作业数量的有效性,然后在适当的位置退出循环。以下是修改后的代码:
```c
do
{
... // 原始的获取作业数量、输入作业信息以及显示菜单代码
for (int i = 0; i < n; i++)
{
// ... 原始的输入验证代码 ...
// 如果输入验证失败,这里可以直接继续下一次迭代
}
switch (choice)
{
... // 原始的调度算法选择代码 ...
case 3:
printf("\n");
n = 0; // 清零作业数量,重新开始
break;
}
// 在这里检查作业数量是否有效,如果无效,给出明确提示并继续循环
if (n <= 0 || n > MAX_JOBS)
{
printf("错误的作业数量!请重新输入\n");
scanf("%d", &n);
} else if (choice == 4)
{
printf("\n\t感谢使用,程序已退出。");
break; // 如果选择退出,跳出整个 do-while 循环
}
} while (choice != 4);
return 0;
```
通过这样的修改,我们避免了`goto`带来的潜在问题,同时保持了代码逻辑清晰。当用户输入无效时,程序会更友好地请求用户重新输入,并在合适的时机退出循环。
阅读全文