元素插入
元素插入
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
总提交: 867 测试通过: 570
描述
今天同来面试的,还有Mr.true
Mr.true是一位高中大学都搞竞赛的小超人,而MS也很需要这样的人才。
于是,不用说,他去面试的时候会得到一点点小特权,那就是他可以少排一会队———漂亮的人力资源MM会给他安排一个靠前的位置。
输入
第一行为一个整数T,表示有T组数据。
每组数据有3行:
第一行为原队伍已有的人数N;
第二行有n个以空格隔开的整数表示原队伍面试编号序列;
第三行为两个整数P、Q,P表示Mr.true拿到的面试编号,Q表示Mr.true将插入队伍中的第Q个位置。
保证没有相同号码,保证N不大于10000
输出
插入后队伍面试编号的情况。
样例输入
2
3
1 2 3
4 2
4
9 8 2 3
7 1
样例输出
1 4 2 3
7 9 8 2 3
题目 http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=2951
[code=C/C++][/code]
#include<stdio.h>
int main(){
int n,i,j,m,a[1000],p,q;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&m);
for(j=1;j<=m;j++)
scanf("%d",&a[j]);
scanf("%d%d",&p,&q);
for(j=m;j>=q;j--)
a[j+1]=a[j];
a[j+1]=p;
for(j=1;j<=m;j++)
printf("%d ",a[j]);
printf("%d\n",a[m+1]);
}
return 0;
}
运行结果:Runtime Error(ACCESS_VIOLATION)
不知道 哪里错啦
[解决办法]
for(j=1;j<=m;j++)//这儿错了,达不到你输入1 2 3;然后循环读入的目的 scanf("%d",&a[j]);
[解决办法]
for(j=m;j>=q;j--)a[j+1]=a[j]; //j+1 越界了