问答题 输入若干有序数放在数组中。然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。请对插在最前、插在最后、插在中间三种情况运行程序,以便验证程序是否正确。
【正确答案】若把插入操作放在函数insert中,待插入的数据放在形参x中,指针a指向主函数中的数组,指针n指向存放数组中元素个数的变量,因为插入后,数组中的数据会增加。函数的首部如下: void insert(int*a, int x, int*n) 函数insert中插入步骤如下: (1)确定插入的位置。用变量j来放置该位置在数组中的下标,以下while循环将完成此任务: j=0; while(j<*n&&a[j]<x)j++; (2)把下标为j的元素后原有的数据移走,但不能改变原来的顺序: for(i=*n-1; i>=j; i--)a[i+1]=a[i]; (3)把x放入a[j]中; a[j]=x; (4)使存放数据个数的变量中的数增1: *n=*n+1; 插入过程到此结束。
【答案解析】