源程序如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i, j, t, k;//定义循环变量
const int n = 10;//定义数组元素个数
int a[n], b[n + 1];//定义两个数组
printf("您喜欢的有序数组:\n");//输入数组序列文字提
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);//循环输入数组元素
}
printf("请输入想插入的数字\n");//输入要插入的数字
scanf("%d", &k);
for (i = 0; i <= n; i++)//循环遍历
{
if (i == n) b[i] = k;//如果走到最后都没有地方插入就放在最后
else b[i] = 0;
}
for (i = 0; i < n; i++)//循环遍历
{
for (j = 0; j < n; j++)
{
b[j] = a[i++];//依次将数组a付给b
}
}
for (j = 0; j < n; j++)//冒泡排序,将数组数列排好
{
for (i = 0; i < n - j; i++)
{
if (b[i] > b[i + 1])
{
t = b[i];
b[i] = b[i + 1];
b[i + 1] = t;
}
}
}
for (j = 0; j < n + 1; j++)//顺序输出
{
printf("%d ", b[j]);
}
}
程序输出结果如下:
扩展资料:
/*#include<stdio.h>//感觉用二分法不错 直接插入排序也不错
//插入函数 往有序的数组a里插入值为element的元素使数组a依然有序
//算法思想大概就是从头开始遍历找到第一个大于element的数 然后插入 然后后面的元素依次移动。
void insert_array(int *a,int length,int element)
{
int i,j,t,f;
for(i=0;i<length;i++)
{
if(a[i]>element)
{
t=i;//找到位置以后 可以依次移动数组元素腾出位置了
for(j=length;j>=t;j--)
{
if(j==t)
a[j]=element;
else
a[j]=a[j-1];//数组依次往后移动,不管正序还是倒序都可以
}
f=1;
break;
}
}
if(f!=1)//当element大于所有数组元素时候
{
a[length]=element;
}
for(i=0;i<length+1;i++)
{
printf("%d ",a[i]);
}
}
int main()
{
int a[5]={1,2,3,5,6};
int e=7;
insert_array(a,5,e);
}
参考资料:谭浩强<C语言程序设计>