c++ - C++ 数组值
问题描述
我试图在程序结束时找出 A、B 和 C 的值。当我尝试使用 for 循环计算时,我得到了一个完整的值列表。我只需要一个矩阵格式。
#include <iostream>
using namespace std;
int main()
{
int m = 3;
int A[m] [m] = {};
int B[m] [m + 1] = {};
int C[m + 1] [m] = {};
int counter = 0, k = 2;
for (int i=1; i<=m; i++)
{
for (int j=1; j<=m; j++)
{
A[i-1][i-1] = counter;
B[i][j] = counter;
C[j-1][j-1] = k;
}
counter++;
k += 3;
}
//Printing C
//get array columns and rows
int rows = sizeof C/ sizeof A[0];
int cols = sizeof C[0] / sizeof(int);
// Print 2d Array
cout << "your_array data "<<endl<<endl;
for (int i = 0; i < rows; ++i)
{
for (int j = 0; j < cols; ++j)
{
std::cout << C[i][j] << std::endl;
}
}
return 0;
}
解决方案
你A
和C
是
int A[3][3] = {};
int C[4][3] = {};
然后你使用
int rows = sizeof C/ sizeof A[0];
int cols = sizeof C[0] / sizeof(int);
得到它的大小。那是
int rows = 3;
int cols = 4;
然后在循环中
for (int i = 0; i < rows; ++i)
{
for (int j = 0; j < cols; ++j)
{
std::cout << C[i][j] << std::endl;
}
}
您已经交换了rows
和的值cols
。C
不是。int C[4][3];
_int C[3][4];
如果要在一行中打印多个元素,只需移动std::endl
以仅在一行之后添加新行:
for (int i = 0; i < rows; ++i)
{
for (int j = 0; j < cols; ++j)
{
std::cout << C[i][j] << " ";
}
std::cout << "\n";
}
另请注意,这不是标准 C++
int m = 3;
int A[m] [m] = {};
int B[m] [m + 1] = {};
int C[m + 1] [m] = {};
阅读为什么可变长度数组不是 C++ 标准的一部分?有关更多信息。
推荐阅读
- python - 为熊猫系列的每个值分配百分位数
- reactjs - 使用记忆化的 React 组件重新绘制组件时出错
- websocket - lighttpd/mod_wstunnel 连接 JSON 消息
- arrays - 在 Typescript 中定义动态数组?
- python - Ctypes __readgsqword
- reactjs - 如何显示从 mongodb 检索到的由 URL.createObjectURL 保存的图像?
- php - php 文件如何保存 jquery ajax POST 接收的文件?
- c# - 什么是函数评估需要所有线程运行?
- c# - 我可以从现有的 DbContext 克隆吗?
- c# - 将事件链接到依赖项?