在线编译器 C

#include <stdio.h> enum { SIZE = 10 }; int main() { int A[SIZE]; for (int i = 0; i < SIZE; i++) { scanf("%d", &A[i]); } int B[SIZE]; for (int i = 1; i < SIZE; i++) { B[i]=A[i-1]; } B[0]=A[SIZE-1]; for (int i = 0; i < SIZE; i++) { printf("%d ", &B[i]); } return 0; }
这段代码的目的是将数组A中的元素循环右移一位,然后存入数组B并输出。但输出结果不正确。

代码中有一个关键错误:在printf语句中使用了取地址符&,这会导致打印的是数组元素的地址而不是数值。

- 检查printf中的&符号,它不应该出现在这里,因为你想打印的是数组元素的值,而不是它们的地址。
- 另外,注意循环右移的逻辑:当前代码将A[i-1]赋给B[i],这实际上是左移的效果。你需要重新思考索引的对应关系,确保B[0]得到A的最后一个元素,而B[1]得到A[0],以此类推。