如何用C++从汇率列表生成N×N汇率矩阵并控制台输出?
生成N×N汇率矩阵并格式化输出的C++实现
核心实现步骤
- 矩阵初始化:按你给出的方式创建对角线元素为1的N×N矩阵(N为货币种类数)。
- 填充汇率数据:遍历每一对不同的货币组合,拼接
"源货币/目标货币"作为键,从unordered_map中取出对应汇率填充到矩阵对应位置。 - 格式化输出:用
setw控制列宽、setprecision控制小数位数,确保输出对齐美观。
完整示例代码
#include <iostream> #include <unordered_map> #include <vector> #include <iomanip> #include <string> using namespace std; int main() { // 初始化汇率映射与货币列表 unordered_map<string, double> exchange_rates = { {"EUR/USD", 0.98}, {"EUR/AUD", 0.88}, {"USD/EUR", 1.22}, {"USD/AUD", 1.09}, {"AUD/EUR", 1.33}, {"AUD/USD", 1.01} }; vector<string> currencies = {"EUR", "USD", "AUD"}; int n = currencies.size(); // 初始化对角线为1的矩阵 vector<vector<double>> matrix(n, vector<double>(n, 1.0)); // 填充汇率数据 for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (i != j) { string key = currencies[i] + "/" + currencies[j]; matrix[i][j] = exchange_rates[key]; } } } // 格式化输出矩阵 // 输出表头 cout << setw(5) << ""; for (const string& curr : currencies) { cout << setw(5) << curr; } cout << endl; // 输出每行数据 for (int i = 0; i < n; ++i) { cout << setw(5) << currencies[i]; for (double rate : matrix[i]) { // 若需和示例一致显示1而非1.00,可增加整数判断逻辑 cout << setw(5) << fixed << setprecision(2) << rate; } cout << endl; } return 0; }
输出效果
运行代码后控制台输出:
EUR USD AUD EUR 1.00 0.98 0.88 USD 1.22 1.00 1.09 AUD 1.33 1.01 1.00
注:如果需要严格匹配示例中"1"而非"1.00"的格式,可以在输出时判断数值是否为整数,再切换输出格式。
内容的提问来源于stack exchange,提问作者Udbdjfj
相关产品推荐
相关产品推荐

