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