所以我陷入了两难的境地。我的代码应该使用 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/