题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
程序1:
#include <stdio.h>
int main()
{
int a[10]={1,2,3,4,6,7,8,9,10};
int number,i,j,temp;
printf("Pleasr enter a munber:\n");
scanf("%d",&number);
printf("The early array element are:\n");
for(i = 0; i < 9; i++)
printf("a[%d]=%d\n",i,a[i]);
if(number > a[8])
a[9] = number;
else
{
i=0;
while(number > a[i])
i++;
temp = a[i];
a[i] = number;
for(j = 9; j > i; j--)
{
a[j] = a[j-1];
}
a[i+1] = temp;
}
printf("The last array element are:\n");
for(i = 0; i < 10; i++)
printf("a[%d]=%d\n",i,a[i]);
return 0;
}
程序2:
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("original array is:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("insert a new number:");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{for(i=0;i<10;i++)
{ if(a[i]>number)
{temp1=a[i];
a[i]=number;
for(j=i+1;j<11;j++)
{temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;i<11;i++)
printf("%6d",a[i]);
}

网友评论