首页 > 解决方案 > 添加 2x4 多维数组的列

问题描述

#include <stdlib.h>

int main() {
    int i, j, sum;
    int a[2][4] = {{ 11, 15, 22, 7 }, { 12, 9, 16, 21 }};

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

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

我试图切换a[i][j]到,a[j][i]但它没有添加列。添加行没有问题。我还希望每列对应一个字母。例如,第一列A11 + 12.

标签: c

解决方案


为什么是两个循环?一个就够了:

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

如果你想要两个循环:

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

应该管用。

更多问题

#include <stdlib.h>

应该

#include <stdio.h>

此外,在需要时声明变量是现代 C 的一个好习惯,并为变量选择更好的名称,即 preferrowcoloveri和over 。最后,不要在循环中使用像 2 和 4 这样的幻数,它们很容易出错:jtablea

#include <stdio.h>

int main(void)
{
    enum {rows = 2, cols = 4};
    int table[rows][cols] =
    {
        {11, 15, 22, 7},
        {12, 9, 16, 21}
    };

    for (size_t row = 0; row < rows; row++)
    {
        for (size_t col = 0; col < cols; col++)
        {
            printf("%d ", table[row][col]);
        }
        printf("\n");
    }
    for (size_t col = 0; col < cols; col++)
    {
        int sum = 0;

        for (size_t row = 0; row < rows; row++)
        {
            sum += table[row][col];
        }
        printf("%d ", sum);
    }
    printf("\n");
    return 0;
}

推荐阅读