Online Compiler C

#include <stdio.h> int main() { int arr[10]; for (int i = 0; i < 10; i++) { scanf("%d", &arr[i]); if(i<9){ arr[i + 1] = arr[i];} else if(i==9){ arr[0]=arr[9]; } } for (int i = 0; i < 10; i++) { printf("%d", arr[i]); } return 0; }
这段代码试图实现数组元素的循环右移一位,但逻辑有误。当前代码在读取每个元素时立即修改了数组,导致后续输入被覆盖。

- 你需要在所有输入完成后,再对数组进行移位操作,而不是在输入循环中同时修改数组。
- 移位时要注意保存最后一个元素的值,否则会被覆盖。可以先用一个临时变量存储最后一个元素,再将其他元素依次后移,最后将临时变量放到第一个位置。