首页 > 试题广场 >

下面 C++ 代码的运行结果为() #include io

[单选题]
下面 C++ 代码的运行结果为()
#include <iostream>

void rotate(int* arr, int size, int k) {
    int* temp = new int[size];
    for (int i = 0; i < size; ++i) {
        temp[(i + k) % size] = arr[i];
    }
    for (int i = 0; i < size; ++i) {
        arr[i] = temp[i];
    }
    delete[] temp;
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    rotate(arr, 5, 2);

    for (int i = 0; i < 5; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
    return 0;
}
  • 1 2 3 4 5
  • 4 5 1 2 3
  • 3 4 5 1 2
  •  2 3 4 5 1
实现的是向右旋转数组 k 位
原数组的第 i 个元素放到新数组的第 (i + k) % size 位置上
i=0: temp[(0+2)%5]=temp[2]=arr[0]=1
i=1: temp[(1+2)%5]=temp[3]=arr[1]=2
i=2: temp[(2+2)%5]=temp[4]=arr[2]=3
i=3: temp[(3+2)%5]=temp[0]=arr[3]=4
i=4: temp[(4+2)%5]=temp[1]=arr[4]=5
发表于 2025-08-13 20:38:47 回复(0)