数组元素的移动(C语言、C++)

题目描述
把数组a的第x个位置的元素ax先保存起来,然后把x+1到n的元素,依次往前移一位,最后原来的第x个位置的元素ax放在最后

输入格式
共3行 第一行 一个整数 第二行 个整数 第三行 一个整数

输出格式
移动后的数组

img

说了一个数组元素移动的道理

#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]);
}

以下内容部分参考ChatGPT模型:



思路:
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;
}

如果我的建议对您有帮助、请点击采纳、祝您生活愉快

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632