题目描述
把数组a的第x个位置的元素ax先保存起来,然后把x+1到n的元素,依次往前移一位,最后原来的第x个位置的元素ax放在最后
输入格式
共3行 第一行 一个整数 第二行 个整数 第三行 一个整数
输出格式
移动后的数组
说了一个数组元素移动的道理
#include <stdio.h>
int a[10000001] = {0};
int main()
{
int n,x,i,j=0,t;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
t = a[x-1];
for(j=x-1;j<n-1;j++)
a[j] = a[j+1];
a[n-1] = t;
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
思路:
1. 保存第x个元素;
2. 从x+1到n的元素依次往前移一位;
3. 将保存的第x个元素放到最后。
代码示例(C语言):
#include<stdio.h>
#define N 100
int main() {
int n, x, i, a[N], temp;
scanf("%d", &n);
for(i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &x);
temp = a[x - 1];
for(i = x - 1; i < n - 1; i++) {
a[i] = a[i + 1];
}
a[n - 1] = temp;
for(i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
代码示例(C++):
#include<iostream>
#define N 100
using namespace std;
int main() {
int n, x, i, a[N], temp;
cin >> n;
for(i = 0; i < n; i++) {
cin >> a[i];
}
cin >> x;
temp = a[x - 1];
for(i = x - 1; i < n - 1; i++) {
a[i] = a[i + 1];
}
a[n - 1] = temp;
for(i = 0; i < n; i++) {
cout << a[i] << " ";
}
return 0;
}