数据结构day2(2023.7.15)

一、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].idstrcpy(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].idstrcpy(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===>pricescanf("%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赋值给bstrcpy(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));//8typedef 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));//16typedef 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));//32typedef char a_str[5];    typedef struct{a_str a;int b;}D_t;printf("sizeof(D_t)=%ld\n",sizeof(D_t));//12typedef 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));//24return 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=100a.var.a=20b.a_v=100b.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.mzph.cn/news/566.shtml

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

相关文章

XXF(x-forwarded-for)

IP伪造 TCP/IP层面的IP伪造很难实现&#xff0c;因为更改后很难实现正常的TCP通信&#xff0c;但在HTTP层面的伪造就显得很容易。可以通过伪造XFF头进行IP伪造 XFF字段 X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTT…

MySQL基础

MySQL基础 数据库基础&#xff08;重点&#xff09;一.登陆选项的认识二.什么是数据库三.见一见数据库四.主流数据库五.服务器、数据库、表之间的关系六.MySQL架构七.SQL分类八.存储引擎 数据库基础&#xff08;重点&#xff09; 一.登陆选项的认识 mysql -h 127.0.0.1 -P 33…

计算机网络 day5 子网划分 - IP包 - arp协议

目录 子网划分 为什么需要子网划分&#xff1f; 我们为什么不直接使用一个A类的IP地址给一家2000人的公司使用呢&#xff1f; 子网划分本质 子网划分的步骤&#xff1a; 实验&#xff1a;将192.168.1.0/24 划分为4个小网段 --》192.168.1.0/26 减少的IP地址去哪里了&…

“深入了解API和Python的完美结合:构建强大、灵活的应用程序“

引言&#xff1a; 在当前科技高速发展的时代&#xff0c;应用程序是各行各业的重要组成部分。而API&#xff08;Application Programming Interface&#xff09;作为不同系统之间实现通信和数据交换的桥梁&#xff0c;具有至关重要的作用。而Python作为一种强大而灵活的编程语言…

【C++】位图和布隆过滤器

文章目录 位图概念难点代码 布隆过滤器概念插入查找删除优缺点代码 位图 概念 所谓位图&#xff0c;就是用每一个比特位位来存放某种状态&#xff0c;适用于海量数据&#xff0c;数据无重复的场景。通常是用来判断某个数据存不存在的。 给40亿个不重复的无符号整数&#xff…

RestFul风格讲解

以前是localhost:8080/user?methodadd&uid1; RestFul风格是以/接上的 localhost:8080/user/马云/6562 package com.qf.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annot…

【华为机试】HJ17 坐标移动详解+完整源代码示例

忙碌了一周&#xff0c;一直没时间更新&#xff0c;趁着周末来更新第二个题目。 题目 题目解析 这个题目相比于上一个题目来说&#xff0c;会简单一些&#xff0c;不涉及到那些复杂的算法&#xff0c;就是对于字符串的处理。 算法步骤 输入一个字符串根据分号&#xff0c;将…

《银行法律法规》三、银行管理——1、银行管理基础

第一章 银行管理基础 第一节 商业银行的组织架构 考点1 商业银行组织架构的内涵★★ 含义 商业银行组织架构是银行各部分按照一定的排列顺序、 空间位置、 聚集状态、 联系方式以及各部分之间相互关系组成的一个有机系统。 这个系统涉及商业银行前台、 中台、 后台业务运…

大数据有哪些应用领域?

常见的大数据应用领域&#xff1a; 1、理解客户满足客户服务需求 大数据应用目前在这领域是最广为人知的。通过大数据分析更好的了解客户以及用户的爱好和行为。企业非常喜欢通过在线客服系统搜集用户社交方面的数据、浏览器的日志、各类文本和传感器的数据&#xff0c;从而更…

【C语言】扫雷----详解(扩展版)

&#x1f341; 博客主页:江池俊的博客_CSDN博客 &#x1f341; 如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏&#x1f31f; 三连支持一下博主&#x1f49e; ✉️每一次努力都是一次进步&#xff0c;每一次尝试都是一次机会。无论遇到什么困难&#xff0c;…

【MySQL】SQL入门(一)

&#x1f697;MySQL学习起始站~ &#x1f6a9;本文已收录至专栏&#xff1a;数据库学习之旅 ❤️每章节附章节思维导图&#xff0c;文末附全文思维导图&#xff0c;感谢各位点赞收藏支持~ 一.引入 (1) SQL分类 SQL语句&#xff0c;根据其功能&#xff0c;主要分为四类&#x…

【GPT模型】遥感云大数据在灾害、水体与湿地领域中的应用

近年来遥感技术得到了突飞猛进的发展&#xff0c;航天、航空、临近空间等多遥感平台不断增加&#xff0c;数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量猛增&#xff0c;遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

【Vue3】初始化和Composition API(组合式)

Vue3 创建Vue3.0工程查看自己的vue/cli版本&#xff0c;使用Vue/cli创建使用vite创建 查看Vue3.0工程vue.config.js中&#xff0c;关闭语法检查&#xff0c;main.js讲解app.vue讲解 常用的Composition API&#xff08;组合式&#xff09;1.拉开序幕的setup返回对象返回渲染函数…

2023-07-15力扣今日三题

链接&#xff1a; 2366. 将数组排序的最少替换次数 题意&#xff1a; 一个正整数数组nums&#xff0c;每次操作可以将一个数字拆分成两个数字&#xff08;C>AB&#xff09;&#xff0c;然后放回原来的位置&#xff08;XCX>XABX或XBAX&#xff09;&#xff0c;求将这个…

DevOps系列文章 之 Docker in Docker

一、 背景介绍 工作中&#xff0c;要实现在docker中运行docker&#xff0c;实现镜像的拉取&#xff0c;创建&#xff0c;修改&#xff0c;上传等操作。尝试过在docker中&#xff0c;安装docker。行不通&#xff0c;服务起不来。而且直接在 docker 容器内嵌套安装 docker 未免…

Android Glide预加载preload ,kotlin

Android Glide预加载preload ,kotlin val imageView findViewById<ImageView>(R.id.image_view)Glide.with(this).asBitmap().load(image_file.path).signature(ObjectKey(image_file.path)).addListener(object : RequestListener<Bitmap> {override fun onLoadF…

Unity UnityWebRequest使用http与web服务器通讯

一、搭建客户端与服务器http通讯 1.在Nodejs中文官网Node.js 中文网 (nodejs.com.cn)&#xff0c;下载并安装Nodejs 2.在项目文件夹下新建WebServer文件夹&#xff0c;打开CMD窗口&#xff0c;在WebServer文件夹路径下安装express 3.在WebServer文件夹中新建main.js文件&#…

Pytorch基本使用—参数初始化

深度学习模型参数初始化是指在训练深度神经网络时&#xff0c;对网络的权重和偏置进行初始化的过程。合适的参数初始化可以加速模型的收敛&#xff0c;并提高模型的性能。 ✨ 1 基本介绍 在深度学习中&#xff0c;常用的参数初始化方法有以下几种&#xff1a; 零初始化&#…

哈希结构(详解)

目录 哈希表 哈希表原理 散列函数 哈希冲突和处理的办法 哈希集合 哈希集合的实现 哈希映射 哈希映射的基本操作 哈希映射的实现 哈希表 散列表&#xff08;Hash table&#xff0c;也叫哈希表&#xff09;&#xff0c;是根据关键码值(Key)而直接进行访问的数据结构 …

1、QT新建工程

本章内容&#xff1a;本章建立一个简单的QT工程&#xff0c;并且对工程目录进行重新管理&#xff0c;再进行windows端打包部署&#xff0c;方便开发 一、建立工程 创建windows UI应用程序工程 到此&#xff0c;工程就已经建立完毕能正常运行了… 二、工程目录重新管…