不需要将该整数写入数组中也能达成目标
#include "iostream"
using namespace std;
int main()
{
    int n,i,index,a[50],x;
    bool flag = false;        //标记位
    cin >> n;
    for(i=0;i<n;i++)
        cin >> a[i];
    cin >> x;
    
    for(i=0;i<n;i++)            //寻找该插入的index
     {
        if(a[i] > x)            //如果数组中的某位大于x即找到了插入位置
        {
            flag = true;        //标志已找到位置
            index = i;            //将位置赋予index
            break;                //跳出循环
        }
     }
    
    if(!flag)                    //如果没找到标志位,即该x就是最大数
    {
        index = i;                //将index标志为最大的位
        flag = true;            //标志已找到位置
    }
    
    for(i=0;i<n;i++)            //输出序列
    {
        if(flag && i==index)        //如果循环到目标位置,且flag为true即没有输出过
        {
            i==0 ? cout << x : cout << ' ' << x;        //输出插入数x,如果是第一个只需要输出数字,不是第一个就需要在数字前加空格
            i--;                            //使i--,让下一次循环能够定位到还是这个i
            flag = false;            //标记已经输出过一次了
        }
        else                                //输出原数组内容
            i==0 && flag ? cout << a[i] : cout << ' ' << a[i];        //要求插入数不在第一个输出且i为0时只需要输出数字,否则要加空格
    }
    
    flag ? cout << ' ' << x : cout << "\n";    //如果经过输出序列flag仍为true,即该插入数x为最大数,需要在最后输出,否则换行
}