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

#include <stdio.h> int main() { int arr[10]; for (int i = 0; i < 10; i++) { scanf("%d", &arr[i]); arr[i + 1] = arr[i]; arr[9] = arr[0]; } for (int i = 0; i < 10; i++) { printf("%d", arr[i]); } return 0; }
这段代码试图读取10个整数并存入数组,但内部逻辑有误。它每次循环都会修改数组元素,导致最终输出不是原始输入。

- 循环中 `arr[i + 1] = arr[i];` 会覆盖下一个未读取的位置,而且当 i=9 时访问 `arr[10]` 越界。
- `arr[9] = arr[0];` 每次循环都重置最后一个元素,破坏了数组内容。

提示:思考如何只将输入值存入对应位置,而不在读取过程中修改其他元素。