|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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");
- }
复制代码
|
-
问题代码
-
想要实现的效果
|