不需要将该整数写入数组中也能达成目标
#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为最大数,需要在最后输出,否则换行
}
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为最大数,需要在最后输出,否则换行
}

京公网安备 11010502036488号