首页 > 解决方案 > 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;
}

标签: c++arraysmatrix

解决方案


AC

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和的值colsC不是。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++ 标准的一部分?有关更多信息。


推荐阅读