该程序应该将二维数组的每一列的乘积保存在另一个一维数组中

时间:2018-06-26 08:03:14

标签: c

#include<stdio.h>
int main()
{
    int m, n, i, j, k;
    printf("Number of rows : ");
    scanf("%d", &m);
    printf("Number of columns: ");
    scanf("%d", &n);
    int a[m][n];
    for (i = 0; i < m; i++)
    { /*receiving each element as an input*/
        for (j = 0; j < n; j++)
        {
            printf("Element a[%d][%d]: ", i + 1, j + 1);
            scanf("%d", &a[i][j]);
        }
    }

    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            printf(" %d ", a[i][j]);
        }
        printf("\n");
    }

    int p = 1;
    int v[n];

    for (k = 0; k < n; k++)
    {
        for (j = 0; j < n; j++) /*calcuclating the product of each column and 
                                  savin the value as the element of an array*/
        {
            for (i = 0; i < m; i++)
            {
                p *= a[i][j];
            }
            v[k] = p;
        }
    }

    for (k = 0; k < n; k++)
    {
        printf("%d ", v[k]);
    }

我遇到的问题是计算每列的乘积。我不明白为什么值会分散,而不是计算每列的乘积而不返回值taht是不正确的。

输出看起来像这样:

Number of rows: 2
Number of columns: 2
Element a[1][1]
Element a[1][2]
Element a[2][1]
Element a[2][2]

2  4
3  6

144  20736

非常感谢您的帮助。 预先谢谢你。

1 个答案:

答案 0 :(得分:0)

您有几个问题。首先,在计算产品时,您会有一个多余的循环。其次,当移至新列时,您永远不会重置产品。

__getitem__