帮看一看怎么写,用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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!