解题思路:新元素与有序数列元素逐个比较,将其插入两数之间,并同时将其他元素后移,为防止后移时值被覆盖,从后往前遍历数列元素
代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,a,b;
scanf("%d",&n);
//输入数列元素个数 n
int str[n+1]; //定义数组长度,多出一位存放新元素
for(i=0;i<n;i++)
{ //逐个输入数组元素
scanf("%d",&a);
str[i]=a;
}
scanf("%d",&b); //输入插入的元素
for(i=n-1;i>=0;i--) //从后往前遍历元素
{
if(b<str[i])
str[i+1]=str[i];
else
break;//停止循环
}
str[i+1]=b;//放在循环外以防b最大不进入if语句
for(i=0;i<n+1;i++)
{ //逐个输出新数列
printf("%d ",str[i]);
}
return 0;
}
PS: 如果有帮到你,希望留个赞,谢谢!