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

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

代码中存在一个逻辑错误。你试图将最后一个元素保存到变量c,然后从后往前移动元素,最后把c放到某个位置。但移动的范围和放置的位置需要仔细检查。

- 你使用 `A[N-11]=c` 来放置保存的元素,但 `N-11` 等于1,这会把c放到数组的第二个位置,而不是第一个位置。你需要思考如何正确地将最后一个元素放到数组开头。
- 循环 `for (i=N-1;i>0;i--)` 将每个元素赋值为前一个元素,这会导致 `A[0]` 没有被覆盖,但你的放置位置又不对,所以结果会出错。