查找书籍:用链表输入4本书的名称、作者、定价,并存入结构数组中,从中查找定价最高和最低的书的名称、作者、定价并输出。试编写程序。
2条回答 默认 最新
- kinghero123456 2023-12-29 14:45关注
#include <stdio.h> #include <stdlib.h> #include <string.h> // 定义书籍结构体 struct Book { char title[100]; char author[100]; float price; struct Book* next; }; // 函数声明 void addBook(struct Book** head, const char* title, const char* author, float price); void findMinMaxPrice(struct Book* head, struct Book** maxBook, struct Book** minBook); void printBookInfo(const char* label, struct Book* book); int main() { struct Book* head = NULL; // 输入4本书的信息 for (int i = 0; i < 4; ++i) { char title[100], author[100]; float price; printf("请输入第%d本书的信息:\n", i + 1); printf("书名: "); scanf("%s", title); printf("作者: "); scanf("%s", author); printf("定价: "); scanf("%f", &price); addBook(&head, title, author, price); } // 查找定价最高和最低的书 struct Book* maxBook = NULL; struct Book* minBook = NULL; findMinMaxPrice(head, &maxBook, &minBook); // 输出结果 printf("\n定价最高的书:\n"); printBookInfo("书名", maxBook); printBookInfo("作者", maxBook); printBookInfo("定价", maxBook); printf("\n定价最低的书:\n"); printBookInfo("书名", minBook); printBookInfo("作者", minBook); printBookInfo("定价", minBook); // 释放链表内存 struct Book* current = head; while (current != NULL) { struct Book* next = current->next; free(current); current = next; } return 0; } // 添加书籍到链表 void addBook(struct Book** head, const char* title, const char* author, float price) { struct Book* newBook = (struct Book*)malloc(sizeof(struct Book)); strcpy(newBook->title, title); strcpy(newBook->author, author); newBook->price = price; newBook->next = *head; *head = newBook; } // 查找定价最高和最低的书 void findMinMaxPrice(struct Book* head, struct Book** maxBook, struct Book** minBook) { struct Book* current = head; if (current == NULL) { return; // 空链表 } *maxBook = current; *minBook = current; while (current != NULL) { if (current->price > (*maxBook)->price) { *maxBook = current; } if (current->price < (*minBook)->price) { *minBook = current; } current = current->next; } } // 输出书籍信息 void printBookInfo(const char* label, struct Book* book) { printf("%s: %s\n", label, (label == "书名") ? book->title : ((label == "作者") ? book->author : "")); if (label == "定价") { printf("%.2f\n", book->price); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 comsol温度场仿真无法模拟微米级激光光斑
- ¥15 上传图片时提交的存储类型
- ¥15 Ubuntu开机显示器只显示kernel,是没操作系统(相关搜索:显卡驱动)
- ¥15 VB.NET如何绘制倾斜的椭圆
- ¥15 在rhel8中安装qemu-kvm时遇到“cannot initialize crypto:unable to initialize gcrypt“报错”
- ¥15 arbotix没有/cmd_vel话题
- ¥20 找能定制Python脚本的
- ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
- ¥15 用C语言怎么判断字符串的输入是否符合设定?
- ¥15 通信专业本科生论文选这两个哪个方向好研究呀