在有序(升序)的数组中插入一个数,使插入后的数组仍然有序。
(1)在Visual Studio 2017中选择“文件”→“新建”→ “项目”。
(2)在跳出的界面选择“Windows 桌面”→“Windows桌面向导” → “输入项目名称(输入179)”→“选择保存项目路径,,单击“确定”按钮,创建一个工程步骤完成。
(3)在创建的工程中,在“源文件”右键,选择“添加” →“新建项” →“C++文件(.cpp)”,在下面的位置输入文件名,单击“添加”,完成源文件的的添加。
(4)在代码编辑界面中,开始编写本实例代码。
(5)引用头文件,进行宏定义。
#include<stdio.h> #define N 10(6)创建自定义函数insert(),用于实现向有序的数组中插入一个元素,并使插入后的数组仍然有序。代码如下
void insert(int *a, int n, int x) /*插入元素的自定义过程*/ { int*p, *q; /*声明指针变量*/ for (p = a; p < a + n; p++) /*遍历数组元素*/ { if (*p > x) /*找到要插入的位置*/ { q = p; /*记录要插入的位置*/ break; /*跳出循环*/ } } for (p = a + n; p >= q; p--) /*将插入位置之后的数据下移*/ *p = *(p - 1); *q = x; /*插入*/ }(7)主函数程序代码如下:
void main() { int i, a[N + 1], an; /*声明变量和数组*/ int *p; /*声明指针变量*/ printf("Input 10 seriate integer :\n "); for (i = 0; i < N; i++) scanf("%d", &a[i]); /*输入数组元素*/ printf("input inserting data: "); scanf("%d", &an); /*输入要插入的数*/ insert(a, N, an); /*进行插入操作*/ for (p = a; p < a + N + 1; p++) { printf("%3d", *p); /*输出插入元素后的数组*/ } }引用文献