精华内容
下载资源
问答
  • 结构体数组

    2021-04-04 17:25:09
    显然就要用数组,因为数组是存放同一类型的数据,这里的数组类型为结构体,所以称为结构体数组结构体数组和整型数组都差不多,不同的地方就在于每个数组元素都是一个结构体类型的数据,它们都有各自的成员项。 ...

    一个结构体变量中可以存放一组有关联的数据,(如一个学生的名字,成绩),那如果有10个学生该怎么办呢?显然就要用数组,因为数组是存放同一类型的数据,这里的数组类型为结构体,所以称为结构体数组。

    结构体数组和整型数组都差不多,不同的地方就在于每个数组元素都是一个结构体类型的数据,它们都有各自的成员项。

    下面用一段代码来说明结构体数组的定义和引用:

    #include <stdio.h>
    #include <string.h>
    #include<stdlib.h>
    
    struct Student{
    
        int score;
        char* name;
    };
    
    int main()
    {
        struct Student stu[3]; //定义了一个结构体数组stu,有三个元素
        struct Student Max;
        struct Student Min;
        
        int i;
        int cnt = 0;
        float average = 0;
    
        for(i = 0;i < sizeof(stu)/sizeof(stu[0]);i++){
            printf("请输入第%d个学生的名字\n",i+1);
            stu[i].name = (char*)malloc(128);  //注意给name开辟空间
            memset(stu[i].name,'\0',128);
            scanf("%s",stu[i].name);
    
            printf("请输入第%d个学生的分数\n",i+1);
            scanf("%d",&stu[i].score);
    		if(stu[i].score > 100 || stu[i].score < 0){
    
                printf("请输入0 - 100以内的数\n");
                system("pause");
                exit(-1);
            }
        }
    
        for(i = 0;i < sizeof(stu)/sizeof(stu[0]);i++){
    
            printf("第%d个学生名字叫%s\n",i+1,stu[i].name);
            printf("第%d个学生的分数为%d\n",i+1,stu[i].score);
        }
    
    //让最小值和最大值都等于结构体数组的第一项,因为Max和stu为同一类型,所以可以赋值
        Max = stu[0];  
        Min = stu[0];
        for(i = 0;i < sizeof(stu)/sizeof(stu[0]);i++){
    
            if(Max.score < stu[i].score){
    
                Max = stu[i];   //注意交换的是整个人
            }
        }
    
        for(i = 0;i < sizeof(stu)/sizeof(stu[0]);i++){
    
            if(Min.score > stu[i].score){
    
                Min = stu[i]; 
            }
        }
    
        for(i = 0;i < sizeof(stu)/sizeof(stu[0]);i++){
            
            cnt += stu[i].score;
        }
        
        average = (float)cnt/i;
    
        printf("考最高分的是%s,分数是%d\n",Max.name,Max.score);
        printf("考最低分的是%s,分数是%d\n",Min.name,Min.score);
        printf("平均分等于%f\n",average);
    
        system("pause");
        return(0);
    }
    

    在这里插入图片描述
    上面代码是一个找最高分,最低分,平均分的一个代码,代码中定义了一个结构体数组struct Student stu[3],输入的名字放入stu[i].name中,分数放入stu[i].score中,其实和整型数组的访问大同小异,都是由三个元素组成(stu[0]、stu[1]、stu[2]),访问也是一样的,但是要注意的是结构体数组中单独的一项表示一个结构体,一项里面都有自己的成员。

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,773
精华内容 8,709
关键字:

结构体数组