#include<iostream>
using namespace std;
int main(){
int n,i;
cin >> n;
int arr[n];
for (i = 0; i < n;i++)
cin >> arr[i];
int temp = arr[n - 1];
for (i = 0; i < n - 1;i++){
arr[i + 1] = arr[i];
}
for (i = 0; i < n;i++)
cout << arr[i];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这里有各种各样的问题
int n;
cin >> n;
int arr[n];
Run Code Online (Sandbox Code Playgroud)
这是不允许的。你不能有一个动态大小的数组。您应该改用向量。
在这段代码中
int temp = arr[n - 1];
for (i = 0; i < n - 1; i++)
arr[i + 1] = arr[i];
Run Code Online (Sandbox Code Playgroud)
您正在增加索引 i,但修改前一个数组元素。这实际上将第一个元素复制到数组的其余部分。(另外,更喜欢循环变量的预增量)。
此外,您没有将 temp 写入第一个位置。
最好使用旋转
std::rotate(a, a + n - 1, a + n);
Run Code Online (Sandbox Code Playgroud)
如果您绝对必须自己编写循环,那么您需要以相反的顺序进行迭代
int temp = arr[n - 1];
for (i = n - 1; i > 0 ; --i)
arr[i] = arr[i - 1];
arr[0] = temp;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |