C语言练习题-C语言练习题实例39
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况。插入后,将该元素之后的数依次后移一个位置。
实例
#include<stdio.h>
int main() {
int a[11] = {1, 4, 6, 9, 13, 16, 19, 28, 40, 100};
int temp1, temp2, number, end, i, j;
printf("原始数组是:\n");
for (i = 0; i < 10; i++)
printf("%4d", a[i]);
printf("\n插入一个新的数字: ");
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("%4d", a[i]);
printf("\n");
return 0;
}
以上实例输出结果为:
原始数组是:
1 4 6 9 13 16 19 28 40 100
插入一个新的数字: 10
1 4 6 9 10 13 16 19 28 40 100
该程序首先定义了一个已经排好序的数组a
,然后从用户输入中获取一个新的数字number
。程序判断number
是否大于数组中的最后一个数end
,如果是,则将number
直接插入到数组的最后。否则,程序从头开始遍历数组,找到第一个大于number
的元素,将number
插入到该位置,同时将该位置之后的元素依次后移一个位置。最后,输出更新后的数组。
注意:该程序假设数组a
的长度为11,并且原始数组已经按照升序排列。如果需要处理其他长度的数组或者非升序排列的数组,需要相应地修改程序。