完成图示的添加学生信息效果,若学生学号已经存在,给出相应提示。
时间: 2023-08-23 18:04:56 浏览: 135
好的,我们可以使用循环遍历数组,判断学号是否已经存在,如果已经存在,则给出提示,否则添加学生信息。
以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char name[20];
int id;
float score;
} Stu;
int main() {
Stu students[50];
int count = 0; // 已经添加的学生人数
int new_id; // 待添加的学生学号
int i;
char name[20];
float score;
int exist = 0; // 标记学号是否已经存在
while (1) {
printf("请输入学生姓名(输入0退出):");
scanf("%s", name);
if (strcmp(name, "0") == 0) {
break;
}
printf("请输入学生学号:");
scanf("%d", &new_id);
// 判断学号是否已经存在
for (i = 0; i < count; i++) {
if (students[i].id == new_id) {
printf("学号已经存在,请重新输入!\n");
exist = 1;
break;
}
}
if (exist) {
exist = 0;
continue;
}
printf("请输入学生分数:");
scanf("%f", &score);
// 添加学生信息
strcpy(students[count].name, name);
students[count].id = new_id;
students[count].score = score;
count++;
printf("添加成功!\n");
}
// 输出所有学生信息
printf("\n所有学生信息如下:\n");
for (i = 0; i < count; i++) {
printf("姓名:%s\t学号:%d\t分数:%f\n", students[i].name, students[i].id, students[i].score);
}
return 0;
}
```
在程序运行时,用户可以多次添加学生信息,如果输入的学号已经存在,则会给出相应提示。当用户输入0时,程序结束,并且输出所有学生信息。
需要注意的是,在判断学号是否已经存在时,我们使用了一个`exist`标记,当学号已经存在时,将其设置为1,下一次循环时继续判断。如果不使用这个标记,程序会直接进入添加学生信息的部分,导致重复添加相同的学生信息。