美文网首页
结构体数组

结构体数组

作者: 1墨家巨子 | 来源:发表于2019-08-21 18:19 被阅读0次
    /*************************************************
       学生结构体
       姓名 成绩
       输入5个学生信息,求平均数
    ***************************************************/
    
    typedef struct student{
      char name[N];
      int grade;
    }students;
    void structTest(void){
        int sum=0,avg=0,n=0;
        int i;
        students stu[5]={
            {"zhangsan",21},
            {"lisi",56},
            {"test",55}
        };
        strcpy(stu[0].name,"Tom");//字符串赋值
        for(i=0;i<sizeof(stu)/sizeof(stu[0]);i++){
         scanf("%d %s",&stu[i].grade,&stu[i].name);
         sum=sum+stu[i].grade;
        }
        for(i=0;i<sizeof(stu)/sizeof(stu[0]);i++){
         printf("%d %s\n",stu[i].grade,stu[i].name);
        }
        printf("\n");
        avg=sum/(sizeof(stu)/sizeof(stu[0]));
        printf("avg=%d\n",avg);
        n=sizeof(stu[5].name)/sizeof(char);
        printf("n=%d\n",n);
    //    fflush(stdin);
    }
    
    /************************************************
    ***   定义结构体指针                              ***
    ***   传入学生姓名和成绩                       ***
    ***   求得学生平均成绩并且输出低于,  ***
    ***   平均成绩学生的姓名。                    ***
    *************************************************/
    typedef struct students{
        char name[10];
        float score;
    } student;
    /***********************************************
     ***  参数:                                             ***
     ***    结构体指针                                    ***
     ***    结构体数组元素个数                      ***
    ************************************************/
    void demo(student *stu,int size){
       int i;
       float sum=0;
       for(i=0;i<size;i++){
           sum+=stu[i].score;
       }
       float avg=sum/size;
       printf("%f\n",avg);
       for(i=0;i<size;i++){
           if(stu[i].score<avg)
       printf("%s\n",stu[i].name);
       }
    }
    
    /**************************************************
     *******              动态结构体数组           *******
     **************************************************/
    typedef struct student{
        char name[20];
        int sroce;
    }my_stu;
    void dyn_str_arr(void){
        int n=3;
        printf("输入动态空间大小");
        scanf("%d",&n);
        my_stu *pstu=(my_stu *)malloc(sizeof(my_stu)*n);
        int sum=0;
        int i;
        int avg=0;
        for(i=0;i<n;i++){
            srand((unsigned short int)time(NULL));//获取随机数的种子
            (pstu+i)->sroce=rand()%30+60;//获取60~90随机成绩
            sum+=pstu[i].sroce;//平均成绩求和
            printf("请输入第%d个学生的姓名:\n",i+1);
            scanf("%s",&(*(pstu+i)->name));
        }
        avg=sum/n;
        printf("平均成绩%d\n",avg);
        for(i=0;i<n;i++){
            if(pstu[i].sroce<=avg){
               printf("低于平均成绩的人%s\n",&(*(pstu+i)->name));
            }
        }
        free(pstu);
        pstu=NULL;
    }
    

    相关文章

      网友评论

          本文标题:结构体数组

          本文链接:https://www.haomeiwen.com/subject/elwisctx.html