在线编译器 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 < 3; i++) { res[i] = arr[3 - i]; } for (int i = 0; i < 3; i++) { res[i + 4] = arr[7 - i]; } for (int i = 0; i < 3; i++) { res[i + 8] = arr[11 - i]; } for (int i = 0; i < 12; i++) { printf("%d ", res[i]); } return 0; }
这段代码的目的是将输入的12个整数分成三组(每组4个),然后将每组内部的顺序反转,最后输出结果。但代码中存在索引错误。

- 第一个循环 `res[i] = arr[3 - i]` 中,当 i=0 时访问 arr[3],i=1 时 arr[2],i=2 时 arr[1],缺少了 arr[0] 这一项。每组应该有4个元素,但这里只处理了3个。
- 类似地,后面两个循环也只处理了每组中的3个元素,每组都漏掉了第一个元素。你需要检查每组反转时应该包含哪些索引范围。