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];}}
}
會不了一點嘿嘿