Arrays 为什么我的结构阵列不工作?

Arrays 为什么我的结构阵列不工作?,arrays,c,pointers,structure,Arrays,C,Pointers,Structure,编写一个程序,定义struct student以保存学生的以下信息: 姓氏、其他姓名、地址、年龄。该程序应具有以下功能:  一个函数inputStudent(),它将student结构作为参数,并允许 存储在struct参数中的数据。  函数displayStudent(),它将student结构作为参数并显示 屏幕上的属性值。 程序应声明两个student类型的变量,允许输入两个student和 将它们存储在这些变量中。然后,程序应显示较老用户的姓名和地址 两人中的一个学生。如果他们年龄相

  • 编写一个程序,定义struct student以保存学生的以下信息: 姓氏、其他姓名、地址、年龄。该程序应具有以下功能:  一个函数inputStudent(),它将student结构作为参数,并允许 存储在struct参数中的数据。  函数displayStudent(),它将student结构作为参数并显示 屏幕上的属性值。 程序应声明两个student类型的变量,允许输入两个student和 将它们存储在这些变量中。然后,程序应显示较老用户的姓名和地址 两人中的一个学生。如果他们年龄相同,程序应显示姓名和姓名 他们两人的地址
  • 修改问题2中的程序,以便main()函数声明 struct student,允许输入整数值n,并为n个学生执行数据输入, 然后将它们显示回来。然后,该程序应显示用户的姓名、地址和年龄 阵列中最年轻的学生。如果有几个年龄最小的学生,该项目将 仅显示第一个

  • 我对问题2有问题。。我创建了一个结构数组,但我有错误,我不知道如何更正它们。 我犯了什么错误?请帮忙。多谢各位

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    struct student{
        char surname[50];
        char otherNames[70];
        char addr[50];
        int age;
    
    };
    struct student inputStudent(struct student *s){
    
        printf("Enter surname: ");
        fgets(s->surname,50,stdin);
    
        printf("Enter other names: ");
        fgets(s->otherNames,70,stdin);
    
        printf("Enter address: ");
        fgets(s->addr,50,stdin);
    
        printf("Enter age: ");
        scanf("%d",&s->age);
        getchar();
        printf("\n");
    
    }
    
    void displayStudent(struct student *s){
        printf("Surname: %s" ,s->surname);
        printf("Other names: %s", s->otherNames);
        printf("Address: %s ",s->addr);
        printf("\n");
    }
    int main()
    {
       
        struct student c[20];
        int n;
    
        printf("Enter a number: ");
        scanf("%d",&n);
    
        for(int i=0;i<20;i++){
            intputStudent(&c);
        }
        int youngest =100;
    
        for(int i=0;i<20;i++){
            if(c[i].age < youngest){
                displayStudent(&c[i]);
            }
        }
    
        return 0;
    }
    
    #包括
    #包括
    #包括
    结构学生{
    查氏[50];
    char其他名称[70];
    字符地址[50];
    智力年龄;
    };
    结构学生输入学生(结构学生*s){
    printf(“输入姓氏:”);
    fgets(s->姓氏,50,stdin);
    printf(“输入其他名称:”);
    fgets(s->otherNames,70,stdin);
    printf(“输入地址:”);
    fgets(s->addr,50,标准);
    printf(“输入年龄:”);
    scanf(“%d”,&s->age);
    getchar();
    printf(“\n”);
    }
    无效显示学生(结构学生*s){
    printf(“姓氏:%s”,s->姓氏);
    printf(“其他名称:%s”,s->otherNames);
    printf(“地址:%s”,s->addr);
    printf(“\n”);
    }
    int main()
    {
    结构学生c[20];
    int n;
    printf(“输入一个数字:”);
    scanf(“%d”和“&n”);
    
    对于(int i=0;i您应该只输入
    n
    学生,而不是
    20
    。您只需要将数组中当前学生的地址传递给
    inputstudior()
    ,而不是整个数组的地址

    然后在你输入所有数据后,你需要找到年龄最小的学生的索引。你正在打印每个年龄小于100岁的学生

        for(int i=0;i<n;i++){
            intputStudent(&c[i]);
        }
        int youngest = c[0].age;
        int youngest_index = 0;
    
        for(int i=1;i<n;i++){
            if(c[i].age < youngest){
                youngest = c[i].age;
                youngest_index = i;
            }
        }
        displayStudent(c[youngest_index]);
    

    for(int i=0;i
    i<20
    应该是
    i
    ——这不是你要求
    n
    的原因吗?在循环结束之前,你无法知道一个学生是否是最小的。你显示的是所有小于100岁的学生,而不是最小的学生。好吧,那么你“有错误”。您是否尝试阅读它们?您是否尝试找出它们所指的代码的哪一部分?您是否尝试将这些错误消息的文本放入搜索引擎?您是否尝试查找有关这些错误消息的堆栈溢出的其他问题?