程序代码:
root@~ #cat insert.c
#include <stdio.h>
int main (void) {
//假定数组a为已排序的数组,元素个数5
int a[5]={ 2,4,7,8,10 };
int n,i,j;
//打印源数组
for(i=0;i<5;i++) { printf ("%i ",a[i]); };printf ("\n");
//输入插入值
printf ("Enter a number put into array:");
scanf("%i",&n);
//遍历
for(i=0;i<5;i++) {
//如果插入的值在两个元素之间
if(n>a[i]&&n<a[i+1]) {
for(j=4;j>=i+1;j--) {
a[j+1]=a[j];
}
a[i+1]=n;
break;
}
//如果插入的值等于某一元素的值
if(n==a[i]) {
for(j=4;j>=i+1;j--) {
a[j+1]=a[j];
}
a[i+1]=n;
break;
}
//如果插入的值小于0号元素
if(n<a[0]) {
for(j=4;j>=0;j--) {
a[j+1]=a[j];
}
a[0]=n;
break;
}
//如果插入的值大于4号元素
if(n>a[4]) {
a[5]=n;
break;
}
}
// 显示插入后的数组各个元素
for(i=0;i<6;i++) { printf ("%i ",a[i]); };printf ("\n");
return 0;
}
//测试:
root@~ #
root@~ #./insert
2 4 7 8 10
Enter a number put into array:0
0 2 4 7 8 10
root@~ #./insert
2 4 7 8 10
Enter a number put into array:3
2 3 4 7 8 10
root@~ #./insert
2 4 7 8 10
Enter a number put into array:4
2 4 4 7 8 10
root@~ #./insert
2 4 7 8 10
Enter a number put into array:10
2 4 7 8 10 10
root@~ #./insert
2 4 7 8 10
Enter a number put into array:999
2 4 7 8 10 999
root@~ #