C++的相关问题,希望用简单的代码回答

img

帮看一看怎么写,用c++,不要用复杂的代码,我看不懂,教一下怎么弄

循环读取数据,如果是-1就结束循环。插入数据的时候,把插入位置的数据逐个后移,然后在插入数据即可。

C代码:

#include <stdio.h>


int main()
{
    int a[20],n=0,i=0,pos,data;
    //读取数据,-1结束
    while(1)
    {
        scanf("%d",&a[i]);
        if(a[i]==-1)
            break;
        else
            i++;
    }
    n = i; //保存读取的数据个数
    scanf("%d",&pos); //读取插入位置
    scanf("%d",&data); //读取插入的数据
    //pos位置开始数据后移
    for (i=n;i>=pos;i--)
    {
        a[i] = a[i-1];
    }
    a[pos-1] = data;//插入数据
    n+=1;
    //输出结果
    for (i=0;i<n;i++)
    {
        if(i<n-1)
            printf("%d ",a[i]);
        else
            printf("%d\n",a[i]);
    }
    return 0;

}

C++代码如下:

#include <iostream>
using namespace std;

int main()
{
    int a[20],n=0,i=0,pos,data;
    //读取数据,-1结束
    while(1)
    {
        cin >> a[i];
        if(a[i]==-1)
            break;
        else
            i++;
    }
    n = i; //保存读取的数据个数
    cin >> pos; //读取插入位置
    cin >> data; //读取插入的数据
    //pos位置开始数据后移
    for (i=n;i>=pos;i--)
    {
        a[i] = a[i-1];
    }
    a[pos-1] = data;//插入数据
    n+=1;
    //输出结果
    for (i=0;i<n;i++)
    {
        if(i<n-1)
            cout << a[i] <<" ";
        else
            cout << a[i]<<endl;
    }
    return 0;

}

将插入位置之后的元素全部向后移动一位,然后插入新值

输出的时候可以在下标减1的地方输出要插入的值就行

#include<stdio.h>
int main()
{
    int t[30],p=0,pos,j,n;
    while(scanf("%d",&t[p])!=-1)
        if(t[p++]==-1) break;
    scanf("%d",&pos);
    scanf("%d",&n);
    for(j=0; j<p-1; j++)
    {
        printf("%d ",t[j]);
        if(j+1==pos-1)
            printf("%d ",n);
    }
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632