在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---Insert. 结果不正确。
voidInsert(inta[],intn){intx,i,j,ins_at=0;if(x>a[n-2])a[n-1]=x;elsefor(i=0;i<=n-1;i++...
void Insert(int a[],int n)
{
int x,i,j,ins_at=0;
if(x>a[n-2])
a[n-1]=x;
else
for(i=0;i<=n-1;i++)
if(x<a[i])
ins_at=i;
for(j=n-1;j>ins_at;j--)
a[j]=a[j-1];
a[ins_at]=x;
for(i=0;i<n;i++)
printf("%4d",a[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,11);
printf("\n");
} 展开
{
int x,i,j,ins_at=0;
if(x>a[n-2])
a[n-1]=x;
else
for(i=0;i<=n-1;i++)
if(x<a[i])
ins_at=i;
for(j=n-1;j>ins_at;j--)
a[j]=a[j-1];
a[ins_at]=x;
for(i=0;i<n;i++)
printf("%4d",a[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,11);
printf("\n");
} 展开
2个回答
展开全部
你的程序存在两个问题:1. 插入值没有传到fun函数;2. 找到插入点后没有终止循环,停止继续查找插入点。我已经将程序修改如下,在Turbo C 2.0调试通过,你仔细研究一下,希望对你有帮助。
#include <stdio.h>
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<a[i]){
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<n;i++) printf("%4d",a[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");
}
#include <stdio.h>
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<a[i]){
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<n;i++) printf("%4d",a[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");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询