用于查找列总和的二维数组,显示不正确

2D array to find sum of columns, doesn't display properly

#include <iostream>
#include <iomanip>
using namespace std;

void table(int i[], int j[]);
int m[4][5] = {
{2,5,4,7},
{3,1,2,9},
{4,6,3,0},
};


int main()
{
    table({}, {});
}


void table(int i[], int j[]) {
    for (int k = 0; k < 5; k++) {
        int sum = 0;
        for (int l = 0; l < 4; l++) {
            sum += m[l][k];
        }
        cout << "column: " << " " << sum << '\n';
    }
}

基本上我希望它显示如下:

Column      Sum of Column Entries
1               9
2               12
3               9
4               16

而且我不确定该怎么做。我写一个循环吗?

table 中删除参数。将 ij 作为指针传递(int i[] 只是 int* i 参数的一种混淆方式)然后不在函数中使用它们是没有意义的。相反,您应该传递一个指向数组的指针,而不是使用全局变量。虽然一次做一件事...

如果你想让一个header出现在其余输出之前,那么你需要在其余输出之前打印一个header:

void table() {
    std::cout << "column\tsum\n";
    for (int k = 0; k < 5; k++) {
        int sum = 0;
        for (int l = 0; l < 4; l++) {
            sum += m[l][k];
        }
        cout << k << "\t" << sum << '\n';
    }
}

提供的代码没有意义。

对于初学者来说,函数 table 的参数没有被使用。此外,在此调用后它们被初始化为空指针

table({}, {});

数组 m 也被声明为 4 行和 5 列。这意味着最后一行包含所有零,最后一列也包含零。

你的意思好像是三行四列的数组。

程序可以这样看

#include <iostream>
$include <iomanip>

const size_t COLS = 4;

void table( const int a[][COLS], size_t rows );

int main()
{
    int m[][COLS] = 
    {
        { 2, 5, 4, 7 },
        { 3, 1, 2, 9 },
        { 4, 6, 3, 0 },
    };

    table( m, sizeof( m ) / sizeof( *m ) );
}


void table( const int a[][COLS], size_t rows )
{
    std::cout << "Column     Sum of Column Entries\n";

    for (size_t j = 0; j < COLS; j++)
    {
        int sum = 0;
        for (size_t i = 0; i < rows; i++)
        {
            sum += a[i][j];
        }
        std::cout << j + 1 << ":" << std::setw( 14 ) << ' ' << sum << '\n';
    }
    std::cout << '\n';
}

程序输出为

Column     Sum of Column Entries
1:              9
2:              12
3:              9
4:              16