A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

   结构体数组:
         用来存放大量的结构体相同的结构体变量.结构数组的每一个元素都是具有相同结构类型的下标结构变量
    结构体数组定义:
        定义格式:
       Struct 结构名{
                成员表列
           }数组名][数组长度];

结构体数组定义的第一种方式:
     1)定义结构体的同时,定义数组
        struct Student{

            int age;
            char *name;
            int s_no;
            float score;
        }stu[5];
         2)先定义结构体,后定义数组
         struct Student boy[5];

#include <stdio.h>

int main(int argc, const char * argv[]) {
   
    struct Student{
        
        int age;
        char *name;
        int s_no;
        float score;
        
        
    }stu[5];
   
    struct Student boy[5];
   
    return 0;
}
2.结构化数组的初始化和遍历
#include <stdio.h>
void test1(){


   
    //结构体数组的初始化方法
   
    //1、定义结构体数组的时候,进行初始化
    struct Student{
        
        char name[20];
        int age;
        
    }boys[3]={{"sb",18},{"zbz",38},{"cgx",28}};
   
    //2、定义的同时进行初始化
    struct Student girls[2]={{"fengjie",18},{"cjk",28}};
   
    //3、先定义后初始化,整体赋值
    struct Student ds[2];
    ds[0]=(struct Student){"xzmly",18};
    ds[1]=(struct Student){"bdjy",18};
   
    //4、先定义结构体数组,后初始化
   
    struct Student stu[2];
    //stu[0].name = "zhangsan";
    //strcpy(stu[0].name,"zhangsan");
    scanf("%s",stu[0].name);
    stu[0].age = 19;
   
    //    char ch[10];
    //    scanf("%s",ch);
   
   
    //2、结构数组的遍历**********
    for(int i=0;i<3;i++){
        
        printf("name:%s,age:%d\n",boys[i].name,boys[i].age);
    }
}

int main(int argc, const char * argv[]) {
    //结构体
    struct stu{
            int num;
            char *name;
            char sex;
            float score;
    };
   
    //1、定义结构体数组
    struct stu boy[5]={
                {101,"Li ping",'F',45},
                {102,"Zhang ping",'M',62.5},
                {103,"He fang",'F',92.5},
                {104,"Cheng ling",'M',87},
                {105,"Wang ming",'M',58}};
   
    //2、有一个循环
    //
    float sum = 0.0f;
    int count=0; //保存不及格的人数
    for (int i=0; i<5; i++) {
        
    //    计算总成绩
        sum+=boy[i].score;
    //    判断成绩是否小于60 ,如果小于了60 要让计算器+1
        if (boy[i].score<60) {
            
            count++;
        }else if (boy[i].score>=80 && boy[i].score<=100){
    //    判断是否大于80小于100
        
    //    如果在这个区间,应该输出姓名和成绩
            printf("姓名:%s,成绩:%.2f\n",boy[i].name,boy[i].score);
        }
    }
   
    printf("平均值:%.2f\n",sum/5);
    printf("不及格人得个数:%d\n",count);
   
    return 0;
}

2 个回复

正序浏览
前来顶一下
回复 使用道具 举报
总结的还不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马