Cjiajia_010 2021-11-09 18:03 采纳率: 88.6%
浏览 24
已结题

请问哪里又错了我运行感觉没毛病但是就说我错了,希望能在基础上改

img


#include<stdio.h>
int main(void)
{
   int i,n,t,a[3000],m,q,p,sum;
   scanf("%d",&p);
   for(q=1;q<=p;q++)
   {
   scanf("%d",&n);
for(i=0;i<n;i++)
{
   scanf("%d",&a[i]);    
}
   sum=0;
  for(i=1;i<n;i++)
  {
      sum=sum+1;
      if(a[i]<a[i-1])
      {
          m=a[i];
          for(t=i-1;t>=0;t--)
          {   
            if(t<i-1)
            {
                sum=sum+1;
            }
              if(a[t]<m)
              {   
                  break;
              }
              a[t+1]=a[t];
          }
              a[t+1]=m;
      }
  }
  printf("%d\n",sum);
  for(i=0;i<n-1;i++)
  {
      printf("%d ",a[i]);
  }
    printf("%d\n",a[i]);
   }
}
  • 写回答

1条回答 默认 最新

  • 星星不再亮 2021-11-10 15:41
    关注

    模拟一遍 如输入样例 3 2 4 5;
    i=1;a[1]<a[0]->2<3成立,m=a[1]=2;
    for中t=0,t<i-1不满足,a[t]=a[0]=3<m,不满足,a[1]=a[0],跳出for;
    a[t+1]=a[1]=m;a[1]=a[0]=2
    没有a[0]等于多少,a[0]没变

    我修改了一点 我的比较和他输出的不一样,比如 3 2 4 5,我比较了6次,先是比较三次 将最大的放在最后,再比较两次,将第二大的放在第三个,
    再比较最后一次将第三大的放在第二位,最后输出
    #include<stdio.h>
    int main(void)
    {
    int i,n,a[3000],m,q,t,sum;
    scanf("%d",&t);
    for(q=1;q<=t;q++)
    {
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    scanf("%d",&a[i]);
    }
    sum=0;
    for(i=0;i<n;i++)
    {
    for(q=1;q<n-i;q++)
    {
    if(a[q]<a[q-1])
    {
    m=a[q];
    a[q]=a[q-1];
    a[q-1]=m;
    }
    sum++;
    }
    }
    printf("%d\n",sum);
    for(i=0;i<n;i++)
    {
    printf("%d ",a[i]);
    }
    printf("\n");
    }
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月11日
  • 已采纳回答 12月3日
  • 创建了问题 11月9日

悬赏问题

  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问
  • ¥15 用MATLAB汇总拟合图
  • ¥15 智能除草机器人方案设计
  • ¥15 对接wps协作接口实现消息发送
  • ¥15 SQLite 出现“Database is locked” 如何解决?
  • ¥15 已经加了学校的隶属邮箱了,为什么还是进不去github education?😭
  • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题
  • ¥100 无网格伽辽金方法研究裂纹扩展的程序