C++编程:查找图书定价最高和最低

5星 · 超过95%的资源 需积分: 18 1 下载量 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 上传
C语言参考答案汇总(浙江大学城市学院) 第2周(M2) 2 20011求华氏温度100°F对应的摄氏温度。 2 20012 求华氏温度 150°F 对应的摄氏温度。 3 20013求摄氏温度26°C对应的华氏温度。 3 20015当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。 3 20026 输入2个整数 num1 和 num2,计算并输出它们的和、差、积、商与余数。 4 第3周(M3) 5 20031 求1+2+3+......+100(调试示例error02_5) 5 20032 求m+(m+1)+(m+2)+......+100 5 20033 求1/m+1/(m+1)+1/(m+2)+......+1/n 6 20034 求1 + 1/3 + 1/5 + ......的前n项和 7 20035 求1-1/4+1/7-1/10+……的前n项之和 7 20036 输出华氏-摄氏温度转换表(改错题error02_6) 8 20038 求x的n次幂 9 20041 生成 3 的乘方表 10 20044 求100^0.5+101^0.5+……+1000^0.5 10 20053 计算物体自由下落的距离 11 20056 计算分段函数 11 20061 阶梯电价 12 20062 求m*m+1/m+(m+1)*(m+1)+1/(m+1)+(m+2)*(m+2)+1/(m+2)+......+n*n+1/n 13 20063 求1-2/3+3/5-4/7+5/9-6/11+…… 14 20064 求2^1+2^2+2^3+……+2^n 15 第4周(M4) 15 10007 显示图案 (复习printf()的字符串输出) 15 20042 生成阶乘表 16 20043 使用函数求 n! /(m!* (n-m)!) 16 20054 求平均值 17 20057 求1+1/2+1/3+......+1/n 18 20065 求0!+1!+2!+……+n! 18 40015 求最小值 19 40018 求a+aa+aaa+aa…a 20 第5周(M5) 21 30001 求一元二次方程的根 21 30002 求分段函数的值 23 30003 分类统计字符 23 30004 显示五级记分制成绩所对应的百分制成绩区间(使用switch) 24 30005 显示水果的价格(使用switch) 25 30007 求三角形的面积和周长 27 30008 计算个人所得税 28 30051 判断闰年 29 30052 统计学生平均成绩与及格人数 30 30053 分段计算水费(使用嵌套的if-else语句) 31 第6周(M6) 32 40011 求最小公倍数和最大公约数(调试示例error04_1) 32 40012 求1-1/4+1/7-1/10+1/13-1/16+…… 33 40014 求整数的位数 34 40023 换硬币 35 40024 找出各位数字的立方和等于它本身的数 36 40025 找完数(改错题error04_2) 38 40027 从高位开始逐位输出一个整数的各位数字(选作) 39 40052 判断素数 40 40053 逆序输出整数 41 40054 输出斐波那契序列 42 第7周(M7) 42 50002 使用函数判断数的符号 42 50003 使用函数求奇数和 43 50005 使用函数统计素数并求和 44 50006 使用函数统计一个整数中数字的个数 45 50007 使用函数找水仙花数 46 50009 使用函数求余弦函数的近似值 48 50052 使用函数找最大值 49 50062 使用函数输出指定范围内的 Fibonacci 数 50 50063 使用函数找出指定范围内的完数 51 第8周(M8) 52 40013 求奇数和 52 40062 求x+x*x/2!+x*x*x/3!+x*x*x*x/4!+……的值 53 50004 使用函数计算两点间的距离 54 50061 使用函数求a+aa+aaa+aa…a 55 60002 整数的十进制、八进制和十六进制表现形式 56 60003 分类统计字符 57 60006 验证歌德巴赫猜想 58 60007 使用函数输出整数的逆序数 59 60009 统计单词 60 60062 简单计算器 61