C++编程:查找图书定价最高和最低
5星 · 超过95%的资源 需积分: 18 195 浏览量
更新于2024-09-13
收藏 46KB DOC 举报
本题要求根据给定的C++代码片段,编写一个程序来实现两个功能:首先,创建一个包含书籍信息的结构体数组,包括书名和定价,然后找到其中定价最高和最低的书籍,并输出它们的名称和定价。同时,我们还将回顾如何定义和操作类,如学生类和时间类。
首先,让我们关注第一个部分,关于学生类的实现。在这个示例中,有一个`Student`类,它具有三个私有成员变量:学号(`int number`)、姓名(`char name[20]`)和年龄(`int age`)。公共成员函数包括:
1. `set` 函数:用于设置学生的属性,接受学号、姓名字符串和年龄作为参数。
2. `output` 函数:用于打印学生的信息,即学号、姓名和年龄。
在`main`函数中,实例化了一个`Student`对象`s1`,通过`set`函数为其设置属性,并调用`output`函数展示信息。第二个示例展示了如何在一个更抽象的接口下(`Set`和`Print`方法)实现相同的功能,这在多文件编程中可能更有组织性。
接着,第二个部分是关于`Time`类的定义。`Time`类用于表示和操作时间,包含三个私有成员变量:小时(`int hour`)、分钟(`int minute`)和秒(`int second`)。类提供了两个方法:
1. `set` 函数:用于设置时间的小时、分钟和秒。
2. `output` 函数:用于打印当前设定的时间,格式为“小时:分钟:秒”。
在`main`函数中,创建了一个`Time`对象`a`,设置了时间,然后调用`output`函数显示结果。
为了实现题目要求的功能,你需要将这两个类的应用与书籍结构体结合。一个可能的步骤是:
1. 定义一个名为`Book`的结构体,包含书名(`string title`)和定价(`double price`)。
2. 创建一个动态大小的`Book`结构体数组,用于存储输入的五本书信息。
3. 编写一个主函数,提示用户输入五本书的名称和定价,然后添加到数组中。
4. 遍历数组,使用排序算法找到价格最高和最低的书籍,分别记录其索引和价格。
5. 输出最高和最低价格的书籍标题。
以下是一个简化的示例代码,展示了如何实现这些步骤:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
// 定义书籍结构体
struct Book {
std::string title;
double price;
};
// 帮助函数,用于比较书籍价格
bool compare_price(const Book& a, const Book& b) {
return a.price > b.price;
}
int main() {
int numBooks = 5;
Book books[numBooks];
// 用户输入书籍信息
for (int i = 0; i < numBooks; ++i) {
std::cout << "请输入第" << (i + 1) << "本书的名称:";
std::cin >> books[i].title;
std::cout << "请输入第" << (i + 1) << "本书的定价:";
std::cin >> books[i].price;
}
// 对书籍按照价格排序
std::sort(books, books + numBooks, compare_price);
// 找到最高和最低价格的书籍
std::cout << "定价最高的书名:" << books[0].title << ", 价格:" << books[0].price << std::endl;
std::cout << "定价最低的书名:" << books[numBooks - 1].title << ", 价格:" << books[numBooks - 1].price << std::endl;
return 0;
}
```
这个示例代码实现了题目所要求的功能,即输入书籍信息,排序并输出定价最高和最低的书籍信息。注意,这里使用了`std::sort`函数对书籍数组进行排序,如果需要自己实现排序算法,可以替换`compare_price`函数。
2012-05-14 上传
2015-07-07 上传
2009-04-15 上传
2022-05-01 上传
2010-09-12 上传
2010-12-22 上传
2013-07-03 上传
2013-09-13 上传
aimiya5
- 粉丝: 0
- 资源: 2
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常