C语言查找学生信息代码优化:修改输入方式和比较函数
修改后的代码如下:
int find_student_name(struct class_room* PIC)
{
int i;
char name[20]; // 修改为字符数组类型
printf("请输入要查找的学生姓名:\n"); // 修改提示信息
scanf("%s", name); // 修改输入方式为字符串
for (i = 0; i < PIC->n; i++) // 修改循环条件
{
if (strcmp(name, PIC->st[i].name) == 0) // 修改为字符串比较函数
{
printf("查有此人\n");
printf("the name is %s\n", PIC->st[i].name);
printf("the age is %d\n", PIC->st[i].age);
printf("the sex is %s\n", PIC->st[i].sex);
printf("the birth is %s\n", PIC->st[i].birth);
printf("the address is %s\n", PIC->st[i].address);
printf("the phone is %s\n", PIC->st[i].phone);
break;
}
}
if (i == PIC->n) // 修改查无此人的判断
{
printf("查无此人\n");
}
continue_2(PIC);
return i;
}
代码修改说明:
- 修改输入方式:
- 将
char name;修改为char name[20];,使用字符数组来存储学生姓名。 - 将
scanf("%d", &name);修改为scanf("%s", name);,使用%s格式化字符串来读取输入的姓名。
- 将
- 修改比较函数:
- 使用
strcmp(name, PIC->st[i].name) == 0来比较字符串,而不是直接使用==进行比较。
- 使用
- 修改循环条件:
- 将循环条件改为
for (i = 0; i < PIC->n; i++),从索引 0 开始遍历。
- 将循环条件改为
- 修改查无此人判断:
- 使用
if (i == PIC->n)来判断是否遍历完所有学生记录,如果遍历完,则说明查无此人。
- 使用
优化后的代码使用了更加准确的字符串比较函数 strcmp,并修改了输入方式和循环条件,使其更符合实际需求。同时,通过判断循环结束条件来判断是否查无此人,提高了代码的健壮性。
原文地址: https://www.cveoy.top/t/topic/oR8z 著作权归作者所有。请勿转载和采集!