Online Compiler C

#include <stdio.h> int main() { const int N = 10; int A [N],i,c; for (i=0;i<N;i++) {scanf("%d",&A[i]); }c=A[9]; for (i=N-1;i>0;i--){ A[i]=A[i-1]; } A[N-9]=c; for (i=0;i<N;i++){ printf("%d",A[i]); } return 0; }
这段代码的功能是:读取10个整数存入数组,然后将最后一个元素移到第一个位置,其他元素依次后移一位,最后输出整个数组。

- 代码中 `A[N-9]=c` 这一行有问题。当 N=10 时,N-9=1,这会把最后一个元素放到索引1的位置,而不是索引0。你需要思考如何正确地将最后一个元素放到数组的开头。
- 循环移位时,从后往前移动元素是正确的思路,但注意循环的边界条件。当前循环 `for (i=N-1;i>0;i--)` 会覆盖 A[0] 的值,但你没有在移动前保存 A[0] 的原始值。实际上你只需要保存最后一个元素,然后从后往前移动,最后把保存的值放到第一个位置。