杭电ACM 2019 数列有序问题 输出错误
ProblemDescription有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。Input输...
Problem Description
有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。
Input
输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。
Output
对于每个测试实例,输出插入新的元素后的数列。
Sample Input
3 31 2 40 0
Sample Output
1 2 3 4
以上是问题
#include<stdio.h>
int main()
{
int n,m,i,j,a[101],t;
while(scanf("%d %d",&n,&m)!=EOF)
{
if(n==0 && m==0)
break;
a[0]=0; t=0; //初始化数据
for(i=1;i<=n;i++) //输入n个数据
{
scanf("%d",&a[i]);
if(a[i]>m) //每输入一个数据就进行判断 如果m小 将输入的数据推后一个 m占当前位置
{
t=a[i];
a[i]=m;
a[i+1]=t;
i++;
}
}
for(j=1;j<=n+1;j++) //输出n+1个数据
{
printf("%d",a[i]);
}
}
return 0;
}
不知道为什么出现溢出了,求大神指点 展开
有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。
Input
输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。
Output
对于每个测试实例,输出插入新的元素后的数列。
Sample Input
3 31 2 40 0
Sample Output
1 2 3 4
以上是问题
#include<stdio.h>
int main()
{
int n,m,i,j,a[101],t;
while(scanf("%d %d",&n,&m)!=EOF)
{
if(n==0 && m==0)
break;
a[0]=0; t=0; //初始化数据
for(i=1;i<=n;i++) //输入n个数据
{
scanf("%d",&a[i]);
if(a[i]>m) //每输入一个数据就进行判断 如果m小 将输入的数据推后一个 m占当前位置
{
t=a[i];
a[i]=m;
a[i+1]=t;
i++;
}
}
for(j=1;j<=n+1;j++) //输出n+1个数据
{
printf("%d",a[i]);
}
}
return 0;
}
不知道为什么出现溢出了,求大神指点 展开
3个回答
展开全部
不知道你解决了没有,我有AC的代码,但是鉴于你已然采纳,我只好放弃上传了,可以私聊。我事先没看到你已经采纳,要不然连这句话我都不会写的。OJ上的题还是不要拿到度娘上,一般都是些没责任心的回答,可以跟身边的同学讨论讨论其实更有效果。顺便想问问今年的ACM竞赛你们学校的战果如何?有拿重要比赛的奖项么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(j=1;j<=n+1;j++)
{
printf("%d",a[i]); // 这里写错了,下标应该是 j
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf("%d",a[i]); 中的a[i]应为a[ j ] 吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询