yueyufeng 发表于 2023-11-18 16:35:23

c语言

isdkz 发表于 2023-11-18 16:35:35

#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]
查看完整版本: c语言