|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
二维数组也是通过一维线性的方式储存的,那为什么不能直接把二维数组转换成一维的呢?
这是我的代码#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a[4][5] =
{
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20}
};
int i,j,k;
for (i = 0;i<4;i++)
{
for ( j = 0; j < 5; j++)
{
k = i+j;
printf ("%2d ",a[k]);
}
printf ("\n");
}
printf("\n");
system ("pause");
return 0;
}
这是标准答案#include <stdio.h>
int main()
{
int a[4][5] = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20}};
int i, j;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 5; j++)
{
printf("%2d ", a[i][j]);
if (i + j == 3)
{
printf("\n");
}
}
}
printf("\n");
return 0;
}
本帖最后由 jhq999 于 2022-12-29 17:33 编辑
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a[4][5] =
{
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20}
};
int i,j,k;
for (i = 0;i<5;i++)
{
for ( j = 0; j < 4; j++)
{
k = i*4+j;
printf ("%2d ",((int*)a)[k]);
}
printf ("\n");
}
printf("\n");
system ("pause");
return 0;
}
或者 for (i = 0;i<5;i++)
{
for ( j = 0; j < 4; j++)
{
printf ("%2d ",((int(*)[4])a)[i][j]);
}
printf ("\n");
}
|
-
问题代码
-
想要实现的效果
|