在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---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");

}
展开
 我来答
gcizsj
2011-09-17 · TA获得超过156个赞
知道小有建树答主
回答量:133
采纳率:0%
帮助的人:156万
展开全部
你的程序存在两个问题: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");

}
h0292058
2011-09-17 · 超过23用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:41.1万
展开全部
x 是在main函数中定义的,不能直接在insert函数中用,建议增加一个参数,将x传递过去。
追问
我将main函数中的x 改成y 可结果还是一样 可能还有其他问题 我的算法有没问题啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式