数据结构day2(2023.7.15)

news2024/11/16 23:46:22

一、Xmind整理:

 

二、课上练习:

练习1:定义车的信息:品牌,单价,颜色,车牌号

struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    }a;
    struct Car//结构体自定义类型
    struct Car a;
    struct Car arr[3]
    struct Car *p;

练习2:间接定义变量按顺序初始化

 struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    };
    struct Car car={"大众",123456,"白色"};
    car.name

练习3: 间接定义变量不按顺序初始化

struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    };
    struct Car car={.price=123456,.color="白色",.id="沪A1111"};

练习4: 间接定义变量,单个赋值

 struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    };
    struct Car car;
    strcpy(car.name,"大众");
    car.price=123456;
    strcpy(car.color,"白色");
    strcpy(car.id,"沪A88888");

练习5: 间接定义变量,输入赋值

 struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    };
    struct Car car;
    scanf("%s",car.name);
    scanf("%d",&car.price);
    scanf("%s",car.color);
    scanf("%s",car.id);

练习6:直接定义变量按顺序初始化

 struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    }car={"大众",123456,"白色","沪A1111"};

练习7:直接定义变量不按顺序初始化 

   struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    }car={.price=123456,.color="白色",.id="沪A1111",.name="大众"};

练习8:直接定义变量,单个赋值 

struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    }car;
    strcpy(car.name,"大众");
    car.price=123456;
    strcpy(car.color,"白色");
    strcpy(car.id,"沪A88888");

练习9:直接定义变量,输入赋值 

        struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    }car;
    scanf("%s",car.name);
    scanf("%d",&car.price);
    scanf("%s",car.color);
    scanf("%s",car.id);

练习10:只有直接定义可以省略结构体名,无名结构体 

 struct 
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    }car;

练习11:间接定义变量按顺序初始化 

  struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    };
    struct Car car[3]={"大众",123456,"白色","沪A1111",
                        "大众",123456,"白色","沪A2222",
                        "大众",123456,"白色","沪A33333"};

练习12:间接定义变量不按顺序初始化 

 struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    };
    struct Car car[3]={[0]={.price=123456,.color="白色",.id="沪A1111",.name="大众"},
                       [2]={.price=123456,.color="白色",.id="沪A2222",.name="大众"},
                        [1]={.price=123456,.color="白色",.id="沪A3333",.name="大众"}};

练习13: 间接定义变量,单个赋值

    struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    };
    struct Car car[3];
    car[0]:第一辆车的所有信息
    car[0].name:第一辆车的品牌
    car[2].id
    
    strcpy(car[0].name,"大众");
    car[0].price=123456;
    strcpy(car[0].color,"白色");
    strcpy(car[0].id,"沪A88888");
    
       strcpy(car[1].name,"大众");
    car[1].price=123456;
    strcpy(car[1].color,"白色");
    strcpy(car[1].id,"沪A88888");
    
       strcpy(car[2].name,"大众");
    car[2].price=123456;
    strcpy(car[2].color,"白色");
    strcpy(car[2].id,"沪A88888");

练习14: 间接定义变量,输入赋值

struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    };
    struct Car car[3];
    for(int i=0;i<3;i++)
    {
        scanf("%s",car[i].name);
        scanf("%d",&car[i].price);
        scanf("%s",car[i].color);
        scanf("%s",car[i].id);
    }

练习15:直接定义变量按顺序初始化

  struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    } car[3]={"大众",123456,"白色","沪A1111",
                        "大众",123456,"白色","沪A2222",
                        "大众",123456,"白色","沪A33333"};

练习16:直接定义变量不按顺序初始化

  struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    }car[3]={[0]={.price=123456,.color="白色",.id="沪A1111",.name="大众"},
                       [2]={.price=123456,.color="白色",.id="沪A2222",.name="大众"},
                        [1]={.price=123456,.color="白色",.id="沪A3333",.name="大众"}};

练习17:直接定义变量,单个赋值

    struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    }car[3];
    car[0]:第一辆车的所有信息
    car[0].name:第一辆车的品牌
    car[2].id
    
    strcpy(car[0].name,"大众");
    car[0].price=123456;
    strcpy(car[0].color,"白色");
    strcpy(car[0].id,"沪A88888");
    
       strcpy(car[1].name,"大众");
    car[1].price=123456;
    strcpy(car[1].color,"白色");
    strcpy(car[1].id,"沪A88888");
    
       strcpy(car[2].name,"大众");
    car[2].price=123456;
    strcpy(car[2].color,"白色");
    strcpy(car[2].id,"沪A88888");

练习18: 直接定义变量,输入赋值

  struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    }car[3];
    for(int i=0;i<3;i++)
    {
        scanf("%s",car[i].name);
        scanf("%d",&car[i].price);
        scanf("%s",car[i].color);
        scanf("%s",car[i].id);
    }

练习19:结构体指针指向普通结构体变量的地址 

   struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    };
    struct Car c={.price=123456,.color="白色",.id="沪A1111",.name="大众"};
    struct Car *p=&c;

练习20: 结构体指针指向结构体数组的地址

struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10]    //颜色
        char id[20]        //车牌号
    };
    struct Car  car[3]={"大众",123456,"白色","沪A1111",
                        "大众",123456,"白色","沪A2222",
                        "大众",123456,"白色","沪A33333"};
    struct Car *p=car;

练习21:结构体指针指向堆区空间的首地址

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
   struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10];    //颜色
        char id[20]    ;    //车牌号
    };
//输出对去空间内存
void Output(struct Car *p,int len)
{

    for(int i=0;i<len;i++)
    {
    //    printf("%s\t%d\t%s\t%s\n",(p+i)->name,(p+i)->price,(p+i)->color,(p+i)->id);

    printf("%s\t%d\t%s\t%s\n",(*(p+i)).name,(*(p+i)).price,(*(p+i)).color,(*(p+i)).id);
    }
}
//在堆区空间申请
struct Car * create()
{
    
    struct Car *p=(struct Car *)malloc(sizeof(struct Car)*3);//
    if(NULL == p)
    {
    return NULL;
    }
    return p;

}
//在堆区实现循环输入
void Input(struct Car *p ,int n)
{

    for(int i=0;i<3;i++)
    {
    scanf("%s",(p+i)->name);
    scanf("%d",&(p+i)->price);//(p+i)->price===>price
    scanf("%s",(p+i)->color);
    scanf("%s",(p+i)->id);
    }

}
//释放堆区空间
struct Car * free_space(struct Car *p)
{
    if(NULL==p)
    {
    return NULL;
    }
    free(p);
p=NULL;
    return p;
}
int main(int argc, const char *argv[])
{
    /*
    struct Car  car[3]={"大众",123456,"白色","沪A1111",
                        "大众",123456,"白色","沪A2222",
                        "大众",123456,"白色","沪A33333"};
    struct Car *p=car;
    Output(p,3);*/
    
    struct Car *p=create();

    Input(p,3);
    Output(p,3);
    p=free_space(p);

    return 0;
}

练习22:结构体的引用 

  struct Car
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10];    //颜色
        char id[20]    ;    //车牌号
    };
    struct Car a={"大众",123456,"白色","沪A1111"};
    struct Car b;
    //把a赋值给b
    strcpy(b.name,a.name);
    b.price=a.price;
    strcpy(b.color,a.color);
    strcpy(b.id,a.id);
    a:表示所有信息
    b=a;

练习23:typedef和结构体结合 

//typedef int a,arr[],p;

//typedef int arr[];

 typedef struct  
    {
        char name[20];    //品牌
        int price;        //单价
        char color[10];    //颜色
        char id[20]    ;    //车牌号
    }car_t,car_arr[3],*car_p ;//a==》car_p 
car_t:不是变量名,是普通结构体类型别名
car_arr:不是结构体数组名,是结构体数组的别名
car_p:不是结构体指针变量名,是结构体指针的别名
当typedef和结构体结合时,结构体名可以省略不写

练习24:结构体嵌套普通结构       

               定义一个学生:姓名、性别、出生日期【年月日】 

    typedef struct
    {
        int year,month,day;
    }Birthday;
    typedef struct
    {
        char name[10];
        char sex;
        Birthday bir;
    }Stu;
    Stu student={"张三",'M',2000,7,14};
    printf("%s %c %d年%d月%d日\n",student.name,studnet.sex,student.bir.year,student.bir.month,student.bir.day);

练习25:结构体嵌套结构体数组

               定义一个人的信息:姓名,性别,年龄,车辆多辆【品牌,单价】 

 typedef struct
    {
        char name[10];
        int price;    
    }Car_t;
    typedef struct
    {
        char name[10];
        char sex;
        int age;
        Car_t arr[2]; 
    }person;
    person per={"张三",'M',18,"奔驰",555555,"宝马",666666};
    printf("",per.name,per.sex,per.age,per.arr[0].name,per.arr[0].price,per.arr[1].name,per.arr[1].price);

练习26:结构体字节计算 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
    typedef struct
    {
    int a;
    float b;

    }A_t;
    A_t var;
    printf("&var=%p\t&var.a=%p\t&var.b=%p\n",&var,&var.a,&var.b);
    printf("sizeof(A_t)=%ld\n",sizeof(A_t));//8

    typedef struct{
    char a;
    double b;
    }B_t;
B_t var1;
    printf("&var1=%p\t&var1.a=%p\t&var1.b=%p\n",&var1,&var1.a,&var1.b);
    printf("sizeof(B_t)=%ld\n",sizeof(B_t));//16

    typedef struct
    {
    int a;
    char b;
    float c;
    char *p;
    char d;
    }C_t;
C_t c;
    printf("c.a=%p\n",&c.a);
    printf("c.b=%p\n",&c.b);
    printf("c.c=%p\n",&c.c);
    printf("c.p=%p\n",&c.p);
    printf("c.d=%p\n",&c.d);
    printf("sizeof(C_t)=%ld\n",sizeof(C_t));//32
    
    typedef char a_str[5];    
    typedef struct
    {
    a_str a;
    int b;
    }D_t;
    
    printf("sizeof(D_t)=%ld\n",sizeof(D_t));//12

    typedef struct{
    char a;
    double b;
    }E_t;
    typedef struct 
    {
    char a;
    short b;
    E_t c;
    }F_t;

    printf("sizeof(F_t)=%ld\n",sizeof(F_t));//24
    return 0;
}

 练习27:共用体:默认为第一个元素赋值

typedef union 
    {
    int a;
    char b;
    double c;
    }A_t;
A_t var={97};//默认为第一个成员赋值

练习28:指定某一个成员赋值

typedef union 
    {
    int a;
    char b;
    double c;
    }A_t;
A_t var1={.c=55.66};//指定为某一成员赋值

练习29:共用体和结构体结合【共用体在结构体外】

    typedef union
    {
        int a;
        double b;    
    }A_t;
    typedef struct
    {
        int a_v;
        A_t var;   
    }B_t;
    B_t a={100,20};//默认为共用体第一个成员a赋值
    B_t b={100,.var.b=55.66};//指定共用体成员b赋值
    a.a_v=100
    a.var.a=20
    
    b.a_v=100
    b.var.b=55.66

练习30: 共用体和结构体结合 【共用体在结构体内】不建议写共用体名

typedef struct
    {
        int a_v;
        union 
        {
            int a;
            double b;    
        };
    }B_t;
    B_t b={100,.b=55.66};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/757218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring【 Spring整合MyBatis、SpringAOP(AOP简介 、AOP相关术语、AOP入门)】(五)-全面详解(学习总结---从入门到深化)

目录 Spring整合MyBatis_准备数据库和实体类 Spring整合MyBatis_编写持久层接口和service类 Spring整合MyBatis_Spring整合Junit进行单元测试 Spring整合MyBatis_自动创建代理对象 SpringAOP_AOP简介 SpringAOP_AOP相关术语 SpringAOP_AOP入门 Spring整合MyBatis_准备数据…

推荐几个github上非常受欢迎的库

推荐几个github上非常受欢迎的库 The Book of Secret Knowledge the-book-of-secret-knowledge 这个仓库里边包含了一系列非常有趣的手册、备忘单、博客、黑客、单行话、cli/web 工具等。 Coding Interview University coding-interview-university 这里列出的项目可以帮助…

基于Ubuntu20.4的TMS320C6678开发环境(CCS8.3.1)的搭建

网上关于ccs的安装大多是基于ccs5及以前的版本安装介绍或基于windows版本的ccs软件的安装,没有关于linux系统上安装CCS8.3.1的集成开发环境。本文介绍在ubuntu20.4的系统上安装ccs8.3.1的DSP开发环境&#xff0c;本文包括CCS软件和插件的下载&#xff0c;安装。本文在ubuntu20.…

fpga下载程序到flash后无法在重新上电后自动加载程序

可能是接的调试器没有断电&#xff0c;断电一次再给调试器上电。如果调试器一直连着可以连续断电上电fpga开发板&#xff0c;直到成功。fpga貌似上电后什么程序都不加载则引脚为高电平&#xff0c;而vivado默认.xdc的BITSTREAM.CONFIG.UNUSEDPIN&#xff08;未使用的引脚&#…

vue3 - 01搭建工程

1. 使用vue-cli创建工程 1. 命令&#xff1a;vue create xxx2. 选择vue3版本3. 进入目录4. 运行&#xff1a; npm run serve 在执行完运行指令后如果报错请查看是否是以下错误&#xff0c;如果是可以按以下步骤进行解决&#xff1a; ERROR in Conflict: Multiple assets emit …

命令执行绕过

首先以一道BUUCTF题目来开下胃 查看flag&#xff1a; 其次给大家上主菜-----命令执行绕过 命令执行漏洞绕过方式&#xff1a; 管道符 windows中常见管道符&#xff1a; | 直接执行后面的语句 || 如果前面命令是错的那么就执行后面的语句&#xff0c;否则只执行前面的语…

DEV C++ 更改界面语言

第一步&#xff1a;选中tools&#xff0c;然后从里面找Environment optional 第二步&#xff1a;从里面找到Language选项&#xff0c;找到简体中文 选中简体中文后点击“OK”就可以了

go语言 socket: too many open files 错误分析

问题背景&#xff1a; 近期针对老的PHP接口做了迁移重构&#xff0c;用golang重新实现&#xff0c;在上线之前&#xff0c;测试进行了压测&#xff0c;压测的量级为&#xff1a;200请求/s, 连续请求10s&#xff0c;发现接口出现大量超时错误&#xff0c;查看日志发现错误信息为…

前缀和模板算法

一)模板前缀和 【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) 前缀和:快速的得出数组中某一段连续区间的和 暴力破解的话需要从头到尾的进行遍历&#xff0c;时间复杂度就可以达到O(N)&#xff0c;而前缀和时间复杂度是可以达到O(1)的 第一步:预处理创建出一个前缀和数组dp&a…

RTMP简介

简介 RTMP协议是Real Time Message Protocal(实时传输协议的缩写)&#xff0c;同时Adobe公司提供的一种应用层协议&#xff0c;用来解决多没意思数据流传输的 多路复用和分包问题。 RTMP是应用层协议&#xff0c;采用TCP来保证可靠的传输在TCP完成握手连接建立后&#xff0c…

【动手学深度学习】--03.多层感知机MLP

文章目录 多层感知机1.原理1.1感知机1.2多层感知机MLP1.3激活函数 2.从零开始实现多层感知机2.1初始化模型参数2.2激活函数2.3 模型2.4损失函数2.5训练 3.多层感知机的简洁实现3.1模型3.2训练 多层感知机 1.原理 官方笔记&#xff1a;多层感知机 1.1感知机 训练感知机 收敛定…

SEO 基础知识? 2023学习SEO最佳指南

文章目录 搜索引擎优化基础知识什么是搜索引擎优化&#xff1f;为什么搜索引擎优化很重要&#xff1f;SEO有什么好处&#xff1f;如何做搜索引擎优化关键词研究内容优化网站结构优化&#xff08;页面SEO&#xff09;外部链接优化移动优化分析和迭代(技术SEO) 为 SEO 成功做好准…

蓝牙技术|低功耗蓝牙和LE Audio助力游戏设备行业发展

去年&#xff0c;蓝牙技术联盟官方宣布推出LE Audio&#xff0c;它以BLE为基础&#xff0c;旨在更好地兼顾音频质量和低功耗&#xff0c;以在多种潜在应用中显著增强用户体验。这在游戏行业中引起了轰动&#xff0c;由于其延迟显著降低&#xff0c;LE Audio在增强游戏体验方面展…

单片机第一季:零基础9——直流电机和步进电机

目录 1&#xff0c;直流电机 2&#xff0c;步进电机 1&#xff0c;直流电机 直流电机是指能将直流电能转换成机械能&#xff08;直流电动机&#xff09;或将机械能转换成直流电能&#xff08;直流发电机&#xff09;的旋转电机。它是能实现直流电能和机械能互相转换的电机。…

Jenkins的安装部署以及基本使用

前言&#xff1a; 今天有空大概记录的一个作为一个测试人员日常中Jenkins的使用。 一、环境准备 在安装使用Jenkins前我们要先安装jdk&#xff0c;这里博主选择的是jdk11。我们先删除旧的jdk然后安装全新的jdk。 1、先看下当前我们的jdk版本。 2、查看jdk安装路径&#xff1…

Simulink仿真模块 - Unit Delay

Unit Delay:将信号延迟一个采样期间 在仿真库中的位置为:Simulink / Discrete HDL Coder / Discret 模型为: 双击模型打开参数设置界面,如图所示: 说明 Unit Delay 模块按指定的采样期间保持和延迟输入。当放置于迭代子系统中时,该模块将其输入保持并延迟一个迭代。此…

视频文件一键批量去除水印需要用到什么剪辑软件

刚接触视频剪辑这个行业的小伙伴在找视频素材的过程中&#xff0c;如果发现视频带有水印是不是非常头疼&#xff0c;不知道怎么处理这件事。那今天我们就来聊聊怎么才能快速批量去除视频的水印呢&#xff1f;今天小编给大家带来一个好方法&#xff0c;一起来看看吧。 一、首先我…

Redis实战案例17-Redisson可重入的原理

可重入原理分析 为什么自定义的Redis实现分布式锁不能实现可重入 method1中调用了method2方法&#xff0c;属于是同一线程内的操作&#xff0c;但是当method1中获取了锁之后&#xff0c;method2中就无法获取锁了&#xff0c;这就是同一线程无法实现可重入&#xff1b; 如何解决…

Windows上查看服务器上tensorboad内容

文章目录 前言一、SSH的设置二、tensorboard命令 前言 本篇文章是针对于局域网内的服务器的tensorboard可视化&#xff0c;由于设置方式稍微有点复杂&#xff0c;导致我每次隔了一段时间之后&#xff0c;就不知道该怎么查看tensorboard了&#xff0c;每次都要百度搜一大堆资料…

安达发|选择APS排程系统一定要注意这五大问题

随着信息技术的迅速发展&#xff0c;云计算已成为企业信息化建设的重要领域。在云计算中&#xff0c;aps是企业服务器环境中常见的虚拟化解决方案。然而&#xff0c;市场上有许多aps系统可供选择&#xff0c;企业在选择合适的系统时需要综合考虑多种因素。本论文将从这个五个角…