void student_flush_num()//[9] 按学号删除 { int i,j,n; int num1[80],math1[80],english1[80],clang1[80]; char name1[50][30]; printf("请输入要删除的学生的学号:"); scanf("%d",&n); for(i=0;i<count;i++) {if(num[i]==n) break; } j=i; if(i>=count) { printf("未找到要删除的学生学号。"); } else { for(i=0;i<j;i++) { num1[i]=num[i]; strcpy(name1[i],name[i]); math1[i]=math[i]; english1[i]=english[i]; clang1[i]=clang[i]; } for(i=j;i<count;i++) { num1[i]=num[i+1]; strcpy(name1[i],name[i+1]); math1[i]=math[i+1]; english1[i]=english[i+1]; clang1[i]=clang[i+1]; } count=count-1; for(i=0;i<count;i++) { num[i]=num1[i]; strcpy(name[i],name1[i]); math[i]=math1[i]; english[i]=english1[i]; clang[i]=clang1[i]; } printf("删除成功。"); student_output(1); } } void student_flush_name()//[10] 按姓名删除 { int i,j; char n[80]; int num1[80],math1[80],english1[80],clang1[80]; char xm1[50][30]; printf("请输入要删除的学生姓名:"); scanf("%s",n); for(i=0;i<count;i++) {if(strcmp(n,name[i])==0) break; } j=i; if(i>=count) { printf("未找到要删除的学生姓名。"); } else { for(i=0;i<j;i++) { num1[i]=num[i]; name1[i]=name[i]; math1[i]=math[i]; english1[i]=english[i]; clang1[i]=clang[i]; } for(i=j;i<count;i++) { num1[i]=num[i+1]; name1[i]=name[i+1]; math1[i]=math[i+1]; english1[i]=english[i+1]; clang1[i]=clang[i+1]; } count=count-1; for(i=0;i<count;i++) { num[i]=num1[i]; name[i]=name1[i]; math[i]=math1[i]; english[i]=english1[i]; clang[i]=clang1[i]; } printf("删除成功。"); student_output(1); }用C语言完善
时间: 2023-12-02 15:02:09 浏览: 116
删除学生信息
5星 · 资源好评率100%
这段代码存在一些问题,需要进行完善。首先,在第10个函数中,name1是一个字符数组,但是在赋值时使用了赋值符号“=”,应该使用strcpy函数进行字符串的复制。其次,在删除学生信息时,应该同时删除对应的成绩信息,但是现在只删除了学生信息。最后,在删除学生信息时,应该判断是否有重复的学生信息,如果有,应该全部删除。
以下是完善后的代码:
void student_flush_num()//[9] 按学号删除
{
int i, j, n;
int num1[80], math1[80], english1[80], clang1[80];
char name1[50][30];
printf("请输入要删除的学生的学号:");
scanf("%d", &n);
for (i = 0; i < count; i++)
{
if (num[i] == n)
{
for (j = i; j < count - 1; j++)
{
num[j] = num[j + 1];
strcpy(name[j], name[j + 1]);
math[j] = math[j + 1];
english[j] = english[j + 1];
clang[j] = clang[j + 1];
}
count--;
printf("删除成功。\n");
student_output(1);
return;
}
}
printf("未找到要删除的学生学号。\n");
}
void student_flush_name()//[10] 按姓名删除
{
int i, j;
char n[80];
int num1[80], math1[80], english1[80], clang1[80];
char name1[50][30];
printf("请输入要删除的学生姓名:");
scanf("%s", n);
for (i = 0; i < count; i++)
{
if (strcmp(n, name[i]) == 0)
{
for (j = i; j < count - 1; j++)
{
num[j] = num[j + 1];
strcpy(name[j], name[j + 1]);
math[j] = math[j + 1];
english[j] = english[j + 1];
clang[j] = clang[j + 1];
}
count--;
printf("删除成功。\n");
student_output(1);
return;
}
}
printf("未找到要删除的学生姓名。\n");
}
阅读全文