当前位置: 首页 > news >正文

C语言—自定义(构造)类型

2.20,17.56

      1.只有当我们使用结构体类型定义变量/结构体数组,系统才会为结构体的成员分配内存空间,用于存储对应类型的数据
      2.strct 结构体 一起作为结构体类型标识符

嘿嘿暂时先这样,我会回来改的
1、定义一个表示公交线路的结构体,要求有线路名称(例如 616),起始站,终点站,里程等成员,
     定义结构体数组,用来存储多条条公交线路信息,要求能够输出从指定起始站发车的所以公交线路信息。

/*1、定义一个表示公交线路的结构体,要求有线路名称(例如 616),起始站,终点站,里程等成员,定义结构体数组,用来存储多条条公交线路信息,要求能够输出从指定起始站发车的所以公交线路信息。*/#include <stdio.h>
#include <string.h>#define  N 10
#define  R 50struct busline
{char name[N];char startStation[R];char endStation[R];float kmetres;};int main(int argc,char** argv)
{struct busline bus[N] ={{"616","A市","B市",23.5f},{"617","C市","A市",33.3f},{"618","B市","C市",66.6f},};for(int i = 0;i < 3;i++){printf("线路名称: %s\n",bus[i].name);printf("起始站: %s\n",bus[i].startStation);printf("终点站: %s\n",bus[i].endStation);printf("里程(km): %.1f\n",bus[i].kmetres);}return 0;}


2、定义一个表示电影信息的结构体,要求有电影名称,时长,上映日期(字符串数据),等成员,定义结构体数组,用来存储电影信息,要求根据指定电影名称,删除该电影的所有信息。

嘿嘿老师讲了

/*2、定义一个表示电影信息的结构体,要求有电影名称,时长,上映日期(字符串数据),等成员
定义结构体数组,用来存储电影信息,要求根据指定电影名称,删除该电影的所有信息。*/
#include <stdio.h>
#include <string.h>struct movie
{char   name[20];int    lenth;struct date{int year;int month;int day;}showdate;
};int findItem(struct movie  mv[],int n,const char* name)
{for(register int i = 0; i < n; i++){if(strcmp(mv[i].name,name) == 0)return i;}   return -1;
}
int deleteItem(struct movie  mv[],int n,const struct movie *item)
{register int i = 0, j = 0;for(i = 0; i < n; i++){if((memcmp(&mv[i],item,sizeof(struct movie)) != 0)){if(j != i)mv[j] = mv[i];j++;}}return j;
}int main(int argc, char** argv)
{struct movie mv[] = {{"热辣滚烫",120,{2024-2-10}},{"满江红",100,{2023-1-1}},{"老师好",90,{2023-4-8}},{"速度与激情",120,{2022-11-16}}};int n  = sizeof mv / sizeof mv[0];for(register int i = 0; i < n; i++){printf("电影名:%s\t时长:%d\t上映日期:%4d-%02d-%02d\n",mv[i].name,mv[i].lenth,mv[i].showdate.year,mv[i].showdate.month,mv[i].showdate.day);}puts("===============================");printf("请输入要删除的电影名:");char szName[20] = {0};scanf("%s",szName);int idx = findItem(mv,n,szName);    if(idx == -1){printf("你输入的电影名不存在,返回\n");return -1;}    int count = deleteItem(mv,n,&mv[idx]); printf("删除后元素个数:%d\n",count);for(register int i = 0; i < count; i++){printf("电影名:%s\t时长:%d\t上映日期:%4d-%02d-%02d\n",mv[i].name,mv[i].lenth,mv[i].showdate.year,mv[i].showdate.month,mv[i].showdate.day);}return 0;
}
/*2、定义一个表示电影信息的结构体,要求有电影名称,时长,上映日期(字符串数据)等成员定义结构体数组,用来存储电影信息,要求根据指定电影名称,删除该电影的所有信息。*/#include <stdio.h>
#include <stdlib.h>
#include <string.h>// 定义电影信息的结构体
typedef struct
{char name[50];  // 电影名称int duration;   // 时长(分钟)char release_date[20];  // 上映日期
} Movie;// 函数声明
void delete_movie(Movie *movies, int *count, const char *name);int main(int argc,char** argv)
{// 初始化电影信息数组Movie movies[100];int movie_count = 0;// 添加一些电影信息strcpy(movies[movie_count].name, "战狼2");movies[movie_count].duration = 135;strcpy(movies[movie_count].release_date, "2017-07-28");movie_count++;strcpy(movies[movie_count].name, "哪吒之魔童降世");movies[movie_count].duration = 110;strcpy(movies[movie_count].release_date, "2019-07-26");movie_count++;// 打印原始电影列表printf("原始电影列表:\n");for (int i = 0; i < movie_count; i++){printf("名称:%s,时长:%d分钟,上映日期:%s\n",movies[i].name, movies[i].duration, movies[i].release_date);}// 删除指定的电影信息const char *name_to_delete = "战狼2";delete_movie(movies, &movie_count, name_to_delete);// 打印删除后的电影列表printf("删除后的电影列表:\n");for (int i = 0; i < movie_count; i++){printf("名称:%s,时长:%d分钟,上映日期:%s\n",movies[i].name, movies[i].duration, movies[i].release_date);}return 0;
}// 根据电影名称删除电影信息
void delete_movie(Movie *movies, int *count, const char *name)
{int found = 0;  // 标记是否找到电影// 遍历电影列表,查找要删除的电影for (int i = 0; i < *count; i++){if (strcmp(movies[i].name, name) == 0){found = 1;  // 找到电影// 删除电影信息,将后面的电影向前移动for (int j = i; j < *count - 1; j++){movies[j] = movies[j + 1];}(*count)--;  // 更新电影数量break;}}// 如果没有找到电影,则打印提示信息if (!found){printf("没有找到名为'%s'的电影。\n", name);}
}

嘿嘿嘿嘿不会
3、定义一个表示物品的结构体,要求有物品名称,单价,等成员,
定义结构体数组,用来存储多个物品信息,要求利用结构体指针变量查找单价最高 及最低的物品所有信息,并输出信息。

/*3、定义一个表示物品的结构体,要求有物品名称,单价,等成员,
定义结构体数组,用来存储多个物品信息,要求利用结构体指针变量查找单价最高 及最低的物品所有信息,并输出信息。*/#include <stdio.h>
#include <string.h>// 定义商品结构体
typedef struct
{char name[50]; // 商品名称float price;    // 商品单价
} Product;// 函数声明
void findMinMaxProduct(Product products[], int length, Product *minProduct, Product *maxProduct);int main(int argc,char** argv)
{// 初始化商品数组Product products[3] = {{"苹果", 5.5},{"香蕉", 3.2},{"橙子", 7.0}};// 变量用于存储找到的最小和最大商品Product minProduct, maxProduct;// 查找单价最高和最低的商品findMinMaxProduct(products, 3, &minProduct, &maxProduct);// 输出结果printf("单价最低的商品是:%s,单价为%.2f\n", minProduct.name, minProduct.price);printf("单价最高的商品是:%s,单价为%.2f\n", maxProduct.name, maxProduct.price);return 0;
}// 查找单价最高和最低的商品
void findMinMaxProduct(Product products[], int length, Product *minProduct, Product *maxProduct)
{*minProduct = products[0]; // 假设第一个商品价格最低*maxProduct = products[0]; // 假设第一个商品价格最高for (int i = 1; i < length; i++){if (products[i].price < minProduct->price){*minProduct = products[i];}if (products[i].price > maxProduct->price){*maxProduct = products[i];}}
}

会不了一点嘿嘿

相关文章:

  • igolang学习3,golang 项目中配置gin的web框架
  • 算法提升——LeetCode第385场周赛总结
  • 端口占用:Web server failed to start. Port XXX was already in use.原因分析-解决方案
  • RabbitMQ 网络分区处置策略配置
  • 应用服务器基础环境快速搭建
  • 【Git】:初识git
  • NestJS入门4:MySQL typeorm 增删改查
  • LeetCode刷题笔记之二叉树(三)
  • Emlog博客网站快速搭建并结合内网穿透实现远程访问本地站点
  • 每日五道java面试题之spring篇(三)
  • Cesium 展示——加载 tileset.json 格式的模型数据
  • C++ 文件操作-文本文件-读取和打开文件方法详解
  • 2024022302-关系模型
  • linux增加物理磁盘并挂载到文件系统
  • 解决docker中运行的jar包连不上前端程序
  • CSS 专业技巧
  • css属性的继承、初识值、计算值、当前值、应用值
  • Docker 笔记(2):Dockerfile
  • Java教程_软件开发基础
  • jQuery(一)
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 阿里研究院入选中国企业智库系统影响力榜
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 收藏好这篇,别再只说“数据劫持”了
  • 小试R空间处理新库sf
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • #QT(串口助手-界面)
  • ${factoryList }后面有空格不影响
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (2)STL算法之元素计数
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (编译到47%失败)to be deleted
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (原創) 未来三学期想要修的课 (日記)
  • (转)Sql Server 保留几位小数的两种做法
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net core 6 集成和使用 mongodb
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET4.0并行计算技术基础(1)
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .net连接MySQL的方法
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • @FeignClient注解,fallback和fallbackFactory
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [ SNOI 2013 ] Quare
  • [4.9福建四校联考]
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [Avalon] Avalon中的Conditional Formatting.