Онлайн компилятор C

#include <stdio.h> int main() { int arr[12]; int i, a; for(i=0;i<12;i++) { scanf("%d", &arr[i]); } a=arr[0];arr[0]=arr[3];arr[3]=a; a=arr[1];arr[1]=arr[2];arr[2]=a; a=arr[4];arr[4]=arr[7];arr[7]=a; a=arr[5];arr[5]=arr[6];arr[6]=a; a=arr[8];arr[8]=arr[11];arr[11]=a; a=arr[9];arr[9]=arr[10];arr[10]=a; for(i=0;i<12;i++) { printf("%d ", arr[i]); } return 0; }
这段代码的功能是:读取12个整数存入数组,然后按照特定规则交换数组元素的位置,最后输出交换后的结果。

具体来说,代码将数组中的元素两两配对交换:第0个与第3个交换,第1个与第2个交换,第4个与第7个交换,第5个与第6个交换,第8个与第11个交换,第9个与第10个交换。这相当于把数组分成三组,每组四个元素,每组内部进行对称交换。

- 观察交换模式,思考这个交换是否可以用循环来实现,而不是写六行重复的交换代码。
- 注意交换的索引规律:每组四个元素,交换的是第0和第3个、第1和第2个,但组与组之间偏移量是4。想想如何用循环变量表示这些索引。