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


    2.20,17.56

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

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

    1. /*1、定义一个表示公交线路的结构体,要求有线路名称(例如 616),起始站,终点站,里程等成员,
    2.      定义结构体数组,用来存储多条条公交线路信息,要求能够输出从指定起始站发车的所以公交线路信息。*/
    3. #include
    4. #include
    5. #define N 10
    6. #define R 50
    7. struct busline
    8. {
    9. char name[N];
    10. char startStation[R];
    11. char endStation[R];
    12. float kmetres;
    13. };
    14. int main(int argc,char** argv)
    15. {
    16. struct busline bus[N] ={
    17. {"616","A市","B市",23.5f},
    18. {"617","C市","A市",33.3f},
    19. {"618","B市","C市",66.6f},
    20. };
    21. for(int i = 0;i < 3;i++)
    22. {
    23. printf("线路名称: %s\n",bus[i].name);
    24. printf("起始站: %s\n",bus[i].startStation);
    25. printf("终点站: %s\n",bus[i].endStation);
    26. printf("里程(km): %.1f\n",bus[i].kmetres);
    27. }
    28. return 0;
    29. }


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

    嘿嘿老师讲了

    1. /*2、定义一个表示电影信息的结构体,要求有电影名称,时长,上映日期(字符串数据),等成员
    2. 定义结构体数组,用来存储电影信息,要求根据指定电影名称,删除该电影的所有信息。*/
    3. #include
    4. #include
    5. struct movie
    6. {
    7. char name[20];
    8. int lenth;
    9. struct date
    10. {
    11. int year;
    12. int month;
    13. int day;
    14. }showdate;
    15. };
    16. int findItem(struct movie mv[],int n,const char* name)
    17. {
    18. for(register int i = 0; i < n; i++)
    19. {
    20. if(strcmp(mv[i].name,name) == 0)
    21. return i;
    22. }
    23. return -1;
    24. }
    25. int deleteItem(struct movie mv[],int n,const struct movie *item)
    26. {
    27. register int i = 0, j = 0;
    28. for(i = 0; i < n; i++)
    29. {
    30. if((memcmp(&mv[i],item,sizeof(struct movie)) != 0))
    31. {
    32. if(j != i)
    33. mv[j] = mv[i];
    34. j++;
    35. }
    36. }
    37. return j;
    38. }
    39. int main(int argc, char** argv)
    40. {
    41. struct movie mv[] = {
    42. {"热辣滚烫",120,{2024-2-10}},
    43. {"满江红",100,{2023-1-1}},
    44. {"老师好",90,{2023-4-8}},
    45. {"速度与激情",120,{2022-11-16}}
    46. };
    47. int n = sizeof mv / sizeof mv[0];
    48. for(register int i = 0; i < n; i++)
    49. {
    50. printf("电影名:%s\t时长:%d\t上映日期:%4d-%02d-%02d\n",mv[i].name,mv[i].lenth,mv[i].showdate.year,
    51. mv[i].showdate.month,mv[i].showdate.day);
    52. }
    53. puts("===============================");
    54. printf("请输入要删除的电影名:");
    55. char szName[20] = {0};
    56. scanf("%s",szName);
    57. int idx = findItem(mv,n,szName);
    58. if(idx == -1)
    59. {
    60. printf("你输入的电影名不存在,返回\n");
    61. return -1;
    62. }
    63. int count = deleteItem(mv,n,&mv[idx]);
    64. printf("删除后元素个数:%d\n",count);
    65. for(register int i = 0; i < count; i++)
    66. {
    67. printf("电影名:%s\t时长:%d\t上映日期:%4d-%02d-%02d\n",mv[i].name,mv[i].lenth,mv[i].showdate.year,
    68. mv[i].showdate.month,mv[i].showdate.day);
    69. }
    70. return 0;
    71. }
    1. /*2、定义一个表示电影信息的结构体,要求有电影名称,时长,上映日期(字符串数据)
    2. 等成员定义结构体数组,用来存储电影信息,要求根据指定电影名称,删除该电影的所有信息。*/
    3. #include
    4. #include
    5. #include
    6. // 定义电影信息的结构体
    7. typedef struct
    8. {
    9. char name[50]; // 电影名称
    10. int duration; // 时长(分钟)
    11. char release_date[20]; // 上映日期
    12. } Movie;
    13. // 函数声明
    14. void delete_movie(Movie *movies, int *count, const char *name);
    15. int main(int argc,char** argv)
    16. {
    17. // 初始化电影信息数组
    18. Movie movies[100];
    19. int movie_count = 0;
    20. // 添加一些电影信息
    21. strcpy(movies[movie_count].name, "战狼2");
    22. movies[movie_count].duration = 135;
    23. strcpy(movies[movie_count].release_date, "2017-07-28");
    24. movie_count++;
    25. strcpy(movies[movie_count].name, "哪吒之魔童降世");
    26. movies[movie_count].duration = 110;
    27. strcpy(movies[movie_count].release_date, "2019-07-26");
    28. movie_count++;
    29. // 打印原始电影列表
    30. printf("原始电影列表:\n");
    31. for (int i = 0; i < movie_count; i++)
    32. {
    33. printf("名称:%s,时长:%d分钟,上映日期:%s\n",
    34. movies[i].name, movies[i].duration, movies[i].release_date);
    35. }
    36. // 删除指定的电影信息
    37. const char *name_to_delete = "战狼2";
    38. delete_movie(movies, &movie_count, name_to_delete);
    39. // 打印删除后的电影列表
    40. printf("删除后的电影列表:\n");
    41. for (int i = 0; i < movie_count; i++)
    42. {
    43. printf("名称:%s,时长:%d分钟,上映日期:%s\n",
    44. movies[i].name, movies[i].duration, movies[i].release_date);
    45. }
    46. return 0;
    47. }
    48. // 根据电影名称删除电影信息
    49. void delete_movie(Movie *movies, int *count, const char *name)
    50. {
    51. int found = 0; // 标记是否找到电影
    52. // 遍历电影列表,查找要删除的电影
    53. for (int i = 0; i < *count; i++)
    54. {
    55. if (strcmp(movies[i].name, name) == 0)
    56. {
    57. found = 1; // 找到电影
    58. // 删除电影信息,将后面的电影向前移动
    59. for (int j = i; j < *count - 1; j++)
    60. {
    61. movies[j] = movies[j + 1];
    62. }
    63. (*count)--; // 更新电影数量
    64. break;
    65. }
    66. }
    67. // 如果没有找到电影,则打印提示信息
    68. if (!found)
    69. {
    70. printf("没有找到名为'%s'的电影。\n", name);
    71. }
    72. }

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

    1. /*3、定义一个表示物品的结构体,要求有物品名称,单价,等成员,
    2. 定义结构体数组,用来存储多个物品信息,要求利用结构体指针变量查找单价最高 及最低的物品所有信息,并输出信息。*/
    3. #include
    4. #include
    5. // 定义商品结构体
    6. typedef struct
    7. {
    8. char name[50]; // 商品名称
    9. float price; // 商品单价
    10. } Product;
    11. // 函数声明
    12. void findMinMaxProduct(Product products[], int length, Product *minProduct, Product *maxProduct);
    13. int main(int argc,char** argv)
    14. {
    15. // 初始化商品数组
    16. Product products[3] = {
    17. {"苹果", 5.5},
    18. {"香蕉", 3.2},
    19. {"橙子", 7.0}
    20. };
    21. // 变量用于存储找到的最小和最大商品
    22. Product minProduct, maxProduct;
    23. // 查找单价最高和最低的商品
    24. findMinMaxProduct(products, 3, &minProduct, &maxProduct);
    25. // 输出结果
    26. printf("单价最低的商品是:%s,单价为%.2f\n", minProduct.name, minProduct.price);
    27. printf("单价最高的商品是:%s,单价为%.2f\n", maxProduct.name, maxProduct.price);
    28. return 0;
    29. }
    30. // 查找单价最高和最低的商品
    31. void findMinMaxProduct(Product products[], int length, Product *minProduct, Product *maxProduct)
    32. {
    33. *minProduct = products[0]; // 假设第一个商品价格最低
    34. *maxProduct = products[0]; // 假设第一个商品价格最高
    35. for (int i = 1; i < length; i++)
    36. {
    37. if (products[i].price < minProduct->price)
    38. {
    39. *minProduct = products[i];
    40. }
    41. if (products[i].price > maxProduct->price)
    42. {
    43. *maxProduct = products[i];
    44. }
    45. }
    46. }

    会不了一点嘿嘿

  • 相关阅读:
    在Vue中引入echarts以及使用
    Linux 离线环境下安装RabbitMQ
    Stable Diffusion进阶玩法说明
    淹没虚函数地址过GS保护(关闭DEP保护)
    Qt MinGW opencv环境配置测试
    堆相关例子-排序最多移动k距离
    2022-09-05 mysql/stonedb-物理存储层-DPN解析
    日志记录升级(中间件全局日志)
    [附源码]计算机毕业设计springboot冬奥资讯系统
    多维度梳理 MySQL 锁
  • 原文地址:https://blog.csdn.net/m0_62470904/article/details/136196705