将一个任意整数插人到已排序的整型数组中,插人后数组中的数仍然保持有序。(VS中)
要求:
(1)整型数组由直接赋值的方式初始化,要插入的整数由scanf()函数输入;
(2)算法实现过程采用指针进行处理;
(3)输出原始数组数据以及插入整数后的数组数据,并加以说明。
源程序
#include<stdio.h>
int main()
{
int a[100] = {1,2,3,4,5,6,8};
int(*p)[100] = &a; //int(*p)[100]是定义的数组指针哦,个人感觉这样比较方便,感兴趣的可以去了解一下数组指针和指针数组的相关知识
int i, j, b,f;//b为插入原始数组的整数 printf("原始数组从小到大的顺序从左到右排列");
printf("原始数组为:\n");
for (i = 0; i < 7; i++)
{
printf("%d\t", (*p)[i]);
if ((i + 1) % 4 == 0)
{
printf("\n");
}
}
printf("\n请输入需要插入数组的整数\n"); scanf_s("%d", &b);
int* pa = &b;
if (*pa > 8)
{
a[7] = *pa;
}
if (*pa <= 8)
{
i = 0, j = 0;
while (a[i] < *pa)
{
i++;
j++;
}
for (i = j; i < 8; i++)
{
(*p)[i + 1] = (*p)[i]; //将插入数的位置及其后面位置上的数一同后移
}
a[j] = *pa;
}
printf("插入整数后的数组是:\n");
for (i = 0; i < 8; i++)
{
printf("%d\t", (*p)[i]); //"\t"是制表格的符号,可以让同行相邻两个数据间有间隔,即分开两个数据
if ((i + 1) % 4 == 0) //此处是为了美观,每行满4个数据就换行,若不想换行,可删除
{
printf("\n"); //“\n”是换行
}
}
return 0;
}
#include<stdio.h>
int main()
{
int a[100] = {1,2,3,4,5,6,8};
int(*p)[100] = &a; //int(*p)[100]是定义的数组指针哦,个人感觉这样比较方便,感兴趣的可以去了解一下数组指针和指针数组的相关知识
int i, j, b,f;//b为插入原始数组的整数 printf("原始数组从小到大的顺序从左到右排列");
printf("原始数组为:\n");
for (i = 0; i < 7; i++)
{
printf("%d\t", (*p)[i]);
if ((i + 1) % 4 == 0)
{
printf("\n");
}
}
printf("\n请输入需要插入数组的整数\n"); scanf_s("%d", &b);
int* pa = &b;
if (*pa > 8)
{
a[7] = *pa;
}
if (*pa <= 8)
{
i = 0, j = 0;
while (a[i] < *pa)
{
i++;
j++;
}
for (i = j; i < 8; i++)
{
(*p)[i + 1] = (*p)[i]; //将插入数的位置及其后面位置上的数一同后移
}
a[j] = *pa;
}
printf("插入整数后的数组是:\n");
for (i = 0; i < 8; i++)
{
printf("%d\t", (*p)[i]); //"\t"是制表格的符号,可以让同行相邻两个数据间有间隔,即分开两个数据
if ((i + 1) % 4 == 0) //此处是为了美观,每行满4个数据就换行,若不想换行,可删除
{
printf("\n"); //“\n”是换行
}
}
return 0;
}
这是VS里适用的程序,其他软件可在这基础上面修改一下
实验结果: