zoukankan      html  css  js  c++  java
  • C 入门 第七节 结构体

    //声明结构体  关键字  struct

    // 声明一个用于描述学生对象的结构体类型
    // 声明成员变量时不能赋值,因为这是在声明结构体类型
    // struct student
    // {
    //     int num; //学号  //成员变量之间用分号;隔开
    //     char name[30]; //姓名  //必须指定字符数组的大小
    //     char sex;  //性别
    //     float score;  //分数
    // }; //不要忘了 ;

    // typedef struct student Student; //结构体重命名

    typedef struct birthdate
    {
        int year;
        int month;
        int day;
    }BirthDate;

    typedef struct student
     {
         int num; //学号  //成员变量之间用分号;隔开
         char name[30]; //姓名  //必须指定字符数组的大小
         char sex;  //性别
         float score;  //分数
         int age; //年龄
         BirthDate birthday;
     }Student; //不要忘了 ;


    int main(int argc, const char * argv[]) {
    /*
    //结构体数组构造类型
    //定义贼勾踢变量
    //struct 关键字
    //赋值 1. 设置初始值使用{} 2. 按照成员变量的顺序赋值 3.如果设置初始值为默认值0时使用{0}
        
        struct student stu1 = {1,"wangshuai",'m',88};
        struct student stu2 = {2,"lisi",'m',66};
    //结构体可以变量可以互相赋值
    //结构体变量定义之后,不能在整体赋值.只能给成员变量赋值
        struct student stu3 = stu1;
       
    #pragma  mark -------访问结构体成员变量--------
        
    //不能使用结构体变量名输出所有的成员变量
    //访问成员变量方式;结构体变量,成员变量
    //成员变量和基本类型变量一样使用:参与运算
        
        printf("%d ",stu1.num);
        printf("%s ",stu1.name);
        printf("%c ",stu1.sex);
        printf("%.2f ",stu1.score);
        
    // 修改成员变量 成员变量可以直接赋值
        stu1.score = 66;
        printf("%.2f ",stu1.score);
        strcpy(stu1.name,"wangwu");
        printf("%s ",stu1.name);
        
    // 将控制台输入的内容,存储到成员变量中
        struct student stu4 = {0};
        printf("请输入学生学号:");
        scanf("%d",&stu4.num); // . 优先级高于 &
        printf("%d ",stu4.num);
        
    #pragma mark -------trpedef----------
        
    //  typedef 要改的 改成什么   重命名
    //  int a = 3;
    //    typedef int low;
    //    low a = 3; // == int a =3;
    //结构体的声明方式
    // 1 . 匿名结构体,结构体声明和变量定义 组合在一起 基本不使用
    // 2 . 使用typedef声明结构体
    // 使用typedef为结构体类型起别名
        
        Student stu5 = {};

        
    // 练习 有三个学生,编程找出分数最⾼者以及年龄最小者。
        
        Student stu1 = {1,"litiandan",'m',68,17};
        Student stu2 = {2,"ligangdan",'m',72,18};
        Student stu3 = {3,"lijingdan",'f',86,16};
    //求分数最高的
        Student maxscore = {0};
        maxscore = stu1.score > stu2.score ? stu1 : stu2;
        maxscore = maxscore.score > stu3.score ? maxscore : stu3;
        printf("%.2f ",maxscore.score);
        
    //求年龄最小
        Student minage = {0};
        minage = stu1.age < stu2.age ? stu1 : stu2;
        minage = minage.age < stu3.age ? minage : stu3;
        printf("%d ",minage.age);

        
        //结构体的成员变量可以是其他结构体类型
        //结构体的成员变量也是结构体,使用{}赋值
        Student stu1 = {1,"tiandan",'m',98,17,{1998,11,11}};
        //访问成员变量,使用.逐层访问
        printf("year = %d month = %d day = %d ",stu1.birthday.year,stu1.birthday.month,stu1.birthday.day);
        stu1.birthday.year = 1990;
        printf("year = %d month = %d day = %d ",stu1.birthday.year,stu1.birthday.month,stu1.birthday.day);
    */

  • 相关阅读:
    CF676E:The Last Fight Between Human and AI
    BZOJ2079: [Poi2010]Guilds
    BZOJ4518: [Sdoi2016]征途
    BZOJ2216: [Poi2011]Lightning Conductor
    51nod1766 树上的最远点对
    洛谷P1257 平面上的最接近点对
    BZOJ2144: 跳跳棋
    BZOJ4773: 负环
    BZOJ4552: [Tjoi2016&Heoi2016]排序
    The Falling Leaves(建树方法)
  • 原文地址:https://www.cnblogs.com/wangshuai-1129/p/5079075.html
Copyright © 2011-2022 走看看