c ++ - 输出2D数组及其元素之和

时间:2015-03-12 09:31:26

标签: c++ arrays function

在这个程序中,我试图添加二维数组的元素,打印整个数组,并使用函数打印它的总和。我知道我非常接近,但是当我尝试打印这笔钱时它不起作用。这是我的代码。

void DisplayB(int b[][4], int col, int row, int total);


int main()
{
    int total = 0;

    int b[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

    DisplayB(b, 3, 4, total);


}

void DisplayB(int b[][4], int col, int row, int total)
{
    total = 0;
    cout << "Array c using the display function: " << endl;
    for (int i = 0; i<col; i++)   
    {
        for (int j = 0; j<row; j++) 
        {
            cout << b[i][j] << "  ";

            total+=b[i][j];
        }
            cout<<total;
            cout << endl;

    }

}

当我在编译器中运行它时,我最终得到了这个:

1 2 3 4 10
5 6 7 8 36
9 10 11 12 78

看起来正在发生的是它找到每一行的总和并将其添加到前一行的总和。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

你的功能很混乱。

void DisplayB(int b[][4], int col, int row, int total)
{
    total = 0;
    cout << "Array c using the display function: " << endl;
    for (int i = 0; i<col; i++)   
    {
        for (int j = 0; j<row; j++) 
        {
            cout << b[i][j] << "  ";

            total+=b[i][j];
        }
            cout<<total;
            cout << endl;

    }

}

例如,原始数组有三行,但是您命名为col的函数的相应参数。反之亦然,您在函数声明中命名为行的列数。

同样在外部循环内部输出数组的部分和。例如

1 2 3 4 10
5 6 7 8 36
9 10 11 12 78

10是1,2,3,4的总和。 36是1,2,3,4和5,6,7,8的总和 等等。

我认为你想在显示数组之后输出总和。 考虑到参数总量是多余的。您可以简单地在函数中声明一个名为total的局部变量。

我会将函数分成两个函数。一个用于输出数组,另一个用于计算数组中所有元素的总和。

在这种情况下,程序看起来像

#include <iostream>
#include <iomanip>

const size_t N = 4;

void DisplayB( const int b[][N], size_t rows )
{
    std::cout << "Array b using the display function:\n" << std::endl;

    for ( size_t i = 0; i < rows; i++ )   
    {
        for ( size_t j = 0; j < N; j++ ) 
        {
            std::cout << std::setw( 2 ) << b[i][j] << ' ';
        }

        std::cout << std::endl;
    }
}

long long int Accumulate( const int b[][N], size_t rows )    
{
    long long int total = 0;

    for ( size_t i = 0; i < rows; i++ )   
    {
        for ( size_t j = 0; j < N; j++ ) 
        {
            total += b[i][j];
        }
    }

    return total;    
}    

int main()
{
    int b[3][N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

    DisplayB( b, 3 );

    std::cout << "\nSum of elements of the array is " 
              << Accumulate( b, 3 ) 
              << std::endl; 
}

程序输出

Array b using the display function:

 1  2  3  4 
 5  6  7  8 
 9 10 11 12 

Sum of elements of the array is 78

答案 1 :(得分:0)

void DisplayB(int b[][4], int col, int row, int total)
{
    total = 0;
    cout << "Array c using the display function: " << endl;
    for (int i = 0; i<col; i++)   
    {
        int sub_total = 0;
        for (int j = 0; j<row; j++) 
        {
            cout << b[i][j] << "  ";

            sub_total+=b[i][j];
        }
            total += sub_total;
            cout<<"Sub total "<<sub_total;// Optional
            cout << endl;
    }
    cout<<"Over all total "<<total;

}

答案 2 :(得分:-1)

#include <iostream>

using std::cout;
using std::endl;

void DisplayB(int b[][4], int row, int col, int total);


int main()
{
    int total = 0;

    int b[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

    DisplayB(b, 3, 4, total);


}

void DisplayB(int b[][4], int row, int col, int total)
{
    total = 0;
    cout << "Array c using the display function: " << endl;
    for (int i = 0; i<row; i++)   
    {
        for (int j = 0; j<col; j++) 
        {
            cout << b[i][j] << "  ";

            total+=b[i][j];   
        }
        //This is for row-wise addition
        //cout<< "\nTotal of row " << i << " is : " << total << endl;
        //total = 0;
        cout << endl;
    }
    cout<<"\nTotal = " << total << endl;
}