Онлайн компилятор 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] = arr[i + 0]; } for (int i = 0; i < 4; i++) { res[i] = arr[4 + i]; } for (int i = 0; i < 12; i++) { printf("%d", res[i]); } return 0; }
这段代码的目的是从输入的12个整数中提取三个部分,但最终输出结果可能不符合预期。代码中连续三次对 `res` 数组的前4个元素进行赋值,导致只有最后一次赋值(`arr[4]` 到 `arr[7]`)保留下来,前两次赋值被覆盖了。

- 注意 `res` 数组的索引使用:三个循环都从 `i=0` 开始,每次都会覆盖 `res[0]` 到 `res[3]`,所以只有最后一个循环的结果会保留。
- 思考如何将三个不同的部分分别存入 `res` 的不同位置,而不是重复使用相同的索引范围。