void add_student(struct student_grade *a) { int t,m=0; printf("请输入学生的id:\n"); scanf("%d",&t); for(int i=0;i<a->n;i++){ if(a->st[i].id==t) m=1; } if(m==0){ a->st[a->n].id=t; a->n++; } else{ printf("添加失败!\n"); } if(m==0){ printf("请输入学生的姓名:\n"); scanf("%s",a->st[a->n].name); printf("请输入学生各科的成绩:\n"); for(int i=0;i<10;i++) scanf("%d",&a->st[a->n].grade[i]); } }学好0001输入有bug
时间: 2024-01-02 11:04:31 浏览: 57
studentlist.rar_studentlist_单链表
这段代码存在一个问题,即在输入学生ID之后没有对输入的ID进行查重。如果输入的ID已经存在于数组中,则会出现添加失败的情况。
为了解决这个问题,可以在输入ID之后遍历已有的学生信息,如果输入的ID已经存在,则设置一个标志位m为1,否则将新的ID添加到数组中。
以下是修改后的代码:
```c
void add_student(struct student_grade *a) {
int t, m = 0;
printf("请输入学生的id:\n");
scanf("%d", &t);
for (int i = 0; i < a->n; i++) {
if (a->st[i].id == t)
m = 1;
}
if (m == 0) {
a->st[a->n].id = t;
a->n++;
printf("请输入学生的姓名:\n");
scanf("%s", a->st[a->n - 1].name);
printf("请输入学生各科的成绩:\n");
for (int i = 0; i < 10; i++)
scanf("%d", &a->st[a->n - 1].grade[i]);
}
else {
printf("添加失败!\n");
}
}
```
这样,就可以正确处理输入学号为0001的情况了。
阅读全文