有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中
程序分析:该程序需要实现两个方面:一是需要找到插入的位置,而是需要将插入的位置空出来(插入位置之后数组的每个元素后移)。设置变量i遍历数组元素以找到插入位置,设置变量j移动数组中的元素。
知识点:
后移数组中的元素时需要从最后一个元素开始移动,不能从第一个元素开始移动,这样会覆盖元素本身的值。不能写成一下形式:
a[j+1] = a[j];
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int a[10];
int i, j;
int n;
printf("Please enter a sorted array:\n");
for (i = 0; i < 9; i++)
{
scanf_s("%d", &a[i]);
}
printf("Please enter a number:\n");
scanf_s("%d", &n);
for (i = 0; i < 9; i++)
{
if (n < a[i])
{
for (j = 9; j >i; j--)
{
a[j] = a[j-1];
}
a[i] = n;
break;
}
}
if (i == 9)
{
a[9] = n;
}
for (i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
system("pause");
return 0;
}
调试结果: