旭辉夜夜访 2021-12-05 14:56 采纳率: 100%
浏览 12
已结题

C++数据插入后排序,最后一个数据丢失。

最后一个数据丢了,出来一个奇怪的数据。不知道什么原因。

#include<iostream>
using namespace std;
const int MAX=100;
void myinser(int a[],int x,int &n);
int main()
{
     int a[MAX],n,x,maxi;
     cin>>n;
     for(int i=0;i<n;i++)
                cin>>a[i];
     for(int j=0;j<n-1;j++)
     {
          for(int k=j+1;k<n;k++)
          {
               if(a[k]>a[j])
               {
                     maxi=a[k];
                     a[k]=a[j];
                     a[j]=maxi;
               }
          }
     }
     cin>>x;
     myinser(a,x,n);
     for(int i=0;i<n;i++)
          cout<<a[i]<<" ";
return 0;
}

void myinser(int a[],int x,int &n)
{
     for(int i=0;i<n;i++)
     {
          if(x>a[i])
              for(int j=n;j>=i;j--)
                   a[j+1]=a[j];
              a[i]=x;
             break;
      }
      n++;
}


这是输入和输出。
10 2 7 9 11 5 4 3 6 8 20
12
12 11 9 8 7 6 5 4 3 2 1875855620

从键盘输入n个整数(n<100),存放在一维数组中,将它们从大到小排序,再从键盘输入一个整数x,将该数插入到该数组中,使得插入后元素序列依然有序,输出插入后数组中的所有元素。

  • 写回答

2条回答 默认 最新

  • 旭辉夜夜访 2021-12-05 23:52
    关注

    函数有问题,我改了一下。

    for(int i=0;i<n;i++)
         {
              if(x>a[i])
              {
                   for(int j=n-1;j>=i;j--)
                       a[j+1]=a[j];
                   a[i]=x;
                   n++;
              }
              break;
          }
    
    

    但是这样,12又不在输出中,其他正常。

    评论

报告相同问题?

问题事件

  • 系统已结题 12月13日
  • 创建了问题 12月5日

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画