问题描述:
输入一个有序的整数序列(从小到大排列),然后再输入一个需要插入到数组中的整数,输出插入数据之前和之后的数列。(要保证插入数据之后数列仍然是从小到大排列)。
例如:
输入数列: 1 2 4 5
待插入数据: 3
插入数据后的数据: 1 2 3 4 5
参考代码:
#include <stdio.h>
int arr[100];
int main()
{
char ch = ' ';
int i, num, nCount = 0;
printf("输入一个数列: ");
while (ch != '\n')
{
scanf_s("%d", &arr[nCount++]);
ch = getchar();
}
printf("输入一个要插入的数: ");
scanf_s("%d", &num);
printf("插入数据前:\n");
for (i = 0; i < nCount; i++)
printf("%d ", arr[i]);
printf("\n");
for (i = nCount - 1; i >= 0 && num < arr[i]; i--)
arr[i + 1] = arr[i];
arr[i + 1] = num;//把数放到正确的位置
nCount++;//数组长度+1
printf("\n插入数据前:\n");
for (i = 0; i < nCount; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
运行结果: