2.20,17.56
1.只有当我们使用结构体类型定义变量/结构体数组,系统才会为结构体的成员分配内存空间,用于存储对应类型的数据
2.strct 结构体 一起作为结构体类型标识符
嘿嘿暂时先这样,我会回来改的
1、定义一个表示公交线路的结构体,要求有线路名称(例如 616),起始站,终点站,里程等成员,
定义结构体数组,用来存储多条条公交线路信息,要求能够输出从指定起始站发车的所以公交线路信息。
/*1、定义一个表示公交线路的结构体,要求有线路名称(例如 616),起始站,终点站,里程等成员,定义结构体数组,用来存储多条条公交线路信息,要求能够输出从指定起始站发车的所以公交线路信息。*/#include #include #defineN 10#defineR 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 #include struct movie{char name[20];intlenth;struct date{int year;int month;int day;}showdate;};int findItem(struct moviemv[],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 moviemv[],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 price){*minProduct = products[i];}if (products[i].price > maxProduct->price){*maxProduct = products[i];}}}
会不了一点嘿嘿