在c中使用多维数组创建模式

标签 c arrays multidimensional-array

所以我陷入了两难的境地。我的代码应该使用 for 循环和 5 x 5 二维数组输出数字的对角线模式。我要用零填充数组,并让 for 循环用我想要的数字填充它。到目前为止我已经成功地做到了这一点。然而,它们的顺序是错误的。我希望 80 位于右上角,5 位于左下角。

输出应该是这样的:

0  0  0  0  80
0  0  0  40 0
0  0  20 0  0
0  10 0  0  0
5  0  0  0  0

当前源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int the_array[5][5] =
    {
        { 0, 0, 0, 0, 0 },
        { 0, 0, 0, 0, 0 },
        { 0, 0, 0, 0, 0 },
        { 0, 0, 0, 0, 0 },
        { 0, 0, 0, 0, 0 },
    };

    int dia = 5;
    int x = 0;
    int y = 0;
    for (x = 4; x >= 0; --x)
    {
        for (y = 0; y < 5; ++y)
        {
            if (x == y)
            {
                the_array[x][y] = dia;
                dia *= 2;
            }

            printf(" %d ", the_array[x][y]);
        }
        printf("\n");
    }
    return 0;
}

最佳答案

#include <stdio.h>
#include <stdlib.h>

int main()
{
int the_array[5][5] =
{
 { 0, 0, 0, 0, 0 },
 { 0, 0, 0, 0, 0 },
 { 0, 0, 0, 0, 0 },
 { 0, 0, 0, 0, 0 },
 { 0, 0, 0, 0, 0 },
};

int dia = 5;
int x = 0;
int y = 0;
for (x = 4; x >= 0; --x)
{
         the_array[x][x] = dia;
         dia *= 2;
 }

    for(int i = 0; i < 5; i++)
    {
        for(int j = 4; j >= 0; j--)
        {
            printf("%d ", the_array[i][j]);
        }
        printf("\n");
    }
return 0;
}

您可以使用一个循环将 the_array 更改为:

80 0 0 0 0 
0 40 0 0 0 
0 0 20 0 0 
0 0 0 10 0 
0 0 0 0  5

然后使用两个循环输出它:

0 0 0 0 80 
0 0 0 40 0 
0 0 20 0 0 
0 10 0 0 0 
5 0 0 0 0  

关于在c中使用多维数组创建模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37314153/

相关文章:

javascript - 嵌套数组操作

c - C中的按位运算比较两个整数

c - 在C中初始化UNION的浮点值

python - 循环遍历 numpy 数组,将所有数组绘制为单个图形(matplotlib)

javascript - 按键/值合并对象数组

java - 如何在 Java 中将数组转换为集合

c - 动态分配的数组 - 元素不可访问

c - 堆分配一个二维数组(不是指针数组)

c - IF 语句无法正常工作/无法指定输出

c - 哈希表-段错误