给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。 输入格式: 输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。 输出格式: 在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。 输入样例:
时间: 2023-05-31 10:20:15 浏览: 85
### 回答1:
这是一个程序题,要求输入n(小于10),然后随后输入n本书的信息。每本书在一行中给出书名(长度不超过30的字符串)和价格(不超过3个小数位的非负实数),中间用空格分隔。要求编写程序,查找并输出其中价格最高和价格最低的书的名称和价格。题目保证没有两本书的价格相同。输出格式:在一行中按照“价格, 书名”的格式先输出价格最高的书,然后输出价格最低的书,中间用逗号分隔,价格保留2位小数,书名没有空格,注意书名中间有逗号。
### 回答2:
题目不算难,主要考察对于输入输出格式和字符串操作的掌握。
思路
首先读入n,然后用一个for循环读入每本书的名称和定价。读入时要注意,书名可能包含空格,因此应该用getline()函数读入。价格应该用double类型存储,可以用scanf()或cin读入。
在读入过程中,顺便记录最高价和最低价以及对应的书名,方法是定义四个变量:min_price、max_price、min_name和max_name,遇到新的价格时,如果它比当前的最高价要高,则更新max_price和max_name;如果它比当前的最低价要低,则更新min_price和min_name。
最后输出结果即可。输出时,要将价格精确到2位小数,可以用printf()或cout搭配ios::fixed和ios::setprecision()进行格式化输出。
代码
### 回答3:
本题是一道基础的输入输出练习题,需要读入 n 本书的名称和价格,并找到其中价格最高和最低的书名及其价格。具体思路如下:
1. 读入 n 的值。
2. 对于每本书,先读入书名,再读入价格,并将其保存在一个数组(或者 vector)中。
3. 在数组中找到价格最高和最低的书,并记录它们的下标。
4. 使用记录下的下标输出结果。
下面是代码实现:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
using namespace std;
int main() {
int n;
cin >> n;
vector<string> name(n);
vector<double> price(n);
int max_idx = 0, min_idx = 0;
for (int i = 0; i < n; i++) {
cin >> name[i] >> price[i];
if (price[i] > price[max_idx]) max_idx = i;
if (price[i] < price[min_idx]) min_idx = i;
}
cout << fixed << setprecision(2) << price[max_idx] << ", " << name[max_idx] << endl;
cout << fixed << setprecision(2) << price[min_idx] << ", " << name[min_idx] << endl;
return 0;
}
```
其中,用 `vector<string>` 和 `vector<double>` 定义了两个数组,分别存储书名和价格。
在读入每本书的信息时,使用了 `cin` 进行输入,并将读入的数据保存在数组对应的位置上。同时,使用 `max_idx` 和 `min_idx` 分别记录价格最高和最低的书在数组中的下标。
在输出结果时,使用 `fixed` 和 `setprecision`,保留 2 位小数输出价格,并按照题目要求输出书名和价格。
阅读全文