2.20,17.56
1.只有当我们使用结构体类型定义变量/结构体数组,系统才会为结构体的成员分配内存空间,用于存储对应类型的数据
2.strct 结构体 一起作为结构体类型标识符
嘿嘿暂时先这样,我会回来改的
1、定义一个表示公交线路的结构体,要求有线路名称(例如 616),起始站,终点站,里程等成员,
定义结构体数组,用来存储多条条公交线路信息,要求能够输出从指定起始站发车的所以公交线路信息。
- /*1、定义一个表示公交线路的结构体,要求有线路名称(例如 616),起始站,终点站,里程等成员,
- 定义结构体数组,用来存储多条条公交线路信息,要求能够输出从指定起始站发车的所以公交线路信息。*/
-
- #include
- #include
-
- #define N 10
- #define R 50
-
- struct 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
- #include
-
-
- 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
- #include
- #include
-
- // 定义电影信息的结构体
- 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
- #include
-
- // 定义商品结构体
- 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];
- }
- }
- }
会不了一点嘿嘿