五、结构体类型

目录

1.结构体的基础知识

(1)结构体类型的变量、数组和指针变量的定义

(2)对结构体成员变量的引用

2.访问结构体成员、

 3.计算结构体数组的平均值

4.结构体数组的最大值和最小值

 5.在结构体数组中查找元素

6.结构体数组的排序


1.结构体的基础知识

(1)结构体类型的变量、数组和指针变量的定义

struct student
{
    char name[12];
    char sex;
    struct date birthday;
    float sc[4];
}std,pers[3],&pstd;

(2)对结构体成员变量的引用

结构体变量名.成员名          std.name

指针变量名->成员名           pstd->name

(*指针变量名).成员名         (*pstd).name

2.访问结构体成员、

//求n个幂数之和
double fun(struct mpow *x,int n)
{
    int i,j;
    double sum=0.0;
    for(i=0;i<n;i++)
    {
        double p=1.0;
        for(j=0;j<x[i].t;j++)
        {
            p=p*x[i].a;
        }
        sum+=p;
    }  
    return sum;
}

 3.计算结构体数组的平均值

//将高于等于平均分的学生数据存放到 b 中,高于等于平均分的学生人数通过 n 传回
double fun(STREC *a,STREC *b,int *n)
{
    int i;
    double av=0;
    //求平均值
    for(i=0;i<N;i++)
        av+=a[i].s;
    av=av/N;
    //高于等于平均分的数据和人数
    for(i=0;i<N;i++)
    {
        if(a[i].s>=av)
        {
            b[*n]=a[i];//高于等于平均分的数据
            *n=*n+1;//高于等于平均分的人数
        }
    }  
    return av;
}

4.结构体数组的最大值和最小值

把分数最高的学生数据放到 b 中
int fun(STREC *a,STREC *b)
{
    int i,j,k=0;
    int max=a[0].s;
    for(i=0;i<N;i++)
    {
        if(a[i].s>max) max=a[i].s;
    }
    for(j=0;j<N;j++)
    {
        if(a[j].s==max)
        b[k++]=a[j];
    }
    return k;//分数最高的人数
}

 5.在结构体数组中查找元素

STREC fun(STREC *a,char *b)
{
    int i;
    STREC a1={"\0",-1}
    for(i=0;i<N;i++)
    {
        if(strcmp(a[i].num,b))
            s1=a[i];
    }
    return s1;
}

6.结构体数组的排序

void fun(STREC a[])
{
    int i,j,k=0;
    STREC t,max;
    for(i=0;i<N;i++)
    {   
        max=a[i];
        for(j=i+1;j<N;j++)
            if(a[j].s>max.s)
            {
                max=a[j];
                k=j;
            }
        t=a[i];
        a[i]=max;
        a[k]=t;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊不胜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值