已知整型数组a长度为20,其中保存了15个数,并且这些数在数组中有序存放的。现插入一个数b,保存到数组a中,要求插入的数不能改变数组a中原来的顺序。例如数组a中保存数为1,3,5,24,26插入一个数9后,数组为1,3,5,9,24,26。要求使用c语言stdio.h
供参考:
#include<stdio.h>
int main()
{
int a[21] = { 1,3,5,24,26,30,34,42,48,55,60,61,68,70,77};
int i, j, p, len;
len = sizeof(a) / sizeof(a[0])-1;
printf("原数组为:\n");
for (i = 0; i < len; i++)
if (a[i] != 0)
printf("%4d", a[i]);
printf("\n输入要插入的数:\n");
scanf("%d", &p);
for (i = len-1; i >= 0; i--)//比较选择放置的位置
{
j = i + 1;
if (p > a[i] && a[i] != 0)
{
a[j] = p;
break;
}
else {
a[j] = a[i];
if (i == 0)
a[i] = p;
}
}
printf("输出插入之后的序列:\n");
for (i = 0; i <= len; i++)
if (a[i] != 0)
printf("%4d", a[i]);
return 0;
}
#include <stdio.h>
int main(int argc, char *argv[])
{
int a[20];
int i;
int j = 0;
int num = 17;//需要插入的数
for(i = 0; i < 30; i+=2){//插入有序排列的15个数
a[j] = i;
j++;
}
for(j = 0; j < 15; j++){
printf("%d ", a[j]);
}
printf("\n");
//插入
for(i = 0; i < 15; i++){
if(a[i] > num){
break;
}
}
for(j = 15; j > i; j--){
a[j] = a[j-1];
}
printf("\n");
a[i] = num;
//打印排序之后的数组
for(j = 0; j < 16; j++){
printf("%d ", a[j]);
}
printf("\n");
}