在线编译器 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; }
这段代码试图实现一个循环移位,但逻辑有误。它先读取10个整数存入数组,然后在读取过程中就尝试修改数组元素,导致最终输出结果不符合预期。

- 在循环中,当 i 小于9时,你把 arr[i] 的值赋给了 arr[i+1],这会导致后面读取的新值被覆盖,而且数组元素被错误地重复。
- 注意条件判断 `else if(i=9)` 这里使用了赋值运算符 `=` 而不是比较运算符 `==`,这会把 i 赋值为9,导致条件永远为真,并且改变了循环变量。