c语言
#include <stdio.h>int main()
{
int n, m, i, j;
int a;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==0 && m==0) {
break;
}
for(i=0;i<n;i++)
{
scanf("%d",&a[ i]);
}
for(i=0;i<n;i++)
{
if(a[ i]>m)
break;
}
for(j=n;j>i;j--)
{
a=a;
}
a[ i]=m;
n++;
for(i=0;i<n;i++)
{
printf("%d ",a[ i]);
}
printf("\n");
}
return 0;
}
这段代码中的问题在于插入新元素后没有正确更新序列的长度n,导致后续的循环输出时可能会输出多余的元素。另外,插入新元素的逻辑也存在问题,需要将j的初始值设为n,将a=a改为a=a,然后再将a[ i]=m。最后,当n和m只有一个是0时,应该直接退出循环。
页:
[1]