题为c基础程序设计(第五版)谭浩强 课后习题第6章第4题
思维分析:(在程序中一般以输入,处理,输出来考虑)
1.输入数组元素的个数。
2.依次输入各个数组元素(已经排序好的)。
3.输入要插入的数。
4.确定插入的位置。
5.将要插入的数插入到数组中去。
6.将新的数组输出。
具体代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int arr[100], n, i, j, k;
//输入数组元素个数
printf("请输入元素个数:");
scanf("%d", &n);
//输入已排好序的数组
printf("请输入已排好序的数组:\n");
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
//输入要插入的数
printf("请输入要插入的数:");
scanf("%d", &k);
//在已排好序的数组中找到要插入的位置
for (i = 0; i < n; i++)
{
if (k < arr[i])
{
break;
}
}
//将要插入的数插入到数组中
for (j = n - 1; j >= i; j--)
{
arr[j + 1] = arr[j];
}
arr[i] = k;
n++;
//输出新数组
printf("新数组为:\n");
for (i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
代码分析:
1.在寻找插入位置的代码段中,通过if语句比较和break跳出循环,去找到要插入的位置i。
2.要将一个数插入到一个数组中,那么数组元素的总数就要+1,故for循环中采用j=n-1,下面语句采用arr[j + 1] = arr[j];,转不过弯的小伙伴可以拿出草稿本举个例子或者调试程序试试,可能会对这个插入的方法有深刻的认识。
运行结果: