为什么我这个代码还是不能执行for循环里面的内容,是NUM出错了吗,我应该怎么修改,才能使它实现删除的功能?extern int NUM = 0;//记住当前第几位可以输入数据 void delete()//删除 { char select; int delenum = 0; system("cls"); while (1) { printf("请输入你要删除的学生信息的学号:\n"); scanf("%d", &delenum); for (int i = 0; i < NUM; i++) { if (stu[i].id == delenum) { //找到了需要删除的学生信息的学号 for (int j = i; j < NUM; j++){ stu[j] = stu[j + 1]; } NUM--; printf("学号为%d的学生删除成功\n", delenum); } if (i == NUM - 1) { printf("\n\n\n\t您输入的学号不存在\n"); } } printf("\n\n\n\t\t如果要继续删除请按“y”或“Y”,按其他键返回主菜单\n"); scanf(" %c", &select, 21); if (select == 'y' || select == 'Y') { continue; } else { return 0; } getch(); } }
时间: 2024-03-24 15:38:53 浏览: 69
实例while循环-java中的语法理解
在你这段代码中,声明了一个全局变量`NUM`,但是在定义时使用了赋值操作,这是不允许的。因为全局变量的定义必须放在函数外面,而赋值操作必须放在函数内部。所以你需要将赋值操作删除,只保留变量的声明和定义即可。
修改后的代码如下:
```
extern int NUM;//记住当前第几位可以输入数据
void delete()//删除
{
char select;
int delenum = 0;
system("cls");
while (1)
{
printf("请输入你要删除的学生信息的学号:\n");
scanf("%d", &delenum);
for (int i = 0; i < NUM; i++)
{
if (stu[i].id == delenum)
{
//找到了需要删除的学生信息的学号
for (int j = i; j < NUM; j++){
stu[j] = stu[j + 1];
}
NUM--;
printf("学号为%d的学生删除成功\n", delenum);
}
if (i == NUM - 1) {
printf("\n\n\n\t您输入的学号不存在\n");
}
}
printf("\n\n\n\t\t如果要继续删除请按“y”或“Y”,按其他键返回主菜单\n");
scanf(" %c", &select, 21);
if (select == 'y' || select == 'Y') {
continue;
}
else {
return 0;
}
getch();
}
}
```
这样,你的代码就可以正确执行`for`循环里面的内容了。
阅读全文