Online Compiler C

#include <stdio.h> enum { SIZE = 12 }; int main() { int A[SIZE]; for (int i = 0; i < SIZE; i++) { scanf("%d", &A[i]); } int before; for (int x = 0; x < 3; x++) { for (int i = 1; i < 3; i++) { before = A[4 * x + i - 1]; A[4 * x + i - 1] = A[4 * (x + 1) - i - 1]; A[4 * (x + 1) - i - 1] = before; } } for (int i = 0; i < SIZE; i++) { printf("%d ", A[i]); } return 0; }
这段代码的功能是:读取12个整数存入数组A,然后对数组进行某种对称交换操作,最后输出结果。具体来说,代码将数组视为3组,每组4个元素,在每组内部进行元素交换。

从代码逻辑看,外层循环x从0到2,对应3组(每组4个元素)。内层循环i从1到2,执行交换操作。交换的是每组中第i个元素(索引4*x+i-1)和该组中对称位置的元素(索引4*(x+1)-i-1)。例如当x=0时,交换的是A[0]与A[3]、A[1]与A[2];当x=1时,交换A[4]与A[7]、A[5]与A[6];以此类推。

- 注意内层循环的边界条件:i从1到2,这意味着每组中第一个和最后一个元素(i=0和i=3的情况)没有被交换。检查一下这个范围是否覆盖了你想要的所有交换。
- 另外,变量before用于暂存交换值,但注意在交换过程中,before只保存了其中一个值,而另一个值直接赋值。确认这种交换方式是否正确实现了两个元素的互换。