假设我有这样的多维数组:
int arr[3][3] = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
{{7, 4, 1},
{8, 5, 2},
{9, 6, 3}};
swap(&arr[0][0],&arr[0][1]);
swap(&arr[0][1],&arr[0][2]);
swap(&arr[0][2],&arr[1][2]);
swap(&arr[1][2],&arr[2][2]);
swap(&arr[2][2],&arr[2][1]);
swap(&arr[2][1],&arr[2][0]);
swap(&arr[2][0],&arr[1][0]);
swap(&arr[1][0],&arr[0][0]);
您可能会注意到,旋转后,旋转数组第一行的元素来自原始数组的第一列,与索引的顺序相反。同样,旋转数组的第二行来自原始数组的第二列,依此类推。考虑到这一点,您可以编写一个函数,在将新值复制到原始数组之前,用原始数组中的适当值填充新数组。
函数rotate_array()
迭代数组rotated
。旋转的的
I
第1行的元素来自输入数组A
的I
第1列。I
第1行的J
第1个元素是A
第1列的N-J-1
第1个元素。然后使用memcpy()
函数将旋转数组的内容复制到原始数组中。
#include <stdio.h>
#include <string.h>
void print_array(size_t n, int a[n][n]);
void rotate_array(size_t n, int a[n][n]);
int main(void)
{
size_t arr_sz = 5;
int arr[arr_sz][arr_sz];
for (size_t i = 0; i < arr_sz; i++) {
for (size_t j = 0; j < arr_sz; j++) {
arr[i][j] = i * arr_sz + j + 1;
}
}
puts("Before rotation:");
print_array(arr_sz, arr);
putchar('\n');
rotate_array(arr_sz, arr);
puts("After rotation:");
print_array(arr_sz, arr);
putchar('\n');
return 0;
}
void print_array(size_t n, int a[n][n])
{
for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < n; j++) {
printf("%5d", a[i][j]);
}
putchar('\n');
}
}
void rotate_array(size_t n, int a[n][n])
{
int rotated[n][n];
for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < n; j++) {
rotated[i][j] = a[n - j - 1][i];
}
}
memcpy(a, rotated, sizeof a[0][0] * n * n);
}
Before rotation:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
After rotation:
21 16 11 6 1
22 17 12 7 2
23 18 13 8 3
24 19 14 9 4
25 20 15 10 5
预期的结果是逆时针旋转字节数组,以获得一个固定的“a”。 我试图将给定的数组转换为旋转版本,但效果不佳。我的代码在“loop()”中的位移位和计算部分有一些不正确的地方。因此,我不得不分别处理x==5和x==6。 我如何在C中以更一般的方式逆时针旋转字节数组? 代码: 输出LED:
我有一个图像视图和一个按钮,我想要什么,当我点击按钮我想旋转图像视图10度。请帮帮我。 下面是我使用的代码
本文向大家介绍写一个算法,可以将一个二维数组顺时针旋转90度,说一下思路。相关面试题,主要包含被问及写一个算法,可以将一个二维数组顺时针旋转90度,说一下思路。时的应答技巧和注意事项,需要的朋友参考一下 考察点:数组
问题内容: 我想找出悬停时如何制作 旋转或旋转的图像 。我想知道如何在以下代码上使用 CSS 模仿该功能: 问题答案: 您可以将CSS3过渡与一起使用,以 在悬停时旋转图像 。 旋转图像:
问题内容: 因此,目标是将阵列中的元素正确旋转一次。举个例子; 如果, 则将成为 这是我所拥有的: 但是,这无法说明何时大于数组的长度。我读到我应该将更大的存储在另一个Array中,但是看到变量是不确定的,因此我不确定这是最好的解决方案。提前致谢。 问题答案: 在代码中添加一个模数组长度: 您还应该创建一个要复制到的新值,以免覆盖以后需要的值。
问题内容: 是否可以轻松地“旋转” PHP中的数组? 像这样:1,2,3,4-> 2,3,4,1 为此有某种内置的PHP函数吗? 问题答案: 当前大多数答案都是正确的,但前提是您不关心索引: 输出: 要保留索引,您可以执行以下操作: 输出: 也许有人可以比我的四行方法更简洁地进行轮换,但这还是行得通的。