Online Compiler C

#include <stdio.h> int main() { int arr[12]; int res[12]; for (int i = 0; i < 12; i++) { scanf("%d", &arr[i]); } for (int i = 0; i < 4; i++) { res[i] = arr[8 + i]; } for (int i = 0; i < 4; i++) { res[i+4] = arr[i + 0]; } for (int i = 0; i < 4; i++) { res[i+8] = arr[4 + i]; } for (int i = 0; i < 12; i++) { printf("%d", res[i]); } return 0; }
这段代码的功能是:读取12个整数存入数组arr,然后按照特定顺序重新排列后存入数组res,最后输出res。具体来说,它把arr的后4个元素(索引8-11)放到res的前4个位置,把arr的前4个元素(索引0-3)放到res的中间4个位置,把arr的中间4个元素(索引4-7)放到res的最后4个位置。

- 检查一下循环中的索引计算是否正确。例如,第一个循环 `res[i] = arr[8 + i]` 当i从0到3时,取的是arr[8]到arr[11],这没问题。但第二个循环 `res[i+4] = arr[i + 0]` 取的是arr[0]到arr[3],第三个循环 `res[i+8] = arr[4 + i]` 取的是arr[4]到arr[7]。从逻辑上看,这三个循环覆盖了arr的所有元素,但顺序是后、前、中,而不是通常的循环移位或分段交换。请确认这个顺序是否符合你的预期。

- 输出时没有加空格或换行,所有数字会连在一起。如果希望每个数字分开显示,可以在printf的格式字符串中添加空格或换行符。