在线编译器 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[9]; for (int i = 0; i < SIZE; i++) { printf("%d ", B[i]); } return 0; }
这段代码的功能是:读取10个整数存入数组A,然后将数组A的元素循环右移一位存入数组B,最后输出数组B。具体来说,B[0]得到A[9],B[1]得到A[0],B[2]得到A[1],依此类推。

- 你的循环右移逻辑是正确的,但注意数组索引的对应关系:当i从1到9时,B[i] = A[i-1]实现了将A[0]到A[8]移到B[1]到B[9],而B[0]=A[9]单独处理了最后一个元素。这个思路没问题。

- 不过,你可以在一个循环内完成所有赋值,避免单独处理B[0]。思考如何用一个循环同时处理B[0]和其余元素,比如利用取模运算(%)来统一处理索引。