C++设计一个程序,它可以把最近的20天的气温值以柱形图的形式显示出来,假设气温在1~35度之间(取整),温度的高低以由“**”组成的“柱”的高低来表示,最上一行是每天的温度值,左侧是温度的刻度值从1开始,最下一行是天数从1开始。
时间: 2024-10-17 20:05:15 浏览: 24
为了在C++中设计这样一个程序,我们可以使用基本的控制台界面以及一些简单的数据结构。这里是一个简化的例子,我们将使用`std::vector`来存储最近20天的气温,并用字符(*)表示柱状高度。我们假定气温数据已经准备好了。
```cpp
#include <iostream>
#include <vector>
// 定义一个函数用于打印柱状图
void printTemperatureChart(const std::vector<int>& temperatures) {
int maxTemp = *std::max_element(temperatures.begin(), temperatures.end());
int columnWidth = 4; // 柱状图每个单元格的宽度
// 打印标题行
std::cout << " ";
for (int i = 1; i <= 35; ++i) {
if (i == 1 || i == 35)
std::cout << "*";
else
std::cout << " ";
if ((i % columnWidth) == 0) std::cout << "\n";
}
std::cout << "\n";
// 表示天数和温度
for (int day = temperatures.size(); day > 0; --day) {
std::cout << day << ": ";
for (int j = 0; j < temperatures[day - 1]; ++j) {
std::cout << "*";
}
std::cout << "\n";
}
// 打印底部刻度
std::cout << " ";
for (int i = 1; i <= 35; ++i) {
if (i % columnWidth == 0)
std::cout << "\n";
else
std::cout << " ";
if (i == maxTemp) std::cout << "*";
else std::cout << " ";
}
}
int main() {
// 这里假设你已经有了一个包含过去20天气温的vector
std::vector<int> temps = {22, 25, 30, 28, 32, 34, 29, 26, 27, 31, 24, 23, 33, 21, 20, 35, 20, 25, 28};
printTemperatureChart(temps);
return 0;
}
```
在这个程序中,`printTemperatureChart`函数接受一个气温向量,然后根据最高温度计算出需要的列宽。接着,它会逐日打印气温值,并以“*”表示相应的高度。最后,还会打印出底层的刻度线。
请注意,这只是一个基础版本,实际应用中你可能会选择更复杂的数据结构如`std::map`或图形库来创建更美观的图表。此外,你需要处理输入数据的问题,如果气温超过范围或数据量不足20天,这个示例可能需要调整。
阅读全文