在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---Insert. 结果不正确。

2024-11-23 11:58:25
推荐回答(2个)
回答1:

你的程序存在两个问题:1. 插入值没有传到fun函数;2. 找到插入点后没有终止循环,停止继续查找插入点。我已经将程序修改如下,在Turbo C 2.0调试通过,你仔细研究一下,希望对你有帮助。
#include

void Insert(int a[],int x,int n)
{
int i,j,ins_at=0;

if(x>a[n-2])
a[n-1]=x;
else
for(i=0;i<=n-1;i++)
if(x ins_at=i;
break;
}

for(j=n-1;j>ins_at;j--) a[j]=a[j-1];
a[ins_at]=x;

for(i=0;i printf("\n");
}

void main()
{
int a[11]={1,2,3,4,5,6,7,8,9,11},x;

printf("Insert a number x:");
scanf("%d",&x);
Insert(a,x,11);
printf("\n");

}

回答2:

x 是在main函数中定义的,不能直接在insert函数中用,建议增加一个参数,将x传递过去。