我正在尝试解决一项需要的练习:
- 随机填充3x3二维数组
- 将数组转换为维度为6x6的第二个数组:
1 2 3 1 2 3 3 2 1
4 5 6 - > 4 5 6 6 5 4
7 8 9 7 8 9 9 8 7
7 8 9 9 8 7
4 5 6 6 5 4
1 2 3 3 2 1
我无法让它工作'我认为逻辑必须正确。
#include <stdio.h>
#include <stdlib.h>
#define DIM 3
int main()
{
int i, j, a[DIM][DIM],a1[DIM][DIM], a2[DIM][DIM], a3[DIM][DIM], b[2*DIM][2*DIM];
srand(time(NULL));
for (i = 0; i < DIM; i++)
{
for (j = 0; j < DIM; j++)
{
a[i][j] = rand() % 10;
}
}
for (i = 0; i < DIM; i++)
{
for (j = 0; j < DIM; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
for (i = 0; i < DIM; i++)
{
for (j = 0; j < DIM; j++)
{
a1[i][j] = a[i][DIM - 1 - j];
a2[i][j] = a[DIM - 1 -j][j];
a3[i][j] = a2[i][DIM - 1 - j];
if(i < DIM && j < DIM)
b[i][j] = a[i][j];
if(i < DIM && j >= DIM)
b[i][j] = a1[i][j];
if(i >= DIM && j < DIM)
b[i][j] = a2[i][j];
if(i >= DIM && j >= DIM)
b[i][j] = a3[i][j];
}
}
for (i = 0; i < 2*DIM; i++)
{
for (j = 0; j < 2*DIM; j++)
{
printf("%d ", b[i][j]);
}
printf("\n");
}
return 0;
}
答案 0 :(得分:1)
以下几点可以帮助您到达目的地:
还有别的吗?
答案 1 :(得分:0)
如果您始终以与示例中所示相同的方式填充6 X 6矩阵,则可以使用以下代码,
m=0;
fl1=0;
for (i = 0; i < 6; i++)
{
n=0;
fl2=0;
for (j = 0; j < 6; j++)
{
b[i][j] = a[m][n];
if(n==3)
{
fl2=1;
}
if(fl2==0)
{
n++;
}
else
{
n--;
}
}
if(m==3)
{
fl1=1;
}
if(fl1==0)
{
m++;
}
else
{
m--;
}
}
答案 2 :(得分:0)
for (i = 0; i < DIM*2; i++){
for (j = 0; j < DIM*2; j++){
b[i][j]=a[i-(i>=DIM)*((i-DIM)*2+1)][j-(j>=DIM)*((j-DIM)*2+1)];
}
}