修改后的代码如下:

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;
}

代码修改说明:

  1. 修改输入方式:
    • char name; 修改为 char name[20];,使用字符数组来存储学生姓名。
    • scanf("%d", &name); 修改为 scanf("%s", name);,使用 %s 格式化字符串来读取输入的姓名。
  2. 修改比较函数:
    • 使用 strcmp(name, PIC->st[i].name) == 0 来比较字符串,而不是直接使用 == 进行比较。
  3. 修改循环条件:
    • 将循环条件改为 for (i = 0; i < PIC->n; i++),从索引 0 开始遍历。
  4. 修改查无此人判断:
    • 使用 if (i == PIC->n) 来判断是否遍历完所有学生记录,如果遍历完,则说明查无此人。

优化后的代码使用了更加准确的字符串比较函数 strcmp,并修改了输入方式和循环条件,使其更符合实际需求。同时,通过判断循环结束条件来判断是否查无此人,提高了代码的健壮性。

C语言查找学生信息代码优化:修改输入方式和比较函数

原文地址: https://www.cveoy.top/t/topic/oR8z 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录